{"version":3,"sources":["webpack:///./js/components/init-accordion.js"],"names":["ACTIVE","initialiseAccordion","accordion","flipper","Flipper","element","items","Array","from","querySelectorAll","toggle","querySelector","open","item","recordBeforeUpdate","classList","add","update","close","remove","addEventListener","event","preventDefault","isAnyOpen","some","contains","forEach","index","header","content","addFlipped","flipId","addInverted","firstElementChild","parent","i","whenDomReady","then","document"],"mappings":"oIAGMA,EAAS,YAef,SAASC,EAAoBC,GAC3B,IAAMC,EAAU,IAAIC,IAAQ,CAC1BC,QAASH,IAGLI,EAAQC,MAAMC,KAAKN,EAAUO,iBAAiB,0BAC9CC,EAASR,EAAUS,cAAc,+BAkFvC,SAASC,EAAKC,GACZV,EAAQW,qBACRD,EAAKE,UAAUC,IAAIhB,GACnBG,EAAQc,SAOV,SAASC,EAAML,GACbV,EAAQW,qBACRD,EAAKE,UAAUI,OAAOnB,GACtBG,EAAQc,SA7FNP,GACFA,EAAOU,iBAAiB,SAAS,SAAAC,GAC/BA,EAAMC,iBAEN,IAAMC,EAAYjB,EAAMkB,MAAK,SAAAX,GAAI,OAAIA,EAAKE,UAAUU,SAASzB,MAEzDuB,EACFb,EAAOK,UAAUI,OAAOnB,GAExBU,EAAOK,UAAUC,IAAIhB,GAGvBM,EAAMoB,SAAQ,SAAAb,GACRU,GAAaV,EAAKE,UAAUU,SAASzB,GACvCkB,EAAML,GACIU,GAAcV,EAAKE,UAAUU,SAASzB,IAChDY,EAAKC,SAMbP,EAAMoB,SAAQ,SAACb,EAAMc,GACnB,IAAMC,EAASf,EAAKF,cAAc,2BAC5BkB,EAAUhB,EAAKF,cAAc,4BAE9BiB,GAAWC,IAIhB1B,EAAQ2B,WAAW,CACjBzB,QAASQ,EACTkB,OAAQ,kBAAF,OAAoBJ,KAG5BxB,EAAQ6B,YAAY,CAClB3B,QAASQ,EAAKoB,kBACdC,OAAQrB,IAGVV,EAAQ2B,WAAW,CACjBzB,QAASuB,EACTG,OAAQ,yBAAF,OAA2BJ,KAGnCxB,EAAQ2B,WAAW,CACjBzB,QAASwB,EACTE,OAAQ,0BAAF,OAA4BJ,KAGpCxB,EAAQ6B,YAAY,CAClB3B,QAASwB,EAAQI,kBACjBC,OAAQL,IAGVD,EAAOR,iBAAiB,SAAS,SAAAC,GAC/BA,EAAMC,iBAEFT,EAAKE,UAAUU,SAASzB,GAC1BkB,EAAML,GAEND,EAAKC,GAGWP,EAAMkB,MAAK,SAAAW,GAAC,OAAIA,EAAEpB,UAAUU,SAASzB,MAGjDU,GACFA,EAAOK,UAAUC,IAAIhB,GAEdU,GACTA,EAAOK,UAAUI,OAAOnB,UA0BhCoC,cAAeC,MAnHf,WACqB9B,MAAMC,KAAK8B,SAAS7B,iBAAiB,qBAE7CiB,QAAQzB","file":"accordion-dde4b5f4cf4a430b1ade.js","sourcesContent":["import { Flipper } from 'flip-toolkit';\r\nimport whenDomReady from 'when-dom-ready';\r\n\r\nconst ACTIVE = 'is-active';\r\n\r\n/**\r\n * Initialise all accordions\r\n */\r\nfunction initialise() {\r\n const accordions = Array.from(document.querySelectorAll('.js-ds-accordion'));\r\n\r\n accordions.forEach(initialiseAccordion);\r\n}\r\n\r\n/**\r\n * Initialise the accordion\r\n * @param {HTMLElement} accordion\r\n */\r\nfunction initialiseAccordion(accordion) {\r\n const flipper = new Flipper({\r\n element: accordion,\r\n });\r\n\r\n const items = Array.from(accordion.querySelectorAll('.js-ds-accordion-item'));\r\n const toggle = accordion.querySelector('.js-ds-accordion-toggle-all');\r\n\r\n if (toggle) {\r\n toggle.addEventListener('click', event => {\r\n event.preventDefault();\r\n\r\n const isAnyOpen = items.some(item => item.classList.contains(ACTIVE));\r\n\r\n if (isAnyOpen) {\r\n toggle.classList.remove(ACTIVE);\r\n } else {\r\n toggle.classList.add(ACTIVE);\r\n }\r\n\r\n items.forEach(item => {\r\n if (isAnyOpen && item.classList.contains(ACTIVE)) {\r\n close(item);\r\n } else if (!isAnyOpen && !item.classList.contains(ACTIVE)) {\r\n open(item);\r\n }\r\n });\r\n });\r\n }\r\n\r\n items.forEach((item, index) => {\r\n const header = item.querySelector('.js-ds-accordion-header');\r\n const content = item.querySelector('.js-ds-accordion-content');\r\n\r\n if (!header || !content) {\r\n return;\r\n }\r\n\r\n flipper.addFlipped({\r\n element: item,\r\n flipId: `accordion-item-${index}`,\r\n });\r\n\r\n flipper.addInverted({\r\n element: item.firstElementChild,\r\n parent: item,\r\n });\r\n\r\n flipper.addFlipped({\r\n element: header,\r\n flipId: `accordion-item-header-${index}`,\r\n });\r\n\r\n flipper.addFlipped({\r\n element: content,\r\n flipId: `accordion-item-content-${index}`,\r\n });\r\n\r\n flipper.addInverted({\r\n element: content.firstElementChild,\r\n parent: content,\r\n });\r\n\r\n header.addEventListener('click', event => {\r\n event.preventDefault();\r\n\r\n if (item.classList.contains(ACTIVE)) {\r\n close(item);\r\n } else {\r\n open(item);\r\n }\r\n\r\n const isAnyOpen = items.some(i => i.classList.contains(ACTIVE));\r\n\r\n if (isAnyOpen) {\r\n if (toggle) {\r\n toggle.classList.add(ACTIVE);\r\n }\r\n } else if (toggle) {\r\n toggle.classList.remove(ACTIVE);\r\n }\r\n });\r\n });\r\n\r\n /**\r\n * Open specified item.\r\n * @param {HTMLElement} item\r\n */\r\n function open(item) {\r\n flipper.recordBeforeUpdate();\r\n item.classList.add(ACTIVE);\r\n flipper.update();\r\n }\r\n\r\n /**\r\n * Close specified item.\r\n * @param {HTMLElement} item\r\n */\r\n function close(item) {\r\n flipper.recordBeforeUpdate();\r\n item.classList.remove(ACTIVE);\r\n flipper.update();\r\n }\r\n}\r\n\r\nwhenDomReady().then(initialise);\r\n"],"sourceRoot":""}