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