{"version":3,"file":"js/page__shared_toggle-6396d11a57425e1337ea.chunk.js","mappings":"ieAmEA,MAnEA,MACE,WAAAA,GACEC,KAAKC,WAAa,EAClBD,KAAKE,eAAiB,GACtBF,KAAKG,WAAa,GAClBH,KAAKI,WAAa,EACpB,CAEA,IAAAC,GACEL,KAAKM,UACLN,KAAKO,OACLP,KAAKQ,iBACP,CAEA,OAAAF,GACEN,KAAKE,eAAiBO,SAASC,iBAAiB,sBAChDV,KAAKW,YACP,CAEA,IAAAJ,GACE,MAAMK,EAAaC,OAAOC,KAAKd,KAAKG,YACpCS,EAAWG,QAAUC,MAAMC,UAAUC,MAAMC,KAAKP,GAAYQ,SAAQC,IAClE,MAAMC,EAAUtB,KAAKG,WAAWkB,GAC1BE,EAASd,SAASe,cAAcH,GAChCI,EAAaF,EAAOG,aAAa,yBACjCC,EAAa,GAEnBL,EAAQF,SAAQQ,IACdA,EAAOC,IAAMD,EAAOE,aAAa,KAAM,eAAe9B,KAAKC,cAC3D2B,EAAOE,aAAa,gBAAiBP,EAAOM,IAC5CD,EAAOE,aAAa,gBAAiBL,GACrCE,EAAWI,KAAKH,EAAOC,GAAG,IAG5BN,EAAOO,aAAa,eAAgBL,GACpCF,EAAOG,aAAa,oBAAsBH,EAAOO,aAAa,kBAAmBH,EAAWK,KAAK,MAEjGhC,KAAKI,WAAWmB,EAAOM,IAAMN,CAAM,GAEvC,CAEA,eAAAf,GACEC,SAASwB,iBAAiB,SAAUC,IAClC,MAAMC,EAAgBD,EAAEX,OAAOa,QAAQ,sBACvCpC,KAAKqC,qBAAqBF,EAAc,GAE5C,CAEA,UAAAxB,GACEX,KAAKG,WAAaa,MAAMC,UAAUC,MAAMC,KAAKnB,KAAKE,gBAAgBoC,QAAO,SAAUC,EAAKX,GACtF,MAAMY,EAAW,IAAMZ,EAAOa,aAAa,oBAG3C,OAFAF,EAAIC,GAAYD,EAAIC,IAAa,GACjCD,EAAIC,GAAUT,KAAKH,GACZW,CACT,GAAGvC,KAAKG,WACV,CAEA,oBAAAkC,CAAqBT,GACnB,MAAML,EAASK,GAAU5B,KAAKI,WAAWwB,EAAOa,aAAa,kBAC7D,IAAIlB,EAAU,OACd,MAAMD,EAAUtB,KAAKG,WAAW,IAAIoB,EAAOM,MACrCJ,EAAoD,UAAvCF,EAAOkB,aAAa,eACvClB,EAAOO,aAAa,cAAeL,GACnCH,EAAQF,SAAQQ,GAAUA,EAAOE,aAAa,iBAAkBL,IAClE,E","sources":["webpack://nodalview/./app/javascript/src/shared/toggle/index.js"],"sourcesContent":["class Toggle {\n constructor() {\n this.internalId = 0;\n this.toggleElements = [];\n this.togglesMap = [];\n this.targetMaps = [];\n }\n\n boot() {\n this.prepare();\n this.hook();\n this.listenToChanges();\n }\n\n prepare() {\n this.toggleElements = document.querySelectorAll('[data-a11y-toggle]');\n this._targetIds();\n }\n\n hook() {\n const targetKeys = Object.keys(this.togglesMap)\n targetKeys.length && Array.prototype.slice.call(targetKeys).forEach(targetId => {\n const toggles = this.togglesMap[targetId];\n const target = document.querySelector(targetId);\n const isExpanded = target.hasAttribute('data-a11y-toggle-open');\n const labelledby = [];\n\n toggles.forEach(toggle => {\n toggle.id || toggle.setAttribute('id', `a11y-toggle-${this.internalId++}`);\n toggle.setAttribute('aria-controls', target.id);\n toggle.setAttribute('aria-expanded', isExpanded);\n labelledby.push(toggle.id);\n })\n\n target.setAttribute('aria-hidden', !isExpanded);\n target.hasAttribute('aria-labelledby') || target.setAttribute('aria-labelledby', labelledby.join(' '));\n\n this.targetMaps[target.id] = target;\n })\n }\n\n listenToChanges() {\n document.addEventListener('click', (e) => {\n const toggleElement = e.target.closest('[data-a11y-toggle]')\n this._handleToggleElement(toggleElement)\n })\n }\n\n _targetIds() {\n this.togglesMap = Array.prototype.slice.call(this.toggleElements).reduce(function (acc, toggle) {\n const selector = '#' + toggle.getAttribute('data-a11y-toggle');\n acc[selector] = acc[selector] || [];\n acc[selector].push(toggle);\n return acc;\n }, this.togglesMap);\n }\n\n _handleToggleElement(toggle) {\n const target = toggle && this.targetMaps[toggle.getAttribute('aria-controls')]\n if(!target) { return }\n const toggles = this.togglesMap[`#${target.id}`];\n const isExpanded = target.getAttribute('aria-hidden') === 'false';\n target.setAttribute('aria-hidden', isExpanded);\n toggles.forEach(toggle => toggle.setAttribute('aria-expanded', !isExpanded))\n }\n}\n\nexport default Toggle"],"names":["constructor","this","internalId","toggleElements","togglesMap","targetMaps","boot","prepare","hook","listenToChanges","document","querySelectorAll","_targetIds","targetKeys","Object","keys","length","Array","prototype","slice","call","forEach","targetId","toggles","target","querySelector","isExpanded","hasAttribute","labelledby","toggle","id","setAttribute","push","join","addEventListener","e","toggleElement","closest","_handleToggleElement","reduce","acc","selector","getAttribute"],"sourceRoot":""}