{"version":3,"sources":["../../node_modules/blingblingjs/src/index.js","menu.js"],"names":["sugar","on","names","fn","split","forEach","name","addEventListener","off","removeEventListener","attr","val","undefined","getAttribute","removeAttribute","setAttribute","$","query","$context","document","$nodes","NodeList","Array","isArray","HTMLElement","SVGElement","querySelectorAll","Object","length","assign","from","map","$el","attrs","entries","key","header","html","body","collapse","toggle","links","submenuLinks","lastSubmenuLinks","cssKeys","active","overflow","open","classList","add","close","remove","handleClickOnMenuToggle","e","preventDefault","closeOpenedSubmenu","openedSubmenu","openedMenuLink","handleFocus","link","currentTarget","submenu","nextElementSibling","handleTouch","target","isOpened"],"mappings":"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","file":"menu.js","sourceRoot":"../../src/js","sourcesContent":["const sugar = {\n on: function(names, fn) {\n names\n .split(' ')\n .forEach(name =>\n this.addEventListener(name, fn))\n return this\n },\n off: function(names, fn) {\n names\n .split(' ')\n .forEach(name =>\n this.removeEventListener(name, fn))\n return this\n },\n attr: function(attr, val) {\n if (val === undefined) return this.getAttribute(attr)\n\n val == null\n ? this.removeAttribute(attr)\n : this.setAttribute(attr, val || '')\n \n return this\n }\n}\n\nexport default function $(query, $context = document) {\n let $nodes = query instanceof NodeList || Array.isArray(query)\n ? query\n : query instanceof HTMLElement || query instanceof SVGElement\n ? [query]\n : $context.querySelectorAll(query)\n\n if (!$nodes.length) $nodes = []\n\n return Object.assign(\n Array.from($nodes).map($el => Object.assign($el, sugar)), \n {\n on: function(names, fn) {\n this.forEach($el => $el.on(names, fn))\n return this\n },\n off: function(names, fn) {\n this.forEach($el => $el.off(names, fn))\n return this\n },\n attr: function(attrs, val) {\n if (typeof attrs === 'string' && val === undefined)\n return this[0].attr(attrs)\n\n else if (typeof attrs === 'object') \n this.forEach($el =>\n Object.entries(attrs)\n .forEach(([key, val]) =>\n $el.attr(key, val)))\n\n else if (typeof attrs == 'string' && (val || val == null || val == ''))\n this.forEach($el => $el.attr(attrs, val))\n\n return this\n }\n }\n )\n}\n","import $ from 'blingblingjs';\n\nconst [header] = $('.main-header');\nconst [html] = $('html');\nconst [body] = $('body');\nconst [collapse] = $('.menu-collapse');\nconst [toggle] = $('.menu-toggle');\nconst links = $('.menu-link');\nconst submenuLinks = $('.submenu-link');\nconst lastSubmenuLinks = $('.submenu-item:last-child a');\n\nconst cssKeys = {\n active: 'is-active',\n overflow: 'overflow',\n open: 'is-open',\n};\n\n/**\n * Opens main menu\n */\nconst open = () => {\n toggle.classList.add(cssKeys.active);\n toggle.setAttribute('aria-expanded', true);\n collapse.classList.add(cssKeys.active);\n html.classList.add(cssKeys.overflow);\n body.classList.add(cssKeys.overflow);\n header.classList.add(cssKeys.open);\n};\n\n/**\n * Closes main menu\n */\nconst close = () => {\n toggle.classList.remove(cssKeys.active);\n toggle.setAttribute('aria-expanded', false);\n collapse.classList.remove(cssKeys.active);\n html.classList.remove(cssKeys.overflow);\n body.classList.remove(cssKeys.overflow);\n header.classList.remove(cssKeys.open);\n};\n\n/**\n * Handles click on menu icon\n */\nconst handleClickOnMenuToggle = (e) => {\n // stop default acton\n e.preventDefault();\n // is menu open?\n const isOpened = toggle.getAttribute('aria-expanded') === 'true';\n // menu is closed, open it\n if (!isOpened) {\n open();\n return;\n }\n // menu is opened, close it\n close();\n};\n\n/**\n * Closes opened submenu\n */\nconst closeOpenedSubmenu = () => {\n // select opened submenu\n const [openedSubmenu] = $(`.submenu.${cssKeys.active}`);\n // remove active class\n if (openedSubmenu) openedSubmenu.classList.remove(cssKeys.active);\n // close opened menu link\n const [openedMenuLink] = $('.menu-link[aria-expanded=\"true\"]');\n if (openedMenuLink) openedMenuLink.setAttribute('aria-expanded', false);\n};\n\n/**\n * Handles focus event\n * @param {Event} e event focus\n */\nconst handleFocus = (e) => {\n // get a link\n const link = e.currentTarget;\n // has the link submenu?\n const submenu = link.nextElementSibling;\n\n if (submenu) {\n // set link as opened\n link.setAttribute('aria-expanded', true);\n // open submenu\n submenu.classList.add('is-active');\n }\n};\n\n/**\n * Handles touch on menu link\n * @param {Event} e event focus\n */\nconst handleTouch = (e) => {\n // close opepened submenu\n // closeOpenedSubmenu();\n // has the link submenu?\n const submenu = e.target.nextElementSibling;\n\n if (submenu) {\n // prevent reload\n e.preventDefault();\n // toogle submenu active state\n submenu.classList.toggle('is-active');\n // toogle link opened/closed state\n const isOpened = e.target.getAttribute('aria-expanded') === 'true';\n e.target.setAttribute('aria-expanded', !isOpened);\n }\n};\n\n// Event handlers\nlinks.on('focus', handleFocus);\nlinks.on('touchstart', handleTouch);\n\nsubmenuLinks.on('touchstart', handleTouch);\nlastSubmenuLinks.on('blur', closeOpenedSubmenu);\n\ntoggle.on('click', handleClickOnMenuToggle);\n\ndocument.addEventListener('click', closeOpenedSubmenu);\n"]}