{"version":3,"file":"115.da39b9b03e3257c2313b.js","mappings":"0KAEO,MAAMA,EACXC,YAAaC,EAAUC,EAAWC,GAChCC,KAAKH,UAAW,QAAO,CAAC,EAAGA,GAE3BG,KAAKF,WAAY,QAAO,CACtBG,MAAO,mBACPC,OAAQ,4BACRC,OAAQ,4BACRC,OAAQ,4BACRC,iBAAkB,gCAClBC,OAAQ,2BACRC,KAAM,yBACNC,KAAM,SACLV,GAEHE,KAAKD,SAAU,QAAO,CACpBE,MAAO,kBACPK,OAAQ,0BACRG,YAAa,yBACbC,WAAY,2BACZC,WAAY,2BACZC,WAAY,4BACXb,EACL,CAEAc,OACEb,KAAKc,WACP,CAEAA,aAC2B,IAAAC,IAAGf,KAAKF,UAAUO,kBAC1BW,SAASC,KACxB,QAASA,EAAiB,SAAUC,IAClCA,EAAMC,kBAEN,IAAAJ,IAAGf,KAAKF,UAAUQ,QAAQU,SAASI,IAC7BA,IAAeH,GAAoBjB,KAAKqB,cAAcJ,EAAiBG,IACzEA,EAAWE,UAAUC,OAAOvB,KAAKD,QAAQO,OAC3C,IAGFW,EAAgBK,UAAUE,OAAOxB,KAAKD,QAAQO,QAE9CN,KAAKyB,SAASR,GAETA,EAAgBK,UAAUI,SAAS1B,KAAKD,QAAQO,SACnDW,EAAgBU,MAClB,GACD,KAGH,SAAS,IAAAC,GAAE,QAAS,SAAUV,OACtB,QAAgBA,EAAMW,OAAQ7B,KAAKD,QAAQE,SAAU,QAAgBiB,EAAMW,OAAQ7B,KAAKD,QAAQU,eAAiBqB,OAAOC,WAAa,OACzI,IAAAhB,IAAGf,KAAKF,UAAUQ,QAAQU,SAASI,IACjCA,EAAWE,UAAUC,OAAOvB,KAAKD,QAAQO,OAAM,KAGjD,IAAAS,IAAGf,KAAKF,UAAUG,OAAOe,SAASf,IAChCA,EAAMqB,UAAUC,OAAOvB,KAAKD,QAAQW,WAAYV,KAAKD,QAAQY,WAAYX,KAAKD,QAAQa,WAAU,IAEpG,KAGF,IAAAG,IAAGf,KAAKF,UAAUS,MAAMS,SAASgB,KAC/B,QAASA,EAAY,SAAUd,IAC7B,MAAMe,EAAcD,EAAWE,QAAQlC,KAAKF,UAAUI,OAAS,IAAMF,KAAKF,UAAUK,OAAS,IAAMH,KAAKF,UAAUM,QAC5GgB,GAAa,IAAAQ,GAAE5B,KAAKF,UAAUQ,OAAQ2B,EAAYE,eAEpDf,GACFA,EAAWgB,OACb,GACD,GAEL,CAEAf,cAAegB,EAASC,GACtB,GAAwB,OAApBD,EAAQE,QACV,IAAK,MAAMC,KAASH,EAAQI,SAC1B,GAAID,IAAUF,EACZ,OAAO,EAKb,OAAOD,EAAQF,eAAiBnC,KAAKqB,cAAcgB,EAAQF,cAAeG,EAC5E,CAEAb,SAAUiB,GACR,IAAIC,EAAQ3C,KAAK4C,aAAaF,GAC9B,MAAMzC,EAAQyC,EAAKR,QAAQlC,KAAKF,UAAUG,OAErCyC,EAAKpB,UAAUI,SAAS1B,KAAKD,QAAQO,SACxCqC,IAGY,IAAVA,GACF1C,EAAMqB,UAAUC,OAAOvB,KAAKD,QAAQW,WAAYV,KAAKD,QAAQa,YAC7DX,EAAMqB,UAAUuB,IAAI7C,KAAKD,QAAQY,aACd,IAAVgC,GACT1C,EAAMqB,UAAUC,OAAOvB,KAAKD,QAAQW,WAAYV,KAAKD,QAAQY,YAC7DV,EAAMqB,UAAUuB,IAAI7C,KAAKD,QAAQa,cAEjCX,EAAMqB,UAAUC,OAAOvB,KAAKD,QAAQY,WAAYX,KAAKD,QAAQa,YAC7DX,EAAMqB,UAAUuB,IAAI7C,KAAKD,QAAQW,YAErC,CAEAkC,aAAcF,GACZ,OAAIA,EAAKR,QAAQlC,KAAKF,UAAUK,QACvB,EACEuC,EAAKR,QAAQlC,KAAKF,UAAUI,QAC9B,EAGF,CACT,EAGF,S","sources":["webpack://drausbuettel/./JavaScript/Components/MainNavigation.js"],"sourcesContent":["import { extend, $$, addEvent, $, hasParentsClass } from './HelperFunctions'\n\nexport class MainNavigation {\n constructor (settings, selectors, classes) {\n this.settings = extend({}, settings)\n\n this.selectors = extend({\n block: '.main-navigation',\n level1: '.main-navigation__level-1',\n level2: '.main-navigation__level-2',\n level3: '.main-navigation__level-3',\n linksWithSubtree: '.main-navigation--has-subtree',\n active: '.main-navigation--active',\n back: '.main-navigation__back',\n page: '.page'\n }, selectors)\n\n this.classes = extend({\n block: 'main-navigation',\n active: 'main-navigation--active',\n buttonClose: 'main-navigation__close',\n showLevel1: 'main-navigation--level-1',\n showLevel2: 'main-navigation--level-2',\n showLevel3: 'main-navigation--level-3'\n }, classes)\n }\n\n init () {\n this.addEvents()\n }\n\n addEvents () {\n const linksWithSubtree = $$(this.selectors.linksWithSubtree)\n linksWithSubtree.forEach((linkWithSubtree) => {\n addEvent(linkWithSubtree, 'click', (event) => {\n event.preventDefault()\n\n $$(this.selectors.active).forEach((activeLink) => {\n if (activeLink !== linkWithSubtree && !this.ifParentsLink(linkWithSubtree, activeLink)) {\n activeLink.classList.remove(this.classes.active)\n }\n })\n\n linkWithSubtree.classList.toggle(this.classes.active)\n\n this.setLevel(linkWithSubtree)\n\n if (!linkWithSubtree.classList.contains(this.classes.active)) {\n linkWithSubtree.blur()\n }\n })\n })\n\n addEvent($('body'), 'click', (event) => {\n if ((!hasParentsClass(event.target, this.classes.block) || hasParentsClass(event.target, this.classes.buttonClose)) && window.innerWidth > 767) {\n $$(this.selectors.active).forEach((activeLink) => {\n activeLink.classList.remove(this.classes.active)\n })\n\n $$(this.selectors.block).forEach((block) => {\n block.classList.remove(this.classes.showLevel1, this.classes.showLevel2, this.classes.showLevel3)\n })\n }\n })\n\n $$(this.selectors.back).forEach((backButton) => {\n addEvent(backButton, 'click', (event) => {\n const parentLevel = backButton.closest(this.selectors.level1 + ',' + this.selectors.level2 + ',' + this.selectors.level3)\n const activeLink = $(this.selectors.active, parentLevel.parentElement)\n\n if (activeLink) {\n activeLink.click()\n }\n })\n })\n }\n\n ifParentsLink (element, checkElement) {\n if (element.tagName === 'LI') {\n for (const child of element.children) {\n if (child === checkElement) {\n return true\n }\n }\n }\n\n return element.parentElement && this.ifParentsLink(element.parentElement, checkElement)\n }\n\n setLevel (link) {\n let level = this.getLinkLevel(link)\n const block = link.closest(this.selectors.block)\n\n if (!link.classList.contains(this.classes.active)) {\n level--\n }\n\n if (level === 2) {\n block.classList.remove(this.classes.showLevel1, this.classes.showLevel3)\n block.classList.add(this.classes.showLevel2)\n } else if (level === 3) {\n block.classList.remove(this.classes.showLevel1, this.classes.showLevel2)\n block.classList.add(this.classes.showLevel3)\n } else {\n block.classList.remove(this.classes.showLevel2, this.classes.showLevel3)\n block.classList.add(this.classes.showLevel1)\n }\n }\n\n getLinkLevel (link) {\n if (link.closest(this.selectors.level2)) {\n return 3\n } else if (link.closest(this.selectors.level1)) {\n return 2\n }\n\n return 1\n }\n}\n\nexport default MainNavigation\n"],"names":["MainNavigation","constructor","settings","selectors","classes","this","block","level1","level2","level3","linksWithSubtree","active","back","page","buttonClose","showLevel1","showLevel2","showLevel3","init","addEvents","$$","forEach","linkWithSubtree","event","preventDefault","activeLink","ifParentsLink","classList","remove","toggle","setLevel","contains","blur","$","target","window","innerWidth","backButton","parentLevel","closest","parentElement","click","element","checkElement","tagName","child","children","link","level","getLinkLevel","add"],"sourceRoot":""}