{"version":3,"file":"assets/js/843.d2541a6e40766544a996.js","mappings":"sIAGA,MAAMA,EAAW,CACfC,UAAWC,SAASC,KAAKC,iBAAiB,iBAC1CC,iBAAkBH,SAASC,KAAKC,iBAAiB,0BAYnD,SAASE,EAAWC,GAClB,MAAMN,EAAYO,KAAKC,QAAQ,iBAE/B,GAAkB,OAAdR,EAAoB,CACtB,MAAMS,EAAQC,SAASH,KAAKI,QAAQF,MAAO,KAG1B,KAAdH,EAAEM,SAAkBH,EAAQ,GACd,KAAdH,EAAEM,SAAkBH,EAAQC,SAASV,EAAUW,QAAQE,MAAQ,EAAG,OAEnEP,EAAEQ,iBACFd,EAAUG,iBAAiB,yBApBjC,SAAmBM,EAAOG,GAMxB,MALa,CACX,GAAIH,EAAQ,EACZ,GAAIA,EAAQ,GAGFG,EACd,CAa0DG,CAAUN,EAAOH,EAAEM,UAAUI,QAErF,CACF,CAaA,SAASC,EAAUC,GACjB,MAAMC,EACJlB,SAASC,KAAKkB,cAAe,sCAAqCF,OAClEjB,SAASC,KAAKkB,cAAe,6BAA4BF,OAE3D,GAAIC,EAAsB,CACxB,MAAME,EAAWF,EAAqBG,YACtCC,EAAAA,EAAAA,GAAKF,EAAU,CACbG,MAAM,EACNC,SAAU,KACVC,OAAQ,IAEVP,EAAqBQ,OACvB,CACF,CAEA,SAASC,IACP,MAAMC,EAAW5B,SAAS6B,eAAevB,KAAKwB,aAAa,kBACrDC,EAAO,SACPC,EAAS,YACTjC,EAAYO,KAAKC,QAAQ,iBACzB0B,EAAS3B,KAAKC,QAAQ,uBAhC9B,SAAqB2B,GACnB,MAAMC,EAAW,GACjB,IAAIC,EAAUF,EAAKb,WAAWgB,WAC9B,KAAOD,EAASA,EAAUA,EAAQE,YACP,IAArBF,EAAQG,UAAkBH,IAAYF,GACxCC,EAASK,KAAKJ,GAGlB,OAAOD,CACT,EAwByBM,CAAYR,GAEpBS,SAASC,IACtB,MAAMC,EAAiBD,EAAcxB,cAAc,cACnD,IAAKyB,EACH,OAGF,MAAMC,EAAgB7C,SAAS6B,eAAee,EAAed,aAAa,kBAC1Ee,EAAcd,IAASc,EAAcd,GACrCa,EAAeE,UAAUC,OAAOf,GAChCW,EAAcG,UAAUC,OAAOf,GAC/BY,EAAeI,aAAa,gBAAiB,QAAQ,IAGvD1C,KAAKwC,UAAUG,OAAOjB,GACtBC,EAAOa,UAAUG,OAAOjB,GACxBJ,EAASG,IAASH,EAASG,GAEgB,UAAvCzB,KAAKwB,aAAa,kBACpBxB,KAAK0C,aAAa,gBAAiB,QACnCjD,EAAU+C,UAAUI,IAAIlB,KAExB1B,KAAK0C,aAAa,gBAAiB,SACnCjD,EAAU+C,UAAUC,OAAOf,GAE/B,CAuBA,QArBA,WACE,GAAIlC,EAASC,UAAUoD,QAAUrD,EAASK,iBAAiBgD,OAAQ,CACjE,IAAK,IAAIC,EAAI,EAAGA,EAAItD,EAASK,iBAAiBgD,OAAQC,GAAK,EACzDtD,EAASK,iBAAiBiD,GAAGC,gBAAgB,YAC7CvD,EAASK,iBAAiBiD,GAAGC,gBAAgB,SAC7CvD,EAASK,iBAAiBiD,GAAGE,iBAAiB,QAAS3B,GACvD7B,EAASK,iBAAiBiD,GAAGE,iBAAiB,UAAWlD,GAI3D,MAAMmD,EAAkB,IAAIC,gBAAgBC,OAAOC,SAASC,QACtDC,EAAQH,OAAOC,SAASG,KAAKC,UAAU,GACvCC,EAAaR,EAAgBS,IAAI,UACnCD,EACF/C,EAAU+C,EAAWE,QAAQ,OAAQ,IAAIC,eAChCN,GACT5C,EAAU4C,EAEd,CACF,C","sources":["webpack://mps/./src/ui/templates/02-components/accordion/mando-ui.accordion.js"],"sourcesContent":["import 'url-search-params-polyfill';\r\nimport jump from 'jump.js';\r\n\r\nconst elements = {\r\n  accordion: document.body.querySelectorAll('.js-accordion'),\r\n  accordionTrigger: document.body.querySelectorAll('.js-accordion-trigger'),\r\n};\r\n\r\nfunction calcIndex(index, keyCode) {\r\n  const calc = {\r\n    38: index - 1,\r\n    40: index + 1,\r\n  };\r\n\r\n  return calc[keyCode];\r\n}\r\n\r\nfunction keyHandler(e) {\r\n  const accordion = this.closest('.js-accordion');\r\n\r\n  if (accordion !== null) {\r\n    const index = parseInt(this.dataset.index, 10);\r\n\r\n    if (\r\n      (e.keyCode === 38 && index > 0) ||\r\n      (e.keyCode === 40 && index < parseInt(accordion.dataset.count - 1, 10))\r\n    ) {\r\n      e.preventDefault();\r\n      accordion.querySelectorAll('.js-accordion-trigger')[calcIndex(index, e.keyCode)].focus();\r\n    }\r\n  }\r\n}\r\n\r\nfunction getSiblings(elem) {\r\n  const siblings = [];\r\n  let sibling = elem.parentNode.firstChild;\r\n  for (; sibling; sibling = sibling.nextSibling) {\r\n    if (sibling.nodeType === 1 && sibling !== elem) {\r\n      siblings.push(sibling);\r\n    }\r\n  }\r\n  return siblings;\r\n}\r\n\r\nfunction matchAttr(trimTerm) {\r\n  const firstMatchingElement =\r\n    document.body.querySelector(`.js-accordion-trigger[data-search='${trimTerm}'`) ||\r\n    document.body.querySelector(`.js-accordion-trigger[id='${trimTerm}']`);\r\n\r\n  if (firstMatchingElement) {\r\n    const elParent = firstMatchingElement.parentNode;\r\n    jump(elParent, {\r\n      a11y: true,\r\n      duration: 1200,\r\n      offset: 0,\r\n    });\r\n    firstMatchingElement.click();\r\n  }\r\n}\r\n\r\nfunction toggleVisibility() {\r\n  const panelDiv = document.getElementById(this.getAttribute('aria-controls'));\r\n  const prop = 'hidden';\r\n  const active = 'is-active';\r\n  const accordion = this.closest('.js-accordion');\r\n  const parent = this.closest('.js-accordion-item');\r\n  const parentSiblings = getSiblings(parent);\r\n\r\n  parentSiblings.forEach((parentSibling) => {\r\n    const siblingTrigger = parentSibling.querySelector('.is-active');\r\n    if (!siblingTrigger) {\r\n      return;\r\n    }\r\n\r\n    const triggerTarget = document.getElementById(siblingTrigger.getAttribute('aria-controls'));\r\n    triggerTarget[prop] = !triggerTarget[prop];\r\n    siblingTrigger.classList.remove(active);\r\n    parentSibling.classList.remove(active);\r\n    siblingTrigger.setAttribute('aria-expanded', 'false');\r\n  });\r\n\r\n  this.classList.toggle(active);\r\n  parent.classList.toggle(active);\r\n  panelDiv[prop] = !panelDiv[prop];\r\n\r\n  if (this.getAttribute('aria-expanded') === 'false') {\r\n    this.setAttribute('aria-expanded', 'true');\r\n    accordion.classList.add(active);\r\n  } else {\r\n    this.setAttribute('aria-expanded', 'false');\r\n    accordion.classList.remove(active);\r\n  }\r\n}\r\n\r\nfunction init() {\r\n  if (elements.accordion.length && elements.accordionTrigger.length) {\r\n    for (let i = 0; i < elements.accordionTrigger.length; i += 1) {\r\n      elements.accordionTrigger[i].removeAttribute('disabled');\r\n      elements.accordionTrigger[i].removeAttribute('title');\r\n      elements.accordionTrigger[i].addEventListener('click', toggleVisibility);\r\n      elements.accordionTrigger[i].addEventListener('keydown', keyHandler);\r\n    }\r\n\r\n    // Jump to and open accordion if #id or ?search= in URL\r\n    const urlSearchParams = new URLSearchParams(window.location.search);\r\n    const urlId = window.location.hash.substring(1);\r\n    const searchTerm = urlSearchParams.get('search');\r\n    if (searchTerm) {\r\n      matchAttr(searchTerm.replace(/\\s+/g, '').toLowerCase());\r\n    } else if (urlId) {\r\n      matchAttr(urlId);\r\n    }\r\n  }\r\n}\r\n\r\nexport default init;\r\n"],"names":["elements","accordion","document","body","querySelectorAll","accordionTrigger","keyHandler","e","this","closest","index","parseInt","dataset","keyCode","count","preventDefault","calcIndex","focus","matchAttr","trimTerm","firstMatchingElement","querySelector","elParent","parentNode","jump","a11y","duration","offset","click","toggleVisibility","panelDiv","getElementById","getAttribute","prop","active","parent","elem","siblings","sibling","firstChild","nextSibling","nodeType","push","getSiblings","forEach","parentSibling","siblingTrigger","triggerTarget","classList","remove","setAttribute","toggle","add","length","i","removeAttribute","addEventListener","urlSearchParams","URLSearchParams","window","location","search","urlId","hash","substring","searchTerm","get","replace","toLowerCase"],"sourceRoot":""}