{"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":""}