{"version":3,"file":"js/mmenu.js","mappings":"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","sources":["webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/oncanvas/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/oncanvas/_configs.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/_modules/helpers.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/_modules/i18n.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/oncanvas/translations/nl.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/oncanvas/translations/fa.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/oncanvas/translations/de.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/oncanvas/translations/ru.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/_modules/dom.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/_modules/matchmedia.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/oncanvas/translations/translate.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/oncanvas/mmenu.oncanvas.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/offcanvas/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/offcanvas/_configs.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/_modules/eventlisteners.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/offcanvas/mmenu.offcanvas.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/screenreader/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/screenreader/_configs.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/screenreader/translations/fa.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/screenreader/translations/de.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/screenreader/translations/ru.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/screenreader/mmenu.screenreader.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/screenreader/translations/translate.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/screenreader/translations/nl.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/scrollbugfix/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/_modules/support.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/core/scrollbugfix/mmenu.scrollbugfix.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/autoheight/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/autoheight/mmenu.autoheight.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/backbutton/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/backbutton/mmenu.backbutton.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/columns/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/columns/mmenu.columns.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/counters/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/counters/mmenu.counters.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/dividers/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/dividers/mmenu.dividers.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/drag/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/_modules/dragevents/_support.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/_modules/dragevents/_defaults.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/_modules/dragevents/_settings.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/_modules/dragevents/_helpers.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/_modules/dragevents/index.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/drag/_drag.open.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/drag/mmenu.drag.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/dropdown/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/dropdown/_configs.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/dropdown/mmenu.dropdown.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/fixedelements/_configs.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/fixedelements/mmenu.fixedelements.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/iconbar/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/iconbar/mmenu.iconbar.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/iconpanels/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/iconpanels/mmenu.iconpanels.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/keyboardnavigation/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/keyboardnavigation/mmenu.keyboardnavigation.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/lazysubmenus/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/lazysubmenus/mmenu.lazysubmenus.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/navbars/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/navbars/_configs.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/navbars/mmenu.navbars.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/navbars/_navbar.breadcrumbs.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/navbars/_navbar.close.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/navbars/_navbar.prev.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/navbars/_navbar.searchfield.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/navbars/_navbar.title.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/navbars/_navbar.tabs.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/pagescroll/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/pagescroll/_configs.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/pagescroll/mmenu.pagescroll.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/searchfield/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/searchfield/_configs.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/searchfield/translations/fa.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/searchfield/translations/de.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/searchfield/translations/ru.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/searchfield/mmenu.searchfield.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/searchfield/translations/translate.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/searchfield/translations/nl.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/sectionindexer/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/sectionindexer/mmenu.sectionindexer.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/setselected/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/setselected/mmenu.setselected.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/sidebar/_options.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/sidebar/mmenu.sidebar.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/addons/toggles/mmenu.toggles.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/src/mmenu.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/wrappers/angular/mmenu.angular.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/wrappers/bootstrap/mmenu.bootstrap.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/wrappers/olark/mmenu.olark.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/wrappers/turbolinks/mmenu.turbolinks.js","webpack://clienti-baseline-webpack/./node_modules/mmenu-js/dist/wrappers/wordpress/mmenu.wordpress.js","webpack://clienti-baseline-webpack/./src/scripts/mmenu.js","webpack://clienti-baseline-webpack/./src/scripts/partials/mmenu.js"],"sourcesContent":["var options = {\n hooks: {},\n extensions: [],\n wrappers: [],\n navbar: {\n add: true,\n sticky: true,\n title: 'Menu',\n titleLink: 'parent'\n },\n onClick: {\n close: null,\n preventDefault: null,\n setSelected: true\n },\n slidingSubmenus: true\n};\nexport default options;\n","var configs = {\n classNames: {\n inset: 'Inset',\n nolistview: 'NoListview',\n nopanel: 'NoPanel',\n panel: 'Panel',\n selected: 'Selected',\n vertical: 'Vertical'\n },\n language: null,\n openingInterval: 25,\n panelNodetype: ['ul', 'ol', 'div'],\n transitionDuration: 400\n};\nexport default configs;\n","/**\n * Deep extend an object with the given defaults.\n * Note that the extended object is not a clone, meaning the original object will also be updated.\n *\n * @param \t{object}\torignl\tThe object to extend to.\n * @param \t{object}\tdfault\tThe object to extend from.\n * @return\t{object}\t\t\tThe extended \"orignl\" object.\n */\nexport function extend(orignl, dfault) {\n if (type(orignl) != 'object') {\n orignl = {};\n }\n if (type(dfault) != 'object') {\n dfault = {};\n }\n for (var k in dfault) {\n if (!dfault.hasOwnProperty(k)) {\n continue;\n }\n if (typeof orignl[k] == 'undefined') {\n orignl[k] = dfault[k];\n }\n else if (type(orignl[k]) == 'object') {\n extend(orignl[k], dfault[k]);\n }\n }\n return orignl;\n}\n/**\n * Detect the touch / dragging direction on a touch device.\n *\n * @param {HTMLElement} surface The element to monitor for touch events.\n * @return {object} Object with \"get\" function.\n */\nexport function touchDirection(surface) {\n var direction = '';\n surface.addEventListener('touchmove', function (evnt) {\n direction = '';\n if (evnt.movementY > 0) {\n direction = 'down';\n }\n else if (evnt.movementY < 0) {\n direction = 'up';\n }\n });\n return {\n get: function () { return direction; }\n };\n}\n/**\n * Get the type of any given variable. Improvement of \"typeof\".\n *\n * @param \t{any}\t\tvariable\tThe variable.\n * @return\t{string}\t\t\t\tThe type of the variable in lowercase.\n */\nexport function type(variable) {\n return {}.toString\n .call(variable)\n .match(/\\s([a-zA-Z]+)/)[1]\n .toLowerCase();\n}\n/**\n * Find the value from an option or function.\n * @param \t{HTMLElement} \telement \tScope for the function.\n * @param \t{any} \t\t\t[option] \tValue or function.\n * @param \t{any} \t\t\t[dfault] \tDefault fallback value.\n * @return\t{any}\t\t\t\t\t\tThe given evaluation of the given option, or the default fallback value.\n */\nexport function valueOrFn(element, option, dfault) {\n if (typeof option == 'function') {\n var value = option.call(element);\n if (typeof value != 'undefined') {\n return value;\n }\n }\n if ((option === null ||\n typeof option == 'function' ||\n typeof option == 'undefined') &&\n typeof dfault != 'undefined') {\n return dfault;\n }\n return option;\n}\n/**\n * Set and invoke a (single) transition-end function with fallback.\n *\n * @param {HTMLElement} \telement \tScope for the function.\n * @param {function}\t\tfunc\t\tFunction to invoke.\n * @param {number}\t\t\tduration\tThe duration of the animation (for the fallback).\n */\nexport function transitionend(element, func, duration) {\n var _ended = false, _fn = function (evnt) {\n if (typeof evnt !== 'undefined') {\n if (evnt.target !== element) {\n return;\n }\n }\n if (!_ended) {\n element.removeEventListener('transitionend', _fn);\n element.removeEventListener('webkitTransitionEnd', _fn);\n func.call(element);\n }\n _ended = true;\n };\n element.addEventListener('transitionend', _fn);\n element.addEventListener('webkitTransitionEnd', _fn);\n setTimeout(_fn, duration * 1.1);\n}\n/**\n * Get a (page wide) unique ID.\n */\nexport function uniqueId() {\n return 'mm-' + __id++;\n}\nvar __id = 0;\n/**\n * Get the original ID from a possibly prefixed ID.\n * @param id The possibly prefixed ID.\n */\nexport function originalId(id) {\n if (id.slice(0, 3) == 'mm-') {\n return id.slice(3);\n }\n return id;\n}\n","import { extend } from './helpers';\nvar translations = {};\n/**\n * Add translations to a language.\n * @param {object} text Object of key/value translations.\n * @param {string} language The translated language.\n */\nexport function add(text, language) {\n if (typeof translations[language] == 'undefined') {\n translations[language] = {};\n }\n extend(translations[language], text);\n}\n/**\n * Find a translated text in a language.\n * @param {string} text The text to find the translation for.\n * @param {string} language The language to search in.\n * @return {string} The translated text.\n */\nexport function get(text, language) {\n if (typeof language == 'string' &&\n typeof translations[language] != 'undefined') {\n return translations[language][text] || text;\n }\n return text;\n}\n/**\n * Get all translated text in a language.\n * @param {string} language The language to search for.\n * @return {object} The translations.\n */\nexport function all(language) {\n return translations;\n}\n","export default {\n 'Menu': 'Menu'\n};\n","export default {\n 'Menu': 'منو'\n};\n","export default {\n 'Menu': 'Menü'\n};\n","export default {\n 'Menu': 'Меню'\n};\n","/**\n * Create an element with classname.\n *\n * @param \t{string}\t\tselector\tThe nodeName and classnames for the element to create.\n * @return\t{HTMLElement}\t\t\t\tThe created element.\n */\nexport function create(selector) {\n var args = selector.split('.');\n var elem = document.createElement(args.shift());\n // IE11:\n args.forEach(function (classname) {\n elem.classList.add(classname);\n });\n // Better browsers:\n // elem.classList.add(...args);\n return elem;\n}\n/**\n * Find all elements matching the selector.\n * Basically the same as element.querySelectorAll() but it returns an actuall array.\n *\n * @param \t{HTMLElement} \telement Element to search in.\n * @param \t{string}\t\tfilter\tThe filter to match.\n * @return\t{array}\t\t\t\t\tArray of elements that match the filter.\n */\nexport function find(element, filter) {\n return Array.prototype.slice.call(element.querySelectorAll(filter));\n}\n/**\n * Find all child elements matching the (optional) selector.\n *\n * @param \t{HTMLElement} \telement Element to search in.\n * @param \t{string}\t\tfilter\tThe filter to match.\n * @return\t{array}\t\t\t\t\tArray of child elements that match the filter.\n */\nexport function children(element, filter) {\n var children = Array.prototype.slice.call(element.children);\n return filter\n ? children.filter(function (child) { return child.matches(filter); })\n : children;\n}\n/**\n * Find text excluding text from within child elements.\n * @param {HTMLElement} element Element to search in.\n * @return {string} The text.\n */\nexport function text(element) {\n return Array.prototype.slice\n .call(element.childNodes)\n .filter(function (child) { return child.nodeType == 3; })\n .map(function (child) { return child.textContent; })\n .join(' ');\n}\n/**\n * Find all preceding elements matching the selector.\n *\n * @param \t{HTMLElement} \telement Element to start searching from.\n * @param \t{string}\t\tfilter\tThe filter to match.\n * @return\t{array}\t\t\t\t\tArray of preceding elements that match the selector.\n */\nexport function parents(element, filter) {\n /** Array of preceding elements that match the selector. */\n var parents = [];\n /** Array of preceding elements that match the selector. */\n var parent = element.parentElement;\n while (parent) {\n parents.push(parent);\n parent = parent.parentElement;\n }\n return filter\n ? parents.filter(function (parent) { return parent.matches(filter); })\n : parents;\n}\n/**\n * Find all previous siblings matching the selecotr.\n *\n * @param \t{HTMLElement} \telement Element to start searching from.\n * @param \t{string}\t\tfilter\tThe filter to match.\n * @return\t{array}\t\t\t\t\tArray of previous siblings that match the selector.\n */\nexport function prevAll(element, filter) {\n /** Array of previous siblings that match the selector. */\n var previous = [];\n /** Current element in the loop */\n var current = element.previousElementSibling;\n while (current) {\n if (!filter || current.matches(filter)) {\n previous.push(current);\n }\n current = current.previousElementSibling;\n }\n return previous;\n}\n/**\n * Get an element offset relative to the document.\n *\n * @param \t{HTMLElement}\t element \t\t\tElement to start measuring from.\n * @param \t{string}\t\t [direction=top] \tOffset top or left.\n * @return\t{number}\t\t\t\t\t\t\tThe element offset relative to the document.\n */\nexport function offset(element, direction) {\n return (element.getBoundingClientRect()[direction] +\n document.body[direction === 'left' ? 'scrollLeft' : 'scrollTop']);\n}\n/**\n * Filter out non-listitem listitems.\n * @param {array} listitems \tElements to filter.\n * @return {array}\t\t\t\tThe filtered set of listitems.\n */\nexport function filterLI(listitems) {\n return listitems.filter(function (listitem) { return !listitem.matches('.mm-hidden'); });\n}\n/**\n * Find anchors in listitems (excluding anchor that open a sub-panel).\n * @param {array} \tlistitems \tElements to filter.\n * @return {array}\t\t\t\tThe found set of anchors.\n */\nexport function filterLIA(listitems) {\n var anchors = [];\n filterLI(listitems).forEach(function (listitem) {\n anchors.push.apply(anchors, children(listitem, 'a.mm-listitem__text'));\n });\n return anchors.filter(function (anchor) { return !anchor.matches('.mm-btn_next'); });\n}\n/**\n * Refactor a classname on multiple elements.\n * @param {HTMLElement} element \tElement to refactor.\n * @param {string}\t\toldClass \tClassname to remove.\n * @param {string}\t\tnewClass \tClassname to add.\n */\nexport function reClass(element, oldClass, newClass) {\n if (element.matches('.' + oldClass)) {\n element.classList.remove(oldClass);\n element.classList.add(newClass);\n }\n}\n","/** Collection of callback functions for media querys. */\nvar listeners = {};\n/**\n * Bind functions to a matchMedia listener (subscriber).\n *\n * @param {string|number} \tquery \tMedia query to match or number for min-width.\n * @param {function} \t\tyes \tFunction to invoke when the media query matches.\n * @param {function} \t\tno \t\tFunction to invoke when the media query doesn't match.\n */\nexport function add(query, yes, no) {\n if (typeof query == 'number') {\n query = '(min-width: ' + query + 'px)';\n }\n listeners[query] = listeners[query] || [];\n listeners[query].push({ yes: yes, no: no });\n}\n/**\n * Initialize the matchMedia listener.\n */\nexport function watch() {\n var _loop_1 = function (query) {\n var mqlist = window.matchMedia(query);\n fire(query, mqlist);\n mqlist.onchange = function (evnt) {\n fire(query, mqlist);\n };\n };\n for (var query in listeners) {\n _loop_1(query);\n }\n}\n/**\n * Invoke the \"yes\" or \"no\" function for a matchMedia listener (publisher).\n *\n * @param {string} \t\t\tquery \tMedia query to check for.\n * @param {MediaQueryList} \tmqlist \tMedia query list to check with.\n */\nexport function fire(query, mqlist) {\n var fn = mqlist.matches ? 'yes' : 'no';\n for (var m = 0; m < listeners[query].length; m++) {\n listeners[query][m][fn]();\n }\n}\n","import { add } from '../../../_modules/i18n';\nimport nl from './nl';\nimport fa from './fa';\nimport de from './de';\nimport ru from './ru';\nexport default function () {\n add(nl, 'nl');\n add(fa, 'fa');\n add(de, 'de');\n add(ru, 'ru');\n}\n","import options from './_options';\nimport configs from './_configs';\nimport translate from './translations/translate';\nimport * as DOM from '../../_modules/dom';\nimport * as i18n from '../../_modules/i18n';\nimport * as media from '../../_modules/matchmedia';\nimport { type, extend, transitionend, uniqueId, valueOrFn, } from '../../_modules/helpers';\n// Add the translations.\ntranslate();\n/**\n * Class for a mobile menu.\n */\nvar Mmenu = /** @class */ (function () {\n /**\n * Create a mobile menu.\n * @param {HTMLElement|string} \tmenu\t\t\t\t\t\tThe menu node.\n * @param {object} \t\t\t\t[options=Mmenu.options]\t\tOptions for the menu.\n * @param {object} \t\t\t\t[configs=Mmenu.configs]\t\tConfiguration options for the menu.\n */\n function Mmenu(menu, options, configs) {\n //\tExtend options and configuration from defaults.\n this.opts = extend(options, Mmenu.options);\n this.conf = extend(configs, Mmenu.configs);\n //\tMethods to expose in the API.\n this._api = [\n 'bind',\n 'initPanel',\n 'initListview',\n 'openPanel',\n 'closePanel',\n 'closeAllPanels',\n 'setSelected',\n ];\n //\tStorage objects for nodes, variables, hooks and click handlers.\n this.node = {};\n this.vars = {};\n this.hook = {};\n this.clck = [];\n //\tGet menu node from string or element.\n this.node.menu =\n typeof menu == 'string' ? document.querySelector(menu) : menu;\n if (typeof this._deprecatedWarnings == 'function') {\n this._deprecatedWarnings();\n }\n this._initWrappers();\n this._initAddons();\n this._initExtensions();\n this._initHooks();\n this._initAPI();\n this._initMenu();\n this._initPanels();\n this._initOpened();\n this._initAnchors();\n media.watch();\n return this;\n }\n /**\n * Open a panel.\n * @param {HTMLElement} panel\t\t\t\tPanel to open.\n * @param {boolean}\t\t[animation=true]\tWhether or not to open the panel with an animation.\n */\n Mmenu.prototype.openPanel = function (panel, animation) {\n var _this = this;\n //\tInvoke \"before\" hook.\n this.trigger('openPanel:before', [panel]);\n //\tFind panel.\n if (!panel) {\n return;\n }\n if (!panel.matches('.mm-panel')) {\n panel = panel.closest('.mm-panel');\n }\n if (!panel) {\n return;\n }\n //\t/Find panel.\n if (typeof animation != 'boolean') {\n animation = true;\n }\n //\tOpen a \"vertical\" panel.\n if (panel.parentElement.matches('.mm-listitem_vertical')) {\n //\tOpen current and all vertical parent panels.\n DOM.parents(panel, '.mm-listitem_vertical').forEach(function (listitem) {\n listitem.classList.add('mm-listitem_opened');\n DOM.children(listitem, '.mm-panel').forEach(function (panel) {\n panel.classList.remove('mm-hidden');\n });\n });\n //\tOpen first non-vertical parent panel.\n var parents = DOM.parents(panel, '.mm-panel').filter(function (panel) { return !panel.parentElement.matches('.mm-listitem_vertical'); });\n this.trigger('openPanel:start', [panel]);\n if (parents.length) {\n this.openPanel(parents[0]);\n }\n this.trigger('openPanel:finish', [panel]);\n //\tOpen a \"horizontal\" panel.\n }\n else {\n if (panel.matches('.mm-panel_opened')) {\n return;\n }\n var panels = DOM.children(this.node.pnls, '.mm-panel'), current_1 = DOM.children(this.node.pnls, '.mm-panel_opened')[0];\n //\tClose all child panels.\n panels\n .filter(function (parent) { return parent !== panel; })\n .forEach(function (parent) {\n parent.classList.remove('mm-panel_opened-parent');\n });\n //\tOpen all parent panels.\n var parent_1 = panel['mmParent'];\n while (parent_1) {\n parent_1 = parent_1.closest('.mm-panel');\n if (parent_1) {\n if (!parent_1.parentElement.matches('.mm-listitem_vertical')) {\n parent_1.classList.add('mm-panel_opened-parent');\n }\n parent_1 = parent_1['mmParent'];\n }\n }\n //\tAdd classes for animation.\n panels.forEach(function (panel) {\n panel.classList.remove('mm-panel_highest');\n });\n panels\n .filter(function (hidden) { return hidden !== current_1; })\n .filter(function (hidden) { return hidden !== panel; })\n .forEach(function (hidden) {\n hidden.classList.add('mm-hidden');\n });\n panel.classList.remove('mm-hidden');\n /**\tStart opening the panel. */\n var openPanelStart_1 = function () {\n if (current_1) {\n current_1.classList.remove('mm-panel_opened');\n }\n panel.classList.add('mm-panel_opened');\n if (panel.matches('.mm-panel_opened-parent')) {\n if (current_1) {\n current_1.classList.add('mm-panel_highest');\n }\n panel.classList.remove('mm-panel_opened-parent');\n }\n else {\n if (current_1) {\n current_1.classList.add('mm-panel_opened-parent');\n }\n panel.classList.add('mm-panel_highest');\n }\n //\tInvoke \"start\" hook.\n _this.trigger('openPanel:start', [panel]);\n };\n /**\tFinish opening the panel. */\n var openPanelFinish_1 = function () {\n if (current_1) {\n current_1.classList.remove('mm-panel_highest');\n current_1.classList.add('mm-hidden');\n }\n panel.classList.remove('mm-panel_highest');\n //\tInvoke \"finish\" hook.\n _this.trigger('openPanel:finish', [panel]);\n };\n if (animation && !panel.matches('.mm-panel_noanimation')) {\n //\tWithout the timeout the animation will not work because the element had display: none;\n setTimeout(function () {\n //\tCallback\n transitionend(panel, function () {\n openPanelFinish_1();\n }, _this.conf.transitionDuration);\n openPanelStart_1();\n }, this.conf.openingInterval);\n }\n else {\n openPanelStart_1();\n openPanelFinish_1();\n }\n }\n //\tInvoke \"after\" hook.\n this.trigger('openPanel:after', [panel]);\n };\n /**\n * Close a panel.\n * @param {HTMLElement} panel Panel to close.\n */\n Mmenu.prototype.closePanel = function (panel) {\n //\tInvoke \"before\" hook.\n this.trigger('closePanel:before', [panel]);\n var li = panel.parentElement;\n //\tOnly works for \"vertical\" panels.\n if (li.matches('.mm-listitem_vertical')) {\n li.classList.remove('mm-listitem_opened');\n panel.classList.add('mm-hidden');\n //\tInvoke main hook.\n this.trigger('closePanel', [panel]);\n }\n //\tInvoke \"after\" hook.\n this.trigger('closePanel:after', [panel]);\n };\n /**\n * Close all opened panels.\n * @param {HTMLElement} panel Panel to open after closing all other panels.\n */\n Mmenu.prototype.closeAllPanels = function (panel) {\n //\tInvoke \"before\" hook.\n this.trigger('closeAllPanels:before');\n //\tClose all \"vertical\" panels.\n var listitems = this.node.pnls.querySelectorAll('.mm-listitem');\n listitems.forEach(function (listitem) {\n listitem.classList.remove('mm-listitem_selected');\n listitem.classList.remove('mm-listitem_opened');\n });\n //\tClose all \"horizontal\" panels.\n var panels = DOM.children(this.node.pnls, '.mm-panel'), opened = panel ? panel : panels[0];\n DOM.children(this.node.pnls, '.mm-panel').forEach(function (panel) {\n if (panel !== opened) {\n panel.classList.remove('mm-panel_opened');\n panel.classList.remove('mm-panel_opened-parent');\n panel.classList.remove('mm-panel_highest');\n panel.classList.add('mm-hidden');\n }\n });\n //\tOpen first panel.\n this.openPanel(opened, false);\n //\tInvoke \"after\" hook.\n this.trigger('closeAllPanels:after');\n };\n /**\n * Toggle a panel opened/closed.\n * @param {HTMLElement} panel Panel to open or close.\n */\n Mmenu.prototype.togglePanel = function (panel) {\n var listitem = panel.parentElement;\n //\tOnly works for \"vertical\" panels.\n if (listitem.matches('.mm-listitem_vertical')) {\n this[listitem.matches('.mm-listitem_opened')\n ? 'closePanel'\n : 'openPanel'](panel);\n }\n };\n /**\n * Display a listitem as being \"selected\".\n * @param {HTMLElement} listitem Listitem to mark.\n */\n Mmenu.prototype.setSelected = function (listitem) {\n //\tInvoke \"before\" hook.\n this.trigger('setSelected:before', [listitem]);\n //\tFirst, remove the selected class from all listitems.\n DOM.find(this.node.menu, '.mm-listitem_selected').forEach(function (li) {\n li.classList.remove('mm-listitem_selected');\n });\n //\tNext, add the selected class to the provided listitem.\n listitem.classList.add('mm-listitem_selected');\n //\tInvoke \"after\" hook.\n this.trigger('setSelected:after', [listitem]);\n };\n /**\n * Bind functions to a hook (subscriber).\n * @param {string} \t\thook The hook.\n * @param {function} \tfunc The function.\n */\n Mmenu.prototype.bind = function (hook, func) {\n //\tCreate an array for the hook if it does not yet excist.\n this.hook[hook] = this.hook[hook] || [];\n //\tPush the function to the array.\n this.hook[hook].push(func);\n };\n /**\n * Invoke the functions bound to a hook (publisher).\n * @param {string} \thook \tThe hook.\n * @param {array}\t[args] \tArguments for the function.\n */\n Mmenu.prototype.trigger = function (hook, args) {\n if (this.hook[hook]) {\n for (var h = 0, l = this.hook[hook].length; h < l; h++) {\n this.hook[hook][h].apply(this, args);\n }\n }\n };\n /**\n * Create the API.\n */\n Mmenu.prototype._initAPI = function () {\n var _this = this;\n //\tWe need this=that because:\n //\t1) the \"arguments\" object can not be referenced in an arrow function in ES3 and ES5.\n var that = this;\n this.API = {};\n this._api.forEach(function (fn) {\n _this.API[fn] = function () {\n var re = that[fn].apply(that, arguments); // 1)\n return typeof re == 'undefined' ? that.API : re;\n };\n });\n //\tStore the API in the HTML node for external usage.\n this.node.menu['mmApi'] = this.API;\n };\n /**\n * Bind the hooks specified in the options (publisher).\n */\n Mmenu.prototype._initHooks = function () {\n for (var hook in this.opts.hooks) {\n this.bind(hook, this.opts.hooks[hook]);\n }\n };\n /**\n * Initialize the wrappers specified in the options.\n */\n Mmenu.prototype._initWrappers = function () {\n //\tInvoke \"before\" hook.\n this.trigger('initWrappers:before');\n for (var w = 0; w < this.opts.wrappers.length; w++) {\n var wrpr = Mmenu.wrappers[this.opts.wrappers[w]];\n if (typeof wrpr == 'function') {\n wrpr.call(this);\n }\n }\n //\tInvoke \"after\" hook.\n this.trigger('initWrappers:after');\n };\n /**\n * Initialize all available add-ons.\n */\n Mmenu.prototype._initAddons = function () {\n //\tInvoke \"before\" hook.\n this.trigger('initAddons:before');\n for (var addon in Mmenu.addons) {\n Mmenu.addons[addon].call(this);\n }\n //\tInvoke \"after\" hook.\n this.trigger('initAddons:after');\n };\n /**\n * Initialize the extensions specified in the options.\n */\n Mmenu.prototype._initExtensions = function () {\n var _this = this;\n //\tInvoke \"before\" hook.\n this.trigger('initExtensions:before');\n //\tConvert array to object with array.\n if (type(this.opts.extensions) == 'array') {\n this.opts.extensions = {\n all: this.opts.extensions,\n };\n }\n //\tLoop over object.\n Object.keys(this.opts.extensions).forEach(function (query) {\n var classnames = _this.opts.extensions[query].map(function (extension) { return 'mm-menu_' + extension; });\n if (classnames.length) {\n media.add(query, function () {\n // IE11:\n classnames.forEach(function (classname) {\n _this.node.menu.classList.add(classname);\n });\n // Better browsers:\n // this.node.menu.classList.add(...classnames);\n }, function () {\n // IE11:\n classnames.forEach(function (classname) {\n _this.node.menu.classList.remove(classname);\n });\n // Better browsers:\n // this.node.menu.classList.remove(...classnames);\n });\n }\n });\n //\tInvoke \"after\" hook.\n this.trigger('initExtensions:after');\n };\n /**\n * Initialize the menu.\n */\n Mmenu.prototype._initMenu = function () {\n var _this = this;\n //\tInvoke \"before\" hook.\n this.trigger('initMenu:before');\n //\tAdd class to the wrapper.\n this.node.wrpr = this.node.wrpr || this.node.menu.parentElement;\n this.node.wrpr.classList.add('mm-wrapper');\n //\tAdd an ID to the menu if it does not yet have one.\n this.node.menu.id = this.node.menu.id || uniqueId();\n //\tWrap the panels in a node.\n var panels = DOM.create('div.mm-panels');\n DOM.children(this.node.menu).forEach(function (panel) {\n if (_this.conf.panelNodetype.indexOf(panel.nodeName.toLowerCase()) >\n -1) {\n panels.append(panel);\n }\n });\n this.node.menu.append(panels);\n this.node.pnls = panels;\n //\tAdd class to the menu.\n this.node.menu.classList.add('mm-menu');\n //\tInvoke \"after\" hook.\n this.trigger('initMenu:after');\n };\n /**\n * Initialize panels.\n */\n Mmenu.prototype._initPanels = function () {\n var _this = this;\n //\tInvoke \"before\" hook.\n this.trigger('initPanels:before');\n //\tOpen / close panels.\n this.clck.push(function (anchor, args) {\n if (args.inMenu) {\n var href = anchor.getAttribute('href');\n if (href && href.length > 1 && href.slice(0, 1) == '#') {\n try {\n var panel = DOM.find(_this.node.menu, href)[0];\n if (panel && panel.matches('.mm-panel')) {\n if (anchor.parentElement.matches('.mm-listitem_vertical')) {\n _this.togglePanel(panel);\n }\n else {\n _this.openPanel(panel);\n }\n return true;\n }\n }\n catch (err) { }\n }\n }\n });\n /** The panels to initiate */\n var panels = DOM.children(this.node.pnls);\n panels.forEach(function (panel) {\n _this.initPanel(panel);\n });\n //\tInvoke \"after\" hook.\n this.trigger('initPanels:after');\n };\n /**\n * Initialize a single panel and its children.\n * @param {HTMLElement} panel The panel to initialize.\n */\n Mmenu.prototype.initPanel = function (panel) {\n var _this = this;\n /** Query selector for possible node-types for panels. */\n var panelNodetype = this.conf.panelNodetype.join(', ');\n if (panel.matches(panelNodetype)) {\n // Only once\n if (!panel.matches('.mm-panel')) {\n panel = this._initPanel(panel);\n }\n if (panel) {\n /** The sub panels. */\n var children_1 = [];\n //\tFind panel > panel\n children_1.push.apply(children_1, DOM.children(panel, '.' + this.conf.classNames.panel));\n //\tFind panel listitem > panel\n DOM.children(panel, '.mm-listview').forEach(function (listview) {\n DOM.children(listview, '.mm-listitem').forEach(function (listitem) {\n children_1.push.apply(children_1, DOM.children(listitem, panelNodetype));\n });\n });\n // Initiate subpanel(s).\n children_1.forEach(function (child) {\n _this.initPanel(child);\n });\n }\n }\n };\n /**\n * Initialize a single panel.\n * @param {HTMLElement} \t\tpanel \tPanel to initialize.\n * @return {HTMLElement|null} \t\t\tInitialized panel.\n */\n Mmenu.prototype._initPanel = function (panel) {\n var _this = this;\n //\tInvoke \"before\" hook.\n this.trigger('initPanel:before', [panel]);\n //\tRefactor panel classnames\n DOM.reClass(panel, this.conf.classNames.panel, 'mm-panel');\n DOM.reClass(panel, this.conf.classNames.nopanel, 'mm-nopanel');\n DOM.reClass(panel, this.conf.classNames.inset, 'mm-listview_inset');\n if (panel.matches('.mm-listview_inset')) {\n panel.classList.add('mm-nopanel');\n }\n //\tStop if not supposed to be a panel.\n if (panel.matches('.mm-nopanel')) {\n return null;\n }\n /** The original ID on the node. */\n var id = panel.id || uniqueId();\n // Vertical panel.\n var vertical = panel.matches('.' + this.conf.classNames.vertical) ||\n !this.opts.slidingSubmenus;\n panel.classList.remove(this.conf.classNames.vertical);\n //\tWrap UL/OL in DIV\n if (panel.matches('ul, ol')) {\n panel.removeAttribute('id');\n /** The panel. */\n var wrapper = DOM.create('div');\n //\tWrap the listview in the panel.\n panel.before(wrapper);\n wrapper.append(panel);\n panel = wrapper;\n }\n panel.id = id;\n panel.classList.add('mm-panel');\n panel.classList.add('mm-hidden');\n /** The parent listitem. */\n var parent = [panel.parentElement].filter(function (listitem) {\n return listitem.matches('li');\n })[0];\n if (vertical) {\n if (parent) {\n parent.classList.add('mm-listitem_vertical');\n }\n }\n else {\n this.node.pnls.append(panel);\n }\n if (parent) {\n //\tStore parent/child relation.\n parent['mmChild'] = panel;\n panel['mmParent'] = parent;\n //\tAdd open link to parent listitem\n if (parent && parent.matches('.mm-listitem')) {\n if (!DOM.children(parent, '.mm-btn').length) {\n /** The text node. */\n var item = DOM.children(parent, '.mm-listitem__text')[0];\n if (item) {\n /** The open link. */\n var button = DOM.create('a.mm-btn.mm-btn_next.mm-listitem__btn');\n button.setAttribute('href', '#' + panel.id);\n // If the item has no link,\n // Replace the item with the open link.\n if (item.matches('span')) {\n button.classList.add('mm-listitem__text');\n button.innerHTML = item.innerHTML;\n parent.insertBefore(button, item.nextElementSibling);\n item.remove();\n }\n // Otherwise, insert the button after the text.\n else {\n parent.insertBefore(button, DOM.children(parent, '.mm-panel')[0]);\n }\n }\n }\n }\n }\n this._initNavbar(panel);\n DOM.children(panel, 'ul, ol').forEach(function (listview) {\n _this.initListview(listview);\n });\n //\tInvoke \"after\" hook.\n this.trigger('initPanel:after', [panel]);\n return panel;\n };\n /**\n * Initialize a navbar.\n * @param {HTMLElement} panel Panel for the navbar.\n */\n Mmenu.prototype._initNavbar = function (panel) {\n //\tInvoke \"before\" hook.\n this.trigger('initNavbar:before', [panel]);\n //\tOnly one navbar per panel.\n if (DOM.children(panel, '.mm-navbar').length) {\n return;\n }\n /** The parent listitem. */\n var parentListitem = null;\n /** The parent panel. */\n var parentPanel = null;\n // The parent panel was specified in the data-mm-parent attribute.\n if (panel.getAttribute('data-mm-parent')) {\n parentPanel = DOM.find(this.node.pnls, panel.getAttribute('data-mm-parent'))[0];\n }\n // if (panel.dataset.mmParent) { // IE10 has no dataset\n // parentPanel = DOM.find(this.node.pnls, panel.dataset.mmParent)[0];\n // }\n // The parent panel from a listitem.\n else {\n parentListitem = panel['mmParent'];\n if (parentListitem) {\n parentPanel = parentListitem.closest('.mm-panel');\n }\n }\n // No navbar needed for vertical submenus.\n if (parentListitem && parentListitem.matches('.mm-listitem_vertical')) {\n return;\n }\n /** The navbar element. */\n var navbar = DOM.create('div.mm-navbar');\n // Hide navbar if specified in options.\n if (!this.opts.navbar.add) {\n navbar.classList.add('mm-hidden');\n }\n // Sticky navbars.\n else if (this.opts.navbar.sticky) {\n navbar.classList.add('mm-navbar_sticky');\n }\n // Add the back button.\n if (parentPanel) {\n /** The back button. */\n var prev = DOM.create('a.mm-btn.mm-btn_prev.mm-navbar__btn');\n prev.setAttribute('href', '#' + parentPanel.id);\n navbar.append(prev);\n }\n /** The anchor that opens the panel. */\n var opener = null;\n // The anchor is in a listitem.\n if (parentListitem) {\n opener = DOM.children(parentListitem, '.mm-listitem__text')[0];\n }\n // The anchor is in a panel.\n else if (parentPanel) {\n opener = DOM.find(parentPanel, 'a[href=\"#' + panel.id + '\"]')[0];\n }\n // Add the title.\n var title = DOM.create('a.mm-navbar__title');\n var titleText = DOM.create('span');\n title.append(titleText);\n titleText.innerHTML =\n // panel.dataset.mmTitle || // IE10 has no dataset :(\n panel.getAttribute('data-mm-title') ||\n (opener ? opener.textContent : '') ||\n this.i18n(this.opts.navbar.title) ||\n this.i18n('Menu');\n switch (this.opts.navbar.titleLink) {\n case 'anchor':\n if (opener) {\n title.setAttribute('href', opener.getAttribute('href'));\n }\n break;\n case 'parent':\n if (parentPanel) {\n title.setAttribute('href', '#' + parentPanel.id);\n }\n break;\n }\n navbar.append(title);\n panel.prepend(navbar);\n //\tInvoke \"after\" hook.\n this.trigger('initNavbar:after', [panel]);\n };\n /**\n * Initialize a listview.\n * @param {HTMLElement} listview Listview to initialize.\n */\n Mmenu.prototype.initListview = function (listview) {\n var _this = this;\n //\tInvoke \"before\" hook.\n this.trigger('initListview:before', [listview]);\n DOM.reClass(listview, this.conf.classNames.nolistview, 'mm-nolistview');\n if (!listview.matches('.mm-nolistview')) {\n listview.classList.add('mm-listview');\n DOM.children(listview).forEach(function (listitem) {\n listitem.classList.add('mm-listitem');\n DOM.reClass(listitem, _this.conf.classNames.selected, 'mm-listitem_selected');\n DOM.children(listitem, 'a, span').forEach(function (item) {\n if (!item.matches('.mm-btn')) {\n item.classList.add('mm-listitem__text');\n }\n });\n });\n }\n //\tInvoke \"after\" hook.\n this.trigger('initListview:after', [listview]);\n };\n /**\n * Find and open the correct panel after creating the menu.\n */\n Mmenu.prototype._initOpened = function () {\n //\tInvoke \"before\" hook.\n this.trigger('initOpened:before');\n /** The selected listitem(s). */\n var listitems = this.node.pnls.querySelectorAll('.mm-listitem_selected');\n /** The last selected listitem. */\n var lastitem = null;\n //\tDeselect the listitems.\n listitems.forEach(function (listitem) {\n lastitem = listitem;\n listitem.classList.remove('mm-listitem_selected');\n });\n //\tRe-select the last listitem.\n if (lastitem) {\n lastitem.classList.add('mm-listitem_selected');\n }\n /**\tThe current opened panel. */\n var current = lastitem\n ? lastitem.closest('.mm-panel')\n : DOM.children(this.node.pnls, '.mm-panel')[0];\n //\tOpen the current opened panel.\n this.openPanel(current, false);\n //\tInvoke \"after\" hook.\n this.trigger('initOpened:after');\n };\n /**\n * Initialize anchors in / for the menu.\n */\n Mmenu.prototype._initAnchors = function () {\n var _this = this;\n //\tInvoke \"before\" hook.\n this.trigger('initAnchors:before');\n document.addEventListener('click', function (evnt) {\n /** The clicked element. */\n var target = evnt.target.closest('a[href]');\n if (!target) {\n return;\n }\n /** Arguments passed to the bound methods. */\n var args = {\n inMenu: target.closest('.mm-menu') === _this.node.menu,\n inListview: target.matches('.mm-listitem > a'),\n toExternal: target.matches('[rel=\"external\"]') ||\n target.matches('[target=\"_blank\"]'),\n };\n var onClick = {\n close: null,\n setSelected: null,\n preventDefault: target.getAttribute('href').slice(0, 1) == '#',\n };\n //\tFind hooked behavior.\n for (var c = 0; c < _this.clck.length; c++) {\n var click = _this.clck[c].call(_this, target, args);\n if (click) {\n if (typeof click == 'boolean') {\n evnt.preventDefault();\n return;\n }\n if (type(click) == 'object') {\n onClick = extend(click, onClick);\n }\n }\n }\n //\tDefault behavior for anchors in lists.\n if (args.inMenu && args.inListview && !args.toExternal) {\n //\tSet selected item, Default: true\n if (valueOrFn(target, _this.opts.onClick.setSelected, onClick.setSelected)) {\n _this.setSelected(target.parentElement);\n }\n //\tPrevent default / don't follow link. Default: false.\n if (valueOrFn(target, _this.opts.onClick.preventDefault, onClick.preventDefault)) {\n evnt.preventDefault();\n }\n //\tClose menu. Default: false\n if (valueOrFn(target, _this.opts.onClick.close, onClick.close)) {\n if (_this.opts.offCanvas &&\n typeof _this.close == 'function') {\n _this.close();\n }\n }\n }\n }, true);\n //\tInvoke \"after\" hook.\n this.trigger('initAnchors:after');\n };\n /**\n * Get the translation for a text.\n * @param {string} text \tText to translate.\n * @return {string}\t\t\tThe translated text.\n */\n Mmenu.prototype.i18n = function (text) {\n return i18n.get(text, this.conf.language);\n };\n /**\tDefault options for menus. */\n Mmenu.options = options;\n /**\tDefault configuration for menus. */\n Mmenu.configs = configs;\n /**\tAvailable add-ons for the plugin. */\n Mmenu.addons = {};\n /** Available wrappers for the plugin. */\n Mmenu.wrappers = {};\n /**\tGlobally used HTML elements. */\n Mmenu.node = {};\n /** Globally used variables. */\n Mmenu.vars = {};\n return Mmenu;\n}());\nexport default Mmenu;\n","var options = {\n blockUI: true,\n moveBackground: true\n};\nexport default options;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (typeof options != 'object') {\n options = {};\n }\n return options;\n}\n;\n","var configs = {\n clone: false,\n menu: {\n insertMethod: 'prepend',\n insertSelector: 'body'\n },\n page: {\n nodetype: 'div',\n selector: null,\n noSelector: []\n }\n};\nexport default configs;\n","/**\n * Make the first letter in a word uppercase.\n * @param {string} word The word.\n */\nfunction ucFirst(word) {\n if (!word) {\n return '';\n }\n return word.charAt(0).toUpperCase() + word.slice(1);\n}\n/**\n * Bind an event listener to an element.\n * @param {HTMLElement} element The element to bind the event listener to.\n * @param {string} evnt The event to listen to.\n * @param {funcion} handler The function to invoke.\n */\nexport function on(element, evnt, handler) {\n // Extract the event name and space from the event (the event can include a namespace (click.foo)).\n var evntParts = evnt.split('.');\n evnt = 'mmEvent' + ucFirst(evntParts[0]) + ucFirst(evntParts[1]);\n element[evnt] = element[evnt] || [];\n element[evnt].push(handler);\n element.addEventListener(evntParts[0], handler);\n}\n/**\n * Remove an event listener from an element.\n * @param {HTMLElement} element The element to remove the event listeners from.\n * @param {string} evnt The event to remove.\n */\nexport function off(element, evnt) {\n // Extract the event name and space from the event (the event can include a namespace (click.foo)).\n var evntParts = evnt.split('.');\n evnt = 'mmEvent' + ucFirst(evntParts[0]) + ucFirst(evntParts[1]);\n (element[evnt] || []).forEach(function (handler) {\n element.removeEventListener(evntParts[0], handler);\n });\n}\n/**\n * Trigger the bound event listeners on an element.\n * @param {HTMLElement} element The element of which to trigger the event listeners from.\n * @param {string} evnt The event to trigger.\n * @param {object} [options] Options to pass to the handler.\n */\nexport function trigger(element, evnt, options) {\n var evntParts = evnt.split('.');\n evnt = 'mmEvent' + ucFirst(evntParts[0]) + ucFirst(evntParts[1]);\n (element[evnt] || []).forEach(function (handler) {\n handler(options || {});\n });\n}\n","import Mmenu from './../oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport configs from './_configs';\nimport { extendShorthandOptions } from './_options';\nimport * as DOM from '../../_modules/dom';\nimport * as events from '../../_modules/eventlisteners';\nimport { extend, transitionend, uniqueId, originalId } from '../../_modules/helpers';\n// Add the options and configs.\nMmenu.options.offCanvas = options;\nMmenu.configs.offCanvas = configs;\nexport default function () {\n var _this = this;\n if (!this.opts.offCanvas) {\n return;\n }\n var options = extendShorthandOptions(this.opts.offCanvas);\n this.opts.offCanvas = extend(options, Mmenu.options.offCanvas);\n var configs = this.conf.offCanvas;\n //\tAdd methods to the API.\n this._api.push('open', 'close', 'setPage');\n //\tSetup the menu.\n this.vars.opened = false;\n //\tAdd off-canvas behavior.\n this.bind('initMenu:before', function () {\n //\tClone if needed.\n if (configs.clone) {\n //\tClone the original menu and store it.\n _this.node.menu = _this.node.menu.cloneNode(true);\n //\tPrefix all ID's in the cloned menu.\n if (_this.node.menu.id) {\n _this.node.menu.id = 'mm-' + _this.node.menu.id;\n }\n DOM.find(_this.node.menu, '[id]').forEach(function (elem) {\n elem.id = 'mm-' + elem.id;\n });\n }\n _this.node.wrpr = document.body;\n //\tPrepend to the \n document\n .querySelector(configs.menu.insertSelector)[configs.menu.insertMethod](_this.node.menu);\n });\n this.bind('initMenu:after', function () {\n //\tSetup the UI blocker.\n initBlocker.call(_this);\n //\tSetup the page.\n _this.setPage(Mmenu.node.page);\n //\tSetup window events.\n initWindow.call(_this);\n //\tSetup the menu.\n _this.node.menu.classList.add('mm-menu_offcanvas');\n //\tOpen if url hash equals menu id (usefull when user clicks the hamburger icon before the menu is created)\n var hash = window.location.hash;\n if (hash) {\n var id = originalId(_this.node.menu.id);\n if (id && id == hash.slice(1)) {\n setTimeout(function () {\n _this.open();\n }, 1000);\n }\n }\n });\n //\tSync the blocker to target the page.\n this.bind('setPage:after', function (page) {\n if (Mmenu.node.blck) {\n DOM.children(Mmenu.node.blck, 'a').forEach(function (anchor) {\n anchor.setAttribute('href', '#' + page.id);\n });\n }\n });\n //\tAdd screenreader / aria support\n this.bind('open:start:sr-aria', function () {\n Mmenu.sr_aria(_this.node.menu, 'hidden', false);\n });\n this.bind('close:finish:sr-aria', function () {\n Mmenu.sr_aria(_this.node.menu, 'hidden', true);\n });\n this.bind('initMenu:after:sr-aria', function () {\n Mmenu.sr_aria(_this.node.menu, 'hidden', true);\n });\n //\tAdd screenreader / text support\n this.bind('initBlocker:after:sr-text', function () {\n DOM.children(Mmenu.node.blck, 'a').forEach(function (anchor) {\n anchor.innerHTML = Mmenu.sr_text(_this.i18n(_this.conf.screenReader.text.closeMenu));\n });\n });\n //\tAdd click behavior.\n //\tPrevents default behavior when clicking an anchor\n this.clck.push(function (anchor, args) {\n //\tOpen menu if the clicked anchor links to the menu\n var id = originalId(_this.node.menu.id);\n if (id) {\n if (anchor.matches('[href=\"#' + id + '\"]')) {\n //\tOpening this menu from within this menu\n //\t\t-> Open menu\n if (args.inMenu) {\n _this.open();\n return true;\n }\n //\tOpening this menu from within a second menu\n //\t\t-> Close the second menu before opening this menu\n var menu = anchor.closest('.mm-menu');\n if (menu) {\n var api = menu['mmApi'];\n if (api && api.close) {\n api.close();\n transitionend(menu, function () {\n _this.open();\n }, _this.conf.transitionDuration);\n return true;\n }\n }\n //\tOpening this menu\n _this.open();\n return true;\n }\n }\n //\tClose menu\n id = Mmenu.node.page.id;\n if (id) {\n if (anchor.matches('[href=\"#' + id + '\"]')) {\n _this.close();\n return true;\n }\n }\n return;\n });\n}\n/**\n * Open the menu.\n */\nMmenu.prototype.open = function () {\n var _this = this;\n //\tInvoke \"before\" hook.\n this.trigger('open:before');\n if (this.vars.opened) {\n return;\n }\n this._openSetup();\n //\tWithout the timeout, the animation won't work because the menu had display: none;\n setTimeout(function () {\n _this._openStart();\n }, this.conf.openingInterval);\n //\tInvoke \"after\" hook.\n this.trigger('open:after');\n};\nMmenu.prototype._openSetup = function () {\n var _this = this;\n var options = this.opts.offCanvas;\n //\tClose other menus\n this.closeAllOthers();\n //\tTrigger window-resize to measure height\n events.trigger(window, 'resize.page', { force: true });\n var clsn = ['mm-wrapper_opened'];\n //\tAdd options\n if (options.blockUI) {\n clsn.push('mm-wrapper_blocking');\n }\n if (options.blockUI == 'modal') {\n clsn.push('mm-wrapper_modal');\n }\n if (options.moveBackground) {\n clsn.push('mm-wrapper_background');\n }\n // IE11:\n clsn.forEach(function (classname) {\n _this.node.wrpr.classList.add(classname);\n });\n // Better browsers:\n // this.node.wrpr.classList.add(...clsn);\n //\tOpen\n //\tWithout the timeout, the animation won't work because the menu had display: none;\n setTimeout(function () {\n _this.vars.opened = true;\n }, this.conf.openingInterval);\n this.node.menu.classList.add('mm-menu_opened');\n};\n/**\n * Finish opening the menu.\n */\nMmenu.prototype._openStart = function () {\n var _this = this;\n //\tCallback when the page finishes opening.\n transitionend(Mmenu.node.page, function () {\n _this.trigger('open:finish');\n }, this.conf.transitionDuration);\n //\tOpening\n this.trigger('open:start');\n this.node.wrpr.classList.add('mm-wrapper_opening');\n};\nMmenu.prototype.close = function () {\n var _this = this;\n //\tInvoke \"before\" hook.\n this.trigger('close:before');\n if (!this.vars.opened) {\n return;\n }\n //\tCallback when the page finishes closing.\n transitionend(Mmenu.node.page, function () {\n _this.node.menu.classList.remove('mm-menu_opened');\n var classnames = [\n 'mm-wrapper_opened',\n 'mm-wrapper_blocking',\n 'mm-wrapper_modal',\n 'mm-wrapper_background'\n ];\n // IE11:\n classnames.forEach(function (classname) {\n _this.node.wrpr.classList.remove(classname);\n });\n // Better browsers:\n // this.node.wrpr.classList.remove(...classnames);\n _this.vars.opened = false;\n _this.trigger('close:finish');\n }, this.conf.transitionDuration);\n //\tClosing\n this.trigger('close:start');\n this.node.wrpr.classList.remove('mm-wrapper_opening');\n //\tInvoke \"after\" hook.\n this.trigger('close:after');\n};\n/**\n * Close all other menus.\n */\nMmenu.prototype.closeAllOthers = function () {\n var _this = this;\n DOM.find(document.body, '.mm-menu_offcanvas').forEach(function (menu) {\n if (menu !== _this.node.menu) {\n var api = menu['mmApi'];\n if (api && api.close) {\n api.close();\n }\n }\n });\n};\n/**\n * Set the \"page\" node.\n *\n * @param {HTMLElement} page Element to set as the page.\n */\nMmenu.prototype.setPage = function (page) {\n //\tInvoke \"before\" hook.\n this.trigger('setPage:before', [page]);\n var configs = this.conf.offCanvas;\n //\tIf no page was specified, find it.\n if (!page) {\n /** Array of elements that are / could be \"the page\". */\n var pages = typeof configs.page.selector == 'string'\n ? DOM.find(document.body, configs.page.selector)\n : DOM.children(document.body, configs.page.nodetype);\n //\tFilter out elements that are absolutely not \"the page\".\n pages = pages.filter(function (page) { return !page.matches('.mm-menu, .mm-wrapper__blocker'); });\n //\tFilter out elements that are configured to not be \"the page\".\n if (configs.page.noSelector.length) {\n pages = pages.filter(function (page) { return !page.matches(configs.page.noSelector.join(', ')); });\n }\n //\tWrap multiple pages in a single element.\n if (pages.length > 1) {\n var wrapper_1 = DOM.create('div');\n pages[0].before(wrapper_1);\n pages.forEach(function (page) {\n wrapper_1.append(page);\n });\n pages = [wrapper_1];\n }\n page = pages[0];\n }\n page.classList.add('mm-page');\n page.classList.add('mm-slideout');\n page.id = page.id || uniqueId();\n Mmenu.node.page = page;\n //\tInvoke \"after\" hook.\n this.trigger('setPage:after', [page]);\n};\n/**\n * Initialize the window.\n */\nvar initWindow = function () {\n var _this = this;\n //\tPrevent tabbing\n //\tBecause when tabbing outside the menu, the element that gains focus will be centered on the screen.\n //\tIn other words: The menu would move out of view.\n events.off(document.body, 'keydown.tabguard');\n events.on(document.body, 'keydown.tabguard', function (evnt) {\n if (evnt.keyCode == 9) {\n if (_this.node.wrpr.matches('.mm-wrapper_opened')) {\n evnt.preventDefault();\n }\n }\n });\n};\n/**\n * Initialize \"blocker\" node\n */\nvar initBlocker = function () {\n var _this = this;\n //\tInvoke \"before\" hook.\n this.trigger('initBlocker:before');\n var options = this.opts.offCanvas, configs = this.conf.offCanvas;\n if (!options.blockUI) {\n return;\n }\n //\tCreate the blocker node.\n if (!Mmenu.node.blck) {\n var blck = DOM.create('div.mm-wrapper__blocker.mm-slideout');\n blck.innerHTML = '';\n //\tAppend the blocker node to the body.\n document.querySelector(configs.menu.insertSelector).append(blck);\n //\tStore the blocker node.\n Mmenu.node.blck = blck;\n }\n //\tClose the menu when\n //\t\t1) clicking,\n //\t\t2) touching or\n //\t\t3) dragging the blocker node.\n var closeMenu = function (evnt) {\n evnt.preventDefault();\n evnt.stopPropagation();\n if (!_this.node.wrpr.matches('.mm-wrapper_modal')) {\n _this.close();\n }\n };\n Mmenu.node.blck.addEventListener('mousedown', closeMenu); // 1\n Mmenu.node.blck.addEventListener('touchstart', closeMenu); // 2\n Mmenu.node.blck.addEventListener('touchmove', closeMenu); // 3\n //\tInvoke \"after\" hook.\n this.trigger('initBlocker:after');\n};\n","var options = {\n aria: true,\n text: true\n};\nexport default options;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (typeof options == 'boolean') {\n options = {\n aria: options,\n text: options\n };\n }\n if (typeof options != 'object') {\n options = {};\n }\n return options;\n}\n;\n","var configs = {\n text: {\n closeMenu: 'Close menu',\n closeSubmenu: 'Close submenu',\n openSubmenu: 'Open submenu',\n toggleSubmenu: 'Toggle submenu'\n }\n};\nexport default configs;\n","export default {\n 'Close menu': 'بستن منو',\n 'Close submenu': 'بستن زیرمنو',\n 'Open submenu': 'بازکردن زیرمنو',\n 'Toggle submenu': 'سوییچ زیرمنو'\n};\n","export default {\n 'Close menu': 'Menü schließen',\n 'Close submenu': 'Untermenü schließen',\n 'Open submenu': 'Untermenü öffnen',\n 'Toggle submenu': 'Untermenü wechseln'\n};\n","export default {\n 'Close menu': 'Закрыть меню',\n 'Close submenu': 'Закрыть подменю',\n 'Open submenu': 'Открыть подменю',\n 'Toggle submenu': 'Переключить подменю'\n};\n","import Mmenu from './../oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport configs from './_configs';\nimport translate from './translations/translate';\nimport { extendShorthandOptions } from './_options';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\n// Add the translations.\ntranslate();\n// Add the options and configs.\nMmenu.options.screenReader = options;\nMmenu.configs.screenReader = configs;\nexport default function () {\n var _this = this;\n //\tExtend options.\n var options = extendShorthandOptions(this.opts.screenReader);\n this.opts.screenReader = extend(options, Mmenu.options.screenReader);\n //\tExtend configs.\n var configs = this.conf.screenReader;\n //\tAdd Aria-* attributes\n if (options.aria) {\n //\tAdd screenreader / aria hooks for add-ons\n //\tIn orde to keep this list short, only extend hooks that are actually used by other add-ons.\n this.bind('initAddons:after', function () {\n _this.bind('initMenu:after', function () {\n this.trigger('initMenu:after:sr-aria', [].slice.call(arguments));\n });\n _this.bind('initNavbar:after', function () {\n this.trigger('initNavbar:after:sr-aria', [].slice.call(arguments));\n });\n _this.bind('openPanel:start', function () {\n this.trigger('openPanel:start:sr-aria', [].slice.call(arguments));\n });\n _this.bind('close:start', function () {\n this.trigger('close:start:sr-aria', [].slice.call(arguments));\n });\n _this.bind('close:finish', function () {\n this.trigger('close:finish:sr-aria', [].slice.call(arguments));\n });\n _this.bind('open:start', function () {\n this.trigger('open:start:sr-aria', [].slice.call(arguments));\n });\n _this.bind('initOpened:after', function () {\n this.trigger('initOpened:after:sr-aria', [].slice.call(arguments));\n });\n });\n //\tUpdate aria-hidden for hidden / visible listitems\n this.bind('updateListview', function () {\n _this.node.pnls\n .querySelectorAll('.mm-listitem')\n .forEach(function (listitem) {\n Mmenu.sr_aria(listitem, 'hidden', listitem.matches('.mm-hidden'));\n });\n });\n //\tUpdate aria-hidden for the panels when opening and closing a panel.\n this.bind('openPanel:start', function (panel) {\n /** Panels that should be considered \"hidden\". */\n var hidden = DOM.find(_this.node.pnls, '.mm-panel')\n .filter(function (hide) { return hide !== panel; })\n .filter(function (hide) { return !hide.parentElement.matches('.mm-panel'); });\n /** Panels that should be considered \"visible\". */\n var visible = [panel];\n DOM.find(panel, '.mm-listitem_vertical .mm-listitem_opened').forEach(function (listitem) {\n visible.push.apply(visible, DOM.children(listitem, '.mm-panel'));\n });\n //\tSet the panels to be considered \"hidden\" or \"visible\".\n hidden.forEach(function (panel) {\n Mmenu.sr_aria(panel, 'hidden', true);\n });\n visible.forEach(function (panel) {\n Mmenu.sr_aria(panel, 'hidden', false);\n });\n });\n this.bind('closePanel', function (panel) {\n Mmenu.sr_aria(panel, 'hidden', true);\n });\n // //\tAdd aria-haspopup and aria-owns to prev- and next buttons.\n // this.bind('initPanel:after', (panel: HTMLElement) => {\n // DOM.find(panel, '.mm-btn').forEach(button => {\n // Mmenu.sr_aria(button, 'haspopup', true);\n // let href = button.getAttribute('href');\n // if (href) {\n // Mmenu.sr_aria(button, 'owns', href.replace('#', ''));\n // }\n // });\n // });\n //\tAdd aria-hidden for navbars in panels.\n this.bind('initNavbar:after', function (panel) {\n /** The navbar in the panel. */\n var navbar = DOM.children(panel, '.mm-navbar')[0];\n /** Whether or not the navbar should be considered \"hidden\". */\n var hidden = navbar.matches('.mm-hidden');\n //\tSet the navbar to be considered \"hidden\" or \"visible\".\n Mmenu.sr_aria(navbar, 'hidden', hidden);\n });\n //\tText\n if (options.text) {\n //\tAdd aria-hidden to titles in navbars\n if (this.opts.navbar.titleLink == 'parent') {\n this.bind('initNavbar:after', function (panel) {\n /** The navbar in the panel. */\n var navbar = DOM.children(panel, '.mm-navbar')[0];\n /** Whether or not the navbar should be considered \"hidden\". */\n var hidden = navbar.querySelector('.mm-btn_prev')\n ? true\n : false;\n //\tSet the navbar-title to be considered \"hidden\" or \"visible\".\n Mmenu.sr_aria(DOM.find(navbar, '.mm-navbar__title')[0], 'hidden', hidden);\n });\n }\n }\n }\n //\tAdd screenreader text\n if (options.text) {\n //\tAdd screenreader / text hooks for add-ons\n //\tIn orde to keep this list short, only extend hooks that are actually used by other add-ons.\n this.bind('initAddons:after', function () {\n _this.bind('setPage:after', function () {\n this.trigger('setPage:after:sr-text', [].slice.call(arguments));\n });\n _this.bind('initBlocker:after', function () {\n this.trigger('initBlocker:after:sr-text', [].slice.call(arguments));\n });\n });\n //\tAdd text to the prev-buttons.\n this.bind('initNavbar:after', function (panel) {\n var navbar = DOM.children(panel, '.mm-navbar')[0];\n if (navbar) {\n var button = DOM.children(navbar, '.mm-btn_prev')[0];\n if (button) {\n button.innerHTML = Mmenu.sr_text(_this.i18n(configs.text.closeSubmenu));\n }\n }\n });\n //\tAdd text to the next-buttons.\n this.bind('initListview:after', function (listview) {\n var parent = listview.closest('.mm-panel')['mmParent'];\n if (parent) {\n var next = DOM.children(parent, '.mm-btn_next')[0];\n if (next) {\n var text = _this.i18n(configs.text[next.parentElement.matches('.mm-listitem_vertical')\n ? 'toggleSubmenu'\n : 'openSubmenu']);\n next.innerHTML += Mmenu.sr_text(text);\n }\n }\n });\n }\n}\n//\tMethods\n(function () {\n var attr = function (element, attr, value) {\n element[attr] = value;\n if (value) {\n element.setAttribute(attr, value.toString());\n }\n else {\n element.removeAttribute(attr);\n }\n };\n /**\n * Add aria (property and) attribute to a HTML element.\n *\n * @param {HTMLElement} \telement\tThe node to add the attribute to.\n * @param {string}\t\t\tname\tThe (non-aria-prefixed) attribute name.\n * @param {string|boolean}\tvalue\tThe attribute value.\n */\n Mmenu.sr_aria = function (element, name, value) {\n attr(element, 'aria-' + name, value);\n };\n /**\n * Add role attribute to a HTML element.\n *\n * @param {HTMLElement}\t\telement\tThe node to add the attribute to.\n * @param {string|boolean}\tvalue\tThe attribute value.\n */\n Mmenu.sr_role = function (element, value) {\n attr(element, 'role', value);\n };\n /**\n * Wrap a text in a screen-reader-only node.\n *\n * @param \t{string} text\tThe text to wrap.\n * @return\t{string}\t\tThe wrapped text.\n */\n Mmenu.sr_text = function (text) {\n return '' + text + '';\n };\n})();\n","import { add } from '../../../_modules/i18n';\nimport nl from './nl';\nimport fa from './fa';\nimport de from './de';\nimport ru from './ru';\nexport default function () {\n add(nl, 'nl');\n add(fa, 'fa');\n add(de, 'de');\n add(ru, 'ru');\n}\n","export default {\n 'Close menu': 'Menu sluiten',\n 'Close submenu': 'Submenu sluiten',\n 'Open submenu': 'Submenu openen',\n 'Toggle submenu': 'Submenu wisselen'\n};\n","var options = {\n fix: true\n};\nexport default options;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (typeof options == 'boolean') {\n options = {\n fix: options\n };\n }\n if (typeof options != 'object') {\n options = {};\n }\n return options;\n}\n;\n","/** Whether or not touch gestures are supported by the browser. */\nexport var touch = 'ontouchstart' in window ||\n (navigator.msMaxTouchPoints ? true : false) ||\n false;\n","import Mmenu from './../oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport { extendShorthandOptions } from './_options';\nimport * as DOM from '../../_modules/dom';\nimport * as support from '../../_modules/support';\nimport { extend, touchDirection } from '../../_modules/helpers';\n// Add the options.\nMmenu.options.scrollBugFix = options;\nexport default function () {\n var _this = this;\n //\tThe scrollBugFix add-on fixes a scrolling bug\n //\t\t1) on touch devices\n //\t\t2) in an off-canvas menu\n //\t\t3) that -when opened- blocks the UI from interaction\n if (!support.touch || // 1\n !this.opts.offCanvas || // 2\n !this.opts.offCanvas.blockUI // 3\n ) {\n return;\n }\n //\tExtend options.\n var options = extendShorthandOptions(this.opts.scrollBugFix);\n this.opts.scrollBugFix = extend(options, Mmenu.options.scrollBugFix);\n if (!options.fix) {\n return;\n }\n var touchDir = touchDirection(this.node.menu);\n /**\n * Prevent an event from doing its default and stop its propagation.\n * @param {ScrollBehavior} evnt The event to stop.\n */\n function stop(evnt) {\n evnt.preventDefault();\n evnt.stopPropagation();\n }\n // Prevent the page from scrolling when scrolling in the menu.\n this.node.menu.addEventListener('scroll', stop, {\n // Make sure to tell the browser the event will be prevented.\n passive: false,\n });\n // Prevent the page from scrolling when dragging in the menu.\n this.node.menu.addEventListener('touchmove', function (evnt) {\n var wrapper = evnt.target.closest('.mm-panel, .mm-iconbar__top, .mm-iconbar__bottom');\n if (wrapper && wrapper.closest('.mm-listitem_vertical')) {\n wrapper = DOM.parents(wrapper, '.mm-panel').pop();\n }\n if (wrapper) {\n // When dragging a non-scrollable panel,\n // we can simple preventDefault and stopPropagation.\n if (wrapper.scrollHeight === wrapper.offsetHeight) {\n stop(evnt);\n }\n // When dragging a scrollable panel,\n // that is fully scrolled up (or down).\n // It will not trigger the scroll event when dragging down (or up) (because you can't scroll up (or down)),\n // so we need to match the dragging direction with the scroll position before preventDefault and stopPropagation,\n // otherwise the panel would not scroll at all in any direction.\n else if (\n // When scrolled up and dragging down\n (wrapper.scrollTop == 0 && touchDir.get() == 'down') ||\n // When scrolled down and dragging up\n (wrapper.scrollHeight ==\n wrapper.scrollTop + wrapper.offsetHeight &&\n touchDir.get() == 'up')) {\n stop(evnt);\n }\n // When dragging anything other than a panel.\n }\n else {\n stop(evnt);\n }\n }, {\n // Make sure to tell the browser the event can be prevented.\n passive: false,\n });\n // Some small additional improvements\n //\tScroll the current opened panel to the top when opening the menu.\n this.bind('open:start', function () {\n var panel = DOM.children(_this.node.pnls, '.mm-panel_opened')[0];\n if (panel) {\n panel.scrollTop = 0;\n }\n });\n //\tFix issue after device rotation change.\n window.addEventListener('orientationchange', function (evnt) {\n var panel = DOM.children(_this.node.pnls, '.mm-panel_opened')[0];\n if (panel) {\n panel.scrollTop = 0;\n //\tApparently, changing the overflow-scrolling property triggers some event :)\n panel.style['-webkit-overflow-scrolling'] = 'auto';\n panel.style['-webkit-overflow-scrolling'] = 'touch';\n }\n });\n}\n","var opts = {\n height: 'default'\n};\nexport default opts;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (typeof options == 'boolean' && options) {\n options = {\n height: 'auto'\n };\n }\n if (typeof options == 'string') {\n options = {\n height: options\n };\n }\n if (typeof options != 'object') {\n options = {};\n }\n return options;\n}\n;\n","import Mmenu from './../../core/oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport { extendShorthandOptions } from './_options';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\n//\tAdd the options.\nMmenu.options.autoHeight = options;\nexport default function () {\n var _this = this;\n var options = extendShorthandOptions(this.opts.autoHeight);\n this.opts.autoHeight = extend(options, Mmenu.options.autoHeight);\n if (options.height != 'auto' && options.height != 'highest') {\n return;\n }\n var setHeight = (function () {\n var getCurrent = function () {\n var panel = DOM.children(_this.node.pnls, '.mm-panel_opened')[0];\n if (panel) {\n panel = measurablePanel(panel);\n }\n //\tFallback, just to be sure we have a panel.\n if (!panel) {\n panel = DOM.children(_this.node.pnls, '.mm-panel')[0];\n }\n return panel.scrollHeight;\n };\n var getHighest = function () {\n var highest = 0;\n DOM.children(_this.node.pnls, '.mm-panel').forEach(function (panel) {\n panel = measurablePanel(panel);\n highest = Math.max(highest, panel.scrollHeight);\n });\n return highest;\n };\n var measurablePanel = function (panel) {\n //\tIf it's a vertically expanding panel...\n if (panel.parentElement.matches('.mm-listitem_vertical')) {\n //\t...find the first parent panel that isn't.\n panel = DOM.parents(panel, '.mm-panel').filter(function (panel) {\n return !panel.parentElement.matches('.mm-listitem_vertical');\n })[0];\n }\n return panel;\n };\n return function () {\n if (_this.opts.offCanvas && !_this.vars.opened) {\n return;\n }\n var _hgh = 0;\n var _dif = _this.node.menu.offsetHeight - _this.node.pnls.offsetHeight;\n //\tThe \"measuring\" classname undoes some CSS to be able to measure the height.\n _this.node.menu.classList.add('mm-menu_autoheight-measuring');\n //\tMeasure the height.\n if (options.height == 'auto') {\n _hgh = getCurrent();\n }\n else if (options.height == 'highest') {\n _hgh = getHighest();\n }\n //\tSet the height.\n _this.node.menu.style.height = _hgh + _dif + 'px';\n //\tRemove the \"measuring\" classname.\n _this.node.menu.classList.remove('mm-menu_autoheight-measuring');\n };\n })();\n //\tAdd the autoheight class to the menu.\n this.bind('initMenu:after', function () {\n _this.node.menu.classList.add('mm-menu_autoheight');\n });\n if (this.opts.offCanvas) {\n //\tMeasure the height when opening the off-canvas menu.\n this.bind('open:start', setHeight);\n }\n if (options.height == 'highest') {\n //\tMeasure the height when initiating panels.\n this.bind('initPanels:after', setHeight);\n }\n if (options.height == 'auto') {\n //\tMeasure the height when updating listviews.\n this.bind('updateListview', setHeight);\n //\tMeasure the height when opening a panel.\n this.bind('openPanel:start', setHeight);\n }\n}\n","var options = {\n close: false,\n open: false\n};\nexport default options;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (typeof options == 'boolean') {\n options = {\n close: options\n };\n }\n if (typeof options != 'object') {\n options = {};\n }\n return options;\n}\n;\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport { extendShorthandOptions } from './_options';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\n//\tAdd the options.\nMmenu.options.backButton = options;\nexport default function () {\n var _this = this;\n if (!this.opts.offCanvas) {\n return;\n }\n var options = extendShorthandOptions(this.opts.backButton);\n this.opts.backButton = extend(options, Mmenu.options.backButton);\n var _menu = '#' + this.node.menu.id;\n //\tClose menu\n if (options.close) {\n var states = [];\n var setStates = function () {\n states = [_menu];\n DOM.children(_this.node.pnls, '.mm-panel_opened, .mm-panel_opened-parent').forEach(function (panel) {\n states.push('#' + panel.id);\n });\n };\n this.bind('open:finish', function () {\n history.pushState(null, document.title, _menu);\n });\n this.bind('open:finish', setStates);\n this.bind('openPanel:finish', setStates);\n this.bind('close:finish', function () {\n states = [];\n history.back();\n history.pushState(null, document.title, location.pathname + location.search);\n });\n window.addEventListener('popstate', function (evnt) {\n if (_this.vars.opened) {\n if (states.length) {\n states = states.slice(0, -1);\n var hash = states[states.length - 1];\n if (hash == _menu) {\n _this.close();\n }\n else {\n _this.openPanel(_this.node.menu.querySelector(hash));\n history.pushState(null, document.title, _menu);\n }\n }\n }\n });\n }\n if (options.open) {\n window.addEventListener('popstate', function (evnt) {\n if (!_this.vars.opened && location.hash == _menu) {\n _this.open();\n }\n });\n }\n}\n","var options = {\n add: false,\n visible: {\n min: 1,\n max: 3\n }\n};\nexport default options;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (typeof options == 'boolean') {\n options = {\n add: options\n };\n }\n if (typeof options == 'number') {\n options = {\n add: true,\n visible: options\n };\n }\n if (typeof options != 'object') {\n options = {};\n }\n if (typeof options.visible == 'number') {\n options.visible = {\n min: options.visible,\n max: options.visible\n };\n }\n return options;\n}\n;\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport { extendShorthandOptions } from './_options';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\n//\tAdd the options.\nMmenu.options.columns = options;\nexport default function () {\n var _this = this;\n var options = extendShorthandOptions(this.opts.columns);\n this.opts.columns = extend(options, Mmenu.options.columns);\n //\tAdd the columns\n if (options.add) {\n options.visible.min = Math.max(1, Math.min(6, options.visible.min));\n options.visible.max = Math.max(options.visible.min, Math.min(6, options.visible.max));\n /** Columns related clasnames for the menu. */\n var colm = [];\n /** Columns related clasnames for the panels. */\n var colp = [];\n /** Classnames to remove from panels in favor of showing columns. */\n var rmvc = [\n 'mm-panel_opened',\n 'mm-panel_opened-parent',\n 'mm-panel_highest',\n ];\n for (var i = 0; i <= options.visible.max; i++) {\n colm.push('mm-menu_columns-' + i);\n colp.push('mm-panel_columns-' + i);\n }\n rmvc.push.apply(rmvc, colp);\n //\tClose all later opened panels\n this.bind('openPanel:before', function (panel) {\n /** The parent panel. */\n var parent;\n if (panel) {\n parent = panel['mmParent'];\n }\n if (!parent) {\n return;\n }\n if (parent.classList.contains('mm-listitem_vertical')) {\n return;\n }\n parent = parent.closest('.mm-panel');\n if (!parent) {\n return;\n }\n var classname = parent.className;\n if (!classname.length) {\n return;\n }\n classname = classname.split('mm-panel_columns-')[1];\n if (!classname) {\n return;\n }\n var colnr = parseInt(classname.split(' ')[0], 10) + 1;\n while (colnr > 0) {\n panel = DOM.children(_this.node.pnls, '.mm-panel_columns-' + colnr)[0];\n if (panel) {\n colnr++;\n panel.classList.add('mm-hidden');\n // IE11:\n rmvc.forEach(function (classname) {\n panel.classList.remove(classname);\n });\n // Better browsers:\n // panel.classList.remove(...rmvc);\n }\n else {\n colnr = -1;\n break;\n }\n }\n });\n this.bind('openPanel:start', function (panel) {\n if (panel) {\n /** The parent panel. */\n var parent_1 = panel['mmParent'];\n if (parent_1 &&\n parent_1.classList.contains('mm-listitem_vertical')) {\n return;\n }\n }\n var columns = DOM.children(_this.node.pnls, '.mm-panel_opened-parent').length;\n if (!panel.matches('.mm-panel_opened-parent')) {\n columns++;\n }\n columns = Math.min(options.visible.max, Math.max(options.visible.min, columns));\n // IE11:\n colm.forEach(function (classname) {\n _this.node.menu.classList.remove(classname);\n });\n // Better browsers:\n // this.node.menu.classList.remove(...colm);\n _this.node.menu.classList.add('mm-menu_columns-' + columns);\n var panels = [];\n DOM.children(_this.node.pnls, '.mm-panel').forEach(function (panel) {\n // IE11:\n colp.forEach(function (classname) {\n panel.classList.remove(classname);\n });\n // Better browsers:\n // panel.classList.remove(...colp);\n if (panel.matches('.mm-panel_opened-parent')) {\n panels.push(panel);\n }\n });\n panels.push(panel);\n panels.slice(-options.visible.max).forEach(function (panel, p) {\n panel.classList.add('mm-panel_columns-' + p);\n });\n });\n }\n}\n","var options = {\n add: false,\n addTo: 'panels',\n count: false\n};\nexport default options;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (typeof options == 'boolean') {\n options = {\n add: options,\n addTo: 'panels',\n count: options\n };\n }\n if (typeof options != 'object') {\n options = {};\n }\n if (options.addTo == 'panels') {\n options.addTo = '.mm-listview';\n }\n return options;\n}\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport { extendShorthandOptions } from './_options';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\n//\tAdd the options.\nMmenu.options.counters = options;\n//\tAdd the classnames.\nMmenu.configs.classNames.counters = {\n counter: 'Counter',\n};\nexport default function () {\n var _this = this;\n var options = extendShorthandOptions(this.opts.counters);\n this.opts.counters = extend(options, Mmenu.options.counters);\n //\tRefactor counter class\n this.bind('initListview:after', function (listview) {\n var cntrclss = _this.conf.classNames.counters.counter, counters = DOM.find(listview, '.' + cntrclss);\n counters.forEach(function (counter) {\n DOM.reClass(counter, cntrclss, 'mm-counter');\n });\n });\n //\tAdd the counters after a listview is initiated.\n if (options.add) {\n this.bind('initListview:after', function (listview) {\n if (!listview.matches(options.addTo)) {\n return;\n }\n var parent = listview.closest('.mm-panel')['mmParent'];\n if (parent) {\n //\tCheck if no counter already excists.\n if (!DOM.find(parent, '.mm-counter').length) {\n var btn = DOM.children(parent, '.mm-btn')[0];\n if (btn) {\n btn.prepend(DOM.create('span.mm-counter'));\n }\n }\n }\n });\n }\n if (options.count) {\n var count = function (listview) {\n var panels = listview\n ? [listview.closest('.mm-panel')]\n : DOM.children(_this.node.pnls, '.mm-panel');\n panels.forEach(function (panel) {\n var parent = panel['mmParent'];\n if (!parent) {\n return;\n }\n var counter = DOM.find(parent, '.mm-counter')[0];\n if (!counter) {\n return;\n }\n var listitems = [];\n DOM.children(panel, '.mm-listview').forEach(function (listview) {\n listitems.push.apply(listitems, DOM.children(listview));\n });\n counter.innerHTML = DOM.filterLI(listitems).length.toString();\n });\n };\n this.bind('initListview:after', count);\n this.bind('updateListview', count);\n }\n}\n","var options = {\n add: false,\n addTo: 'panels'\n};\nexport default options;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (typeof options == 'boolean') {\n options = {\n add: options\n };\n }\n if (typeof options != 'object') {\n options = {};\n }\n if (options.addTo == 'panels') {\n options.addTo = '.mm-listview';\n }\n return options;\n}\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport { extendShorthandOptions } from './_options';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\n//\tAdd the options.\nMmenu.options.dividers = options;\n// Add the classnames.\nMmenu.configs.classNames.divider = 'Divider';\nexport default function () {\n var _this = this;\n var options = extendShorthandOptions(this.opts.dividers);\n this.opts.dividers = extend(options, Mmenu.options.dividers);\n //\tRefactor divider classname\n this.bind('initListview:after', function (listview) {\n DOM.children(listview).forEach(function (listitem) {\n DOM.reClass(listitem, _this.conf.classNames.divider, 'mm-divider');\n if (listitem.matches('.mm-divider')) {\n listitem.classList.remove('mm-listitem');\n }\n });\n });\n //\tAdd dividers\n if (options.add) {\n this.bind('initListview:after', function (listview) {\n if (!listview.matches(options.addTo)) {\n return;\n }\n DOM.find(listview, '.mm-divider').forEach(function (divider) {\n divider.remove();\n });\n var lastletter = '', listitems = DOM.children(listview);\n DOM.filterLI(listitems).forEach(function (listitem) {\n var letter = DOM.children(listitem, '.mm-listitem__text')[0]\n .textContent.trim()\n .toLowerCase()[0];\n if (letter.length && letter != lastletter) {\n lastletter = letter;\n var divider = DOM.create('li.mm-divider');\n divider.textContent = letter;\n listview.insertBefore(divider, listitem);\n }\n });\n });\n }\n}\n","var options = {\n open: false,\n node: null\n};\nexport default options;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (typeof options == 'boolean') {\n options = {\n open: options\n };\n }\n if (typeof options != 'object') {\n options = {};\n }\n return options;\n}\n","/** Whether or not touch gestures are supported by the browser. */\nexport var touch = 'ontouchstart' in window ||\n (navigator.msMaxTouchPoints ? true : false) ||\n false;\n","/** How far from the sides the gesture can start. */\nexport var area = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\n/** Tresholds for gestures. */\nexport var treshold = {\n start: 15,\n swipe: 15\n};\n","/** Names of the possible directions. */\nexport var directionNames = {\n x: ['Right', 'Left'],\n y: ['Down', 'Up']\n};\n/** States for the gesture. */\nexport var state = {\n inactive: 0,\n watching: 1,\n dragging: 2\n};\n","/**\n * Calculate a distance from a percentage.\n * @param {string|number} position The percentage (e.g. \"75%\").\n * @param {number} size The available width or height in pixels.\n * @return {number} The calculated distance.\n */\nexport var percentage2number = function (position, size) {\n if (typeof position == 'string') {\n if (position.slice(-1) == '%') {\n position = parseInt(position.slice(0, -1), 10);\n position = size * (position / 100);\n }\n }\n return position;\n};\n","import * as support from './_support';\nimport * as options from './_defaults';\nimport * as settings from './_settings';\nimport { percentage2number } from './_helpers';\nimport { extend } from '../helpers';\nvar DragEvents = /** @class */ (function () {\n /**\n * Create the gestures.\n * @param {HTMLElement} surface The surface for the gesture.\n * @param {object} area Restriction where on the surface the gesture can be started.\n * @param {object} treshold Treshold for the gestures.\n */\n function DragEvents(surface, area, treshold) {\n this.surface = surface;\n this.area = extend(area, options.area);\n this.treshold = extend(treshold, options.treshold);\n //\tSet the mouse/touch events.\n if (!this.surface['mmHasDragEvents']) {\n this.surface.addEventListener(support.touch ? 'touchstart' : 'mousedown', this.start.bind(this));\n this.surface.addEventListener(support.touch ? 'touchend' : 'mouseup', this.stop.bind(this));\n this.surface.addEventListener(support.touch ? 'touchleave' : 'mouseleave', this.stop.bind(this));\n this.surface.addEventListener(support.touch ? 'touchmove' : 'mousemove', this.move.bind(this));\n }\n this.surface['mmHasDragEvents'] = true;\n }\n /**\n * Starting the touch gesture.\n * @param {Event} event The touch event.\n */\n DragEvents.prototype.start = function (event) {\n this.currentPosition = {\n x: event.touches ? event.touches[0].pageX : event.pageX || 0,\n y: event.touches ? event.touches[0].pageY : event.pageY || 0\n };\n /** The widht of the surface. */\n var width = this.surface.clientWidth;\n /** The height of the surface. */\n var height = this.surface.clientHeight;\n // Check if the gesture started below the area.top.\n var top = percentage2number(this.area.top, height);\n if (typeof top == 'number') {\n if (this.currentPosition.y < top) {\n return;\n }\n }\n // Check if the gesture started before the area.right.\n var right = percentage2number(this.area.right, width);\n if (typeof right == 'number') {\n right = width - right;\n if (this.currentPosition.x > right) {\n return;\n }\n }\n // Check if the gesture started above the area.bottom.\n var bottom = percentage2number(this.area.bottom, height);\n if (typeof bottom == 'number') {\n bottom = height - bottom;\n if (this.currentPosition.y > bottom) {\n return;\n }\n }\n // Check if the gesture started after the area.left.\n var left = percentage2number(this.area.left, width);\n if (typeof left == 'number') {\n if (this.currentPosition.x < left) {\n return;\n }\n }\n //\tStore the start x- and y-position.\n this.startPosition = {\n x: this.currentPosition.x,\n y: this.currentPosition.y\n };\n //\tSet the state of the gesture to \"watching\".\n this.state = settings.state.watching;\n };\n /**\n * Stopping the touch gesture.\n * @param {Event} event The touch event.\n */\n DragEvents.prototype.stop = function (event) {\n //\tDispatch the \"dragEnd\" events.\n if (this.state == settings.state.dragging) {\n /** The direction. */\n var dragDirection = this._dragDirection();\n /** The event information. */\n var detail = this._eventDetail(dragDirection);\n this._dispatchEvents('drag*End', detail);\n //\tDispatch the \"swipe\" events.\n if (Math.abs(this.movement[this.axis]) > this.treshold.swipe) {\n /** The direction. */\n var swipeDirection = this._swipeDirection();\n detail.direction = swipeDirection;\n this._dispatchEvents('swipe*', detail);\n }\n }\n //\tSet the state of the gesture to \"inactive\".\n this.state = settings.state.inactive;\n };\n /**\n * Doing the touch gesture.\n * @param {Event} event The touch event.\n */\n DragEvents.prototype.move = function (event) {\n switch (this.state) {\n case settings.state.watching:\n case settings.state.dragging:\n var position = {\n x: event.changedTouches\n ? event.touches[0].pageX\n : event.pageX || 0,\n y: event.changedTouches\n ? event.touches[0].pageY\n : event.pageY || 0\n };\n this.movement = {\n x: position.x - this.currentPosition.x,\n y: position.y - this.currentPosition.y\n };\n this.distance = {\n x: position.x - this.startPosition.x,\n y: position.y - this.startPosition.y\n };\n this.currentPosition = {\n x: position.x,\n y: position.y\n };\n this.axis =\n Math.abs(this.distance.x) > Math.abs(this.distance.y)\n ? 'x'\n : 'y';\n /** The direction. */\n var dragDirection = this._dragDirection();\n /** The event information. */\n var detail = this._eventDetail(dragDirection);\n //\tWatching for the gesture to go past the treshold.\n if (this.state == settings.state.watching) {\n if (Math.abs(this.distance[this.axis]) > this.treshold.start) {\n this._dispatchEvents('drag*Start', detail);\n //\tSet the state of the gesture to \"inactive\".\n this.state = settings.state.dragging;\n }\n }\n //\tDispatch the \"drag\" events.\n if (this.state == settings.state.dragging) {\n this._dispatchEvents('drag*Move', detail);\n }\n break;\n }\n };\n /**\n * Get the event details.\n * @param {string} direction Direction for the event (up, right, down, left).\n * @return {object} The event details.\n */\n DragEvents.prototype._eventDetail = function (direction) {\n var distX = this.distance.x;\n var distY = this.distance.y;\n if (this.axis == 'x') {\n distX -= distX > 0 ? this.treshold.start : 0 - this.treshold.start;\n }\n if (this.axis == 'y') {\n distY -= distY > 0 ? this.treshold.start : 0 - this.treshold.start;\n }\n return {\n axis: this.axis,\n direction: direction,\n movementX: this.movement.x,\n movementY: this.movement.y,\n distanceX: distX,\n distanceY: distY\n };\n };\n /**\n * Dispatch the events\n * @param {string} eventName The name for the events to dispatch.\n * @param {object} detail The event details.\n */\n DragEvents.prototype._dispatchEvents = function (eventName, detail) {\n /** General event, e.g. \"drag\" */\n var event = new CustomEvent(eventName.replace('*', ''), { detail: detail });\n this.surface.dispatchEvent(event);\n /** Axis event, e.g. \"dragX\" */\n var axis = new CustomEvent(eventName.replace('*', this.axis.toUpperCase()), { detail: detail });\n this.surface.dispatchEvent(axis);\n /** Direction event, e.g. \"dragLeft\" */\n var direction = new CustomEvent(eventName.replace('*', detail.direction), {\n detail: detail\n });\n this.surface.dispatchEvent(direction);\n };\n /**\n * Get the dragging direction.\n * @return {string} The direction in which the user is dragging.\n */\n DragEvents.prototype._dragDirection = function () {\n return settings.directionNames[this.axis][this.distance[this.axis] > 0 ? 0 : 1];\n };\n /**\n * Get the dragging direction.\n * @return {string} The direction in which the user is dragging.\n */\n DragEvents.prototype._swipeDirection = function () {\n return settings.directionNames[this.axis][this.movement[this.axis] > 0 ? 0 : 1];\n };\n return DragEvents;\n}());\nexport default DragEvents;\n","import DragEvents from '../../_modules/dragevents/index';\nimport * as DOM from '../../_modules/dom';\nimport * as events from '../../_modules/eventlisteners';\nimport * as media from '../../_modules/matchmedia';\n/** Instance of the DragEvents class. */\nvar dragInstance = null;\n/** THe node that can be dragged. */\nvar dragNode = null;\n/** How far the page (or menu) can be dragged. */\nvar maxDistance = 0;\nexport default function (page) {\n var _this = this;\n /** Variables that vary for each menu position (top, right, bottom, left. front, back). */\n var vars = {};\n /** Whether or not the page or menu is actually being moved. */\n var moving = false;\n /**\n * Add the dragging events.\n */\n var addEvents = function () {\n if (dragNode) {\n // Prepare the page or menu to be moved.\n events.on(dragNode, 'dragStart', function (evnt) {\n if (evnt['detail'].direction == vars.direction) {\n moving = true;\n // Class prevents interaction with the page.\n _this.node.wrpr.classList.add('mm-wrapper_dragging');\n // Prepare the menu to be opened.\n _this._openSetup();\n _this.trigger('open:start');\n // Get the maximum distance to move out the page or menu.\n maxDistance = _this.node.menu[vars.axis == 'x' ? 'clientWidth' : 'clientHeight'];\n }\n });\n // Move the page or menu when dragging.\n events.on(dragNode, 'dragMove', function (evnt) {\n if (evnt['detail'].axis == vars.axis) {\n if (moving) {\n var distance = evnt['detail']['distance' + vars.axis.toUpperCase()];\n switch (vars.position) {\n case 'right':\n case 'bottom':\n distance = Math.min(Math.max(distance, -maxDistance), 0);\n break;\n default:\n distance = Math.max(Math.min(distance, maxDistance), 0);\n }\n // Deviate for position front (the menu starts out of view).\n if (vars.zposition == 'front') {\n switch (vars.position) {\n case 'right':\n case 'bottom':\n distance += maxDistance;\n break;\n default:\n distance -= maxDistance;\n break;\n }\n }\n vars.slideOutNodes.forEach(function (node) {\n node.style['transform'] =\n 'translate' +\n vars.axis.toUpperCase() +\n '(' +\n distance +\n 'px)';\n });\n }\n }\n });\n // Stop the page or menu from being moved.\n events.on(dragNode, 'dragEnd', function (evnt) {\n if (evnt['detail'].axis == vars.axis) {\n if (moving) {\n moving = false;\n _this.node.wrpr.classList.remove('mm-wrapper_dragging');\n vars.slideOutNodes.forEach(function (node) {\n node.style['transform'] = '';\n });\n // Determine if the menu should open or close.\n var open_1 = Math.abs(evnt['detail']['distance' + vars.axis.toUpperCase()]) >=\n maxDistance * 0.75;\n if (!open_1) {\n var movement = evnt['detail']['movement' + vars.axis.toUpperCase()];\n switch (vars.position) {\n case 'right':\n case 'bottom':\n open_1 = movement <= 0;\n break;\n default:\n open_1 = movement >= 0;\n break;\n }\n }\n if (open_1) {\n _this._openStart();\n }\n else {\n _this.close();\n }\n }\n }\n });\n }\n };\n /**\n * Remove the dragging events.\n */\n var removeEvents = function () {\n if (dragNode) {\n events.off(dragNode, 'dragStart');\n events.off(dragNode, 'dragMove');\n events.off(dragNode, 'dragEnd');\n }\n };\n var addMatchMedia = function () {\n var queries = Object.keys(_this.opts.extensions);\n if (queries.length) {\n // A media query that'll match if any of the other media query matches:\n // set the defaults if it doesn't match.\n media.add(queries.join(', '), function () { }, function () {\n vars = getPositionVars(vars, [], _this.node.menu);\n });\n // The other media queries.\n queries.forEach(function (query) {\n media.add(query, function () {\n vars = getPositionVars(vars, _this.opts.extensions[query], _this.node.menu);\n }, function () { });\n });\n // No extensions, just use the defaults.\n }\n else {\n vars = getPositionVars(vars, [], _this.node.menu);\n }\n };\n // Remove events from previous \"page\"\n removeEvents();\n // Store new \"page\"\n dragNode = page;\n // Initialize the drag events.\n dragInstance = new DragEvents(dragNode);\n addMatchMedia();\n addMatchMedia = function () { };\n addEvents();\n}\nvar getPositionVars = function (vars, extensions, menu) {\n // Default position and z-position.\n vars.position = 'left';\n vars.zposition = 'back';\n // Find position.\n ['right', 'top', 'bottom'].forEach(function (pos) {\n if (extensions.indexOf('position-' + pos) > -1) {\n vars.position = pos;\n }\n });\n // Find z-position.\n ['front', 'top', 'bottom'].forEach(function (pos) {\n if (extensions.indexOf('position-' + pos) > -1) {\n vars.zposition = 'front';\n }\n });\n // Set the area where the dragging can start.\n dragInstance.area = {\n top: vars.position == 'bottom' ? '75%' : 0,\n right: vars.position == 'left' ? '75%' : 0,\n bottom: vars.position == 'top' ? '75%' : 0,\n left: vars.position == 'right' ? '75%' : 0\n };\n // What side of the menu to measure (width or height).\n // What axis to drag the menu along (x or y).\n switch (vars.position) {\n case 'top':\n case 'bottom':\n vars.axis = 'y';\n break;\n default:\n vars.axis = 'x';\n }\n // What direction to drag in.\n switch (vars.position) {\n case 'top':\n vars.direction = 'Down';\n break;\n case 'right':\n vars.direction = 'Left';\n break;\n case 'bottom':\n vars.direction = 'Up';\n break;\n default:\n vars.direction = 'Right';\n }\n // What nodes to slide out while dragging.\n switch (vars.zposition) {\n case 'front':\n vars.slideOutNodes = [menu];\n break;\n default:\n vars.slideOutNodes = DOM.find(document.body, '.mm-slideout');\n }\n return vars;\n};\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport { extendShorthandOptions } from './_options';\nimport dragOpen from './_drag.open';\nimport { extend } from '../../_modules/helpers';\n//\tAdd the options and configs.\nMmenu.options.drag = options;\nexport default function () {\n var _this = this;\n if (!this.opts.offCanvas) {\n return;\n }\n var options = extendShorthandOptions(this.opts.drag);\n this.opts.drag = extend(options, Mmenu.options.drag);\n //\tDrag open the menu\n if (options.open) {\n this.bind('setPage:after', function (page) {\n dragOpen.call(_this, options.node || page);\n });\n }\n}\n","var options = {\n drop: false,\n fitViewport: true,\n event: 'click',\n position: {},\n tip: true\n};\nexport default options;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (typeof options == 'boolean' && options) {\n options = {\n drop: options\n };\n }\n if (typeof options != 'object') {\n options = {};\n }\n if (typeof options.position == 'string') {\n options.position = {\n of: options.position\n };\n }\n return options;\n}\n;\n","var configs = {\n offset: {\n button: {\n x: -5,\n y: 5\n },\n viewport: {\n x: 20,\n y: 20\n }\n },\n height: {\n max: 880\n },\n width: {\n max: 440\n }\n};\nexport default configs;\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport configs from './_configs';\nimport { extendShorthandOptions } from './_options';\nimport * as DOM from '../../_modules/dom';\nimport { extend, originalId } from '../../_modules/helpers';\n//\tAdd the options and configs.\nMmenu.options.dropdown = options;\nMmenu.configs.dropdown = configs;\nexport default function () {\n var _this = this;\n if (!this.opts.offCanvas) {\n return;\n }\n var options = extendShorthandOptions(this.opts.dropdown);\n this.opts.dropdown = extend(options, Mmenu.options.dropdown);\n var configs = this.conf.dropdown;\n if (!options.drop) {\n return;\n }\n var button;\n this.bind('initMenu:after', function () {\n _this.node.menu.classList.add('mm-menu_dropdown');\n if (typeof options.position.of != 'string') {\n var id = originalId(_this.node.menu.id);\n if (id) {\n options.position.of = '[href=\"#' + id + '\"]';\n }\n }\n if (typeof options.position.of != 'string') {\n return;\n }\n //\tGet the button to put the menu next to\n button = DOM.find(document.body, options.position.of)[0];\n //\tEmulate hover effect\n var events = options.event.split(' ');\n if (events.length == 1) {\n events[1] = events[0];\n }\n if (events[0] == 'hover') {\n button.addEventListener('mouseenter', function () {\n _this.open();\n }, { passive: true });\n }\n if (events[1] == 'hover') {\n _this.node.menu.addEventListener('mouseleave', function () {\n _this.close();\n }, { passive: true });\n }\n });\n //\tAdd/remove classname and style when opening/closing the menu\n this.bind('open:start', function () {\n _this.node.menu['mmStyle'] = _this.node.menu.getAttribute('style');\n _this.node.wrpr.classList.add('mm-wrapper_dropdown');\n });\n this.bind('close:finish', function () {\n _this.node.menu.setAttribute('style', _this.node.menu['mmStyle']);\n _this.node.wrpr.classList.remove('mm-wrapper_dropdown');\n });\n /**\n * Find the position (x, y) and sizes (width, height) for the menu.\n *\n * @param {string} dir The direction to measure (\"x\" for horizontal, \"y\" for vertical)\n * @param {object} obj The object where (previously) measured values are stored.\n * @return {object}\t\tThe object where measered values are stored.\n */\n var getPosition = function (dir, obj) {\n var css = obj[0], cls = obj[1];\n var _outerSize = dir == 'x' ? 'offsetWidth' : 'offsetHeight', _startPos = dir == 'x' ? 'left' : 'top', _stopPos = dir == 'x' ? 'right' : 'bottom', _size = dir == 'x' ? 'width' : 'height', _winSize = dir == 'x' ? 'innerWidth' : 'innerHeight', _maxSize = dir == 'x' ? 'maxWidth' : 'maxHeight', _position = null;\n var startPos = DOM.offset(button, _startPos), stopPos = startPos + button[_outerSize], windowSize = window[_winSize];\n /** Offset for the menu relative to the button. */\n var offs = configs.offset.button[dir] + configs.offset.viewport[dir];\n //\tPosition set in option\n if (options.position[dir]) {\n switch (options.position[dir]) {\n case 'left':\n case 'bottom':\n _position = 'after';\n break;\n case 'right':\n case 'top':\n _position = 'before';\n break;\n }\n }\n //\tPosition not set in option, find most space\n if (_position === null) {\n _position =\n startPos + (stopPos - startPos) / 2 < windowSize / 2\n ? 'after'\n : 'before';\n }\n //\tSet position and max\n var val, max;\n if (_position == 'after') {\n val = dir == 'x' ? startPos : stopPos;\n max = windowSize - (val + offs);\n css[_startPos] = val + configs.offset.button[dir] + 'px';\n css[_stopPos] = 'auto';\n if (options.tip) {\n cls.push('mm-menu_tip-' + (dir == 'x' ? 'left' : 'top'));\n }\n }\n else {\n val = dir == 'x' ? stopPos : startPos;\n max = val - offs;\n css[_stopPos] =\n 'calc( 100% - ' + (val - configs.offset.button[dir]) + 'px )';\n css[_startPos] = 'auto';\n if (options.tip) {\n cls.push('mm-menu_tip-' + (dir == 'x' ? 'right' : 'bottom'));\n }\n }\n if (options.fitViewport) {\n css[_maxSize] = Math.min(configs[_size].max, max) + 'px';\n }\n return [css, cls];\n };\n function position() {\n var _this = this;\n if (!this.vars.opened) {\n return;\n }\n this.node.menu.setAttribute('style', this.node.menu['mmStyle']);\n var obj = [{}, []];\n obj = getPosition.call(this, 'y', obj);\n obj = getPosition.call(this, 'x', obj);\n for (var s in obj[0]) {\n this.node.menu.style[s] = obj[0][s];\n }\n if (options.tip) {\n var classnames = [\n 'mm-menu_tip-left',\n 'mm-menu_tip-right',\n 'mm-menu_tip-top',\n 'mm-menu_tip-bottom'\n ];\n // IE11:\n classnames.forEach(function (classname) {\n _this.node.menu.classList.remove(classname);\n });\n obj[1].forEach(function (classname) {\n _this.node.menu.classList.add(classname);\n });\n // Better browsers:\n // this.node.menu.classList.remove(...classnames);\n // this.node.menu.classList.add(...obj[1]);\n }\n }\n this.bind('open:start', position);\n window.addEventListener('resize', function (evnt) {\n position.call(_this);\n }, { passive: true });\n if (!this.opts.offCanvas.blockUI) {\n window.addEventListener('scroll', function (evnt) {\n position.call(_this);\n }, { passive: true });\n }\n}\n","var configs = {\n insertMethod: 'append',\n insertSelector: 'body'\n};\nexport default configs;\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport configs from './_configs';\nimport * as DOM from '../../_modules/dom';\n//\tAdd the configs.\nMmenu.configs.fixedElements = configs;\n//\tAdd the classnames.\nMmenu.configs.classNames.fixedElements = {\n fixed: 'Fixed'\n};\nexport default function () {\n var _this = this;\n if (!this.opts.offCanvas) {\n return;\n }\n var configs = this.conf.fixedElements;\n var _fixd, fixed, wrppr;\n this.bind('setPage:after', function (page) {\n _fixd = _this.conf.classNames.fixedElements.fixed;\n wrppr = DOM.find(document, configs.insertSelector)[0];\n fixed = DOM.find(page, '.' + _fixd);\n fixed.forEach(function (fxd) {\n DOM.reClass(fxd, _fixd, 'mm-slideout');\n wrppr[configs.insertMethod](fxd);\n });\n });\n}\n","import { type } from '../../_modules/helpers';\nvar options = {\n use: false,\n top: [],\n bottom: [],\n position: 'left',\n type: 'default'\n};\nexport default options;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (type(options) == 'array') {\n options = {\n use: true,\n top: options\n };\n }\n if (type(options) != 'object') {\n options = {};\n }\n if (typeof options.use == 'undefined') {\n options.use = true;\n }\n if (typeof options.use == 'boolean' && options.use) {\n options.use = true;\n }\n return options;\n}\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport { extendShorthandOptions } from './_options';\nimport * as DOM from '../../_modules/dom';\nimport * as media from '../../_modules/matchmedia';\nimport { type, extend } from '../../_modules/helpers';\n// Add the options.\nMmenu.options.iconbar = options;\nexport default function () {\n var _this = this;\n var options = extendShorthandOptions(this.opts.iconbar);\n this.opts.iconbar = extend(options, Mmenu.options.iconbar);\n if (!options.use) {\n return;\n }\n var iconbar;\n ['top', 'bottom'].forEach(function (position, n) {\n var ctnt = options[position];\n //\tExtend shorthand options\n if (type(ctnt) != 'array') {\n ctnt = [ctnt];\n }\n //\tCreate node\n var part = DOM.create('div.mm-iconbar__' + position);\n //\tAdd content\n for (var c = 0, l = ctnt.length; c < l; c++) {\n if (typeof ctnt[c] == 'string') {\n part.innerHTML += ctnt[c];\n }\n else {\n part.append(ctnt[c]);\n }\n }\n if (part.children.length) {\n if (!iconbar) {\n iconbar = DOM.create('div.mm-iconbar');\n }\n iconbar.append(part);\n }\n });\n //\tAdd to menu\n if (iconbar) {\n //\tAdd the iconbar.\n this.bind('initMenu:after', function () {\n _this.node.menu.prepend(iconbar);\n });\n //\tEn-/disable the iconbar.\n var classname_1 = 'mm-menu_iconbar-' + options.position;\n var enable = function () {\n _this.node.menu.classList.add(classname_1);\n Mmenu.sr_aria(iconbar, 'hidden', false);\n };\n var disable = function () {\n _this.node.menu.classList.remove(classname_1);\n Mmenu.sr_aria(iconbar, 'hidden', true);\n };\n if (typeof options.use == 'boolean') {\n this.bind('initMenu:after', enable);\n }\n else {\n media.add(options.use, enable, disable);\n }\n //\tTabs\n if (options.type == 'tabs') {\n iconbar.classList.add('mm-iconbar_tabs');\n iconbar.addEventListener('click', function (evnt) {\n var anchor = evnt.target;\n if (!anchor.matches('a')) {\n return;\n }\n if (anchor.matches('.mm-iconbar__tab_selected')) {\n evnt.stopImmediatePropagation();\n return;\n }\n try {\n var panel = _this.node.menu.querySelector(anchor.getAttribute('href'))[0];\n if (panel && panel.matches('.mm-panel')) {\n evnt.preventDefault();\n evnt.stopImmediatePropagation();\n _this.openPanel(panel, false);\n }\n }\n catch (err) { }\n });\n var selectTab_1 = function (panel) {\n DOM.find(iconbar, 'a').forEach(function (anchor) {\n anchor.classList.remove('mm-iconbar__tab_selected');\n });\n var anchor = DOM.find(iconbar, '[href=\"#' + panel.id + '\"]')[0];\n if (anchor) {\n anchor.classList.add('mm-iconbar__tab_selected');\n }\n else {\n var parent_1 = panel['mmParent'];\n if (parent_1) {\n selectTab_1(parent_1.closest('.mm-panel'));\n }\n }\n };\n this.bind('openPanel:start', selectTab_1);\n }\n }\n}\n","var options = {\n add: false,\n blockPanel: true,\n hideDivider: false,\n hideNavbar: true,\n visible: 3\n};\nexport default options;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (typeof options == 'boolean') {\n options = {\n add: options\n };\n }\n if (typeof options == 'number' ||\n typeof options == 'string') {\n options = {\n add: true,\n visible: options\n };\n }\n if (typeof options != 'object') {\n options = {};\n }\n return options;\n}\n;\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport { extendShorthandOptions } from './_options';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\n//\tAdd the options.\nMmenu.options.iconPanels = options;\nexport default function () {\n var _this = this;\n var options = extendShorthandOptions(this.opts.iconPanels);\n this.opts.iconPanels = extend(options, Mmenu.options.iconPanels);\n var keepFirst = false;\n if (options.visible == 'first') {\n keepFirst = true;\n options.visible = 1;\n }\n options.visible = Math.min(3, Math.max(1, options.visible));\n options.visible++;\n //\tAdd the iconpanels\n if (options.add) {\n this.bind('initMenu:after', function () {\n var classnames = ['mm-menu_iconpanel'];\n if (options.hideNavbar) {\n classnames.push('mm-menu_hidenavbar');\n }\n if (options.hideDivider) {\n classnames.push('mm-menu_hidedivider');\n }\n // IE11:\n classnames.forEach(function (classname) {\n _this.node.menu.classList.add(classname);\n });\n // Better browsers:\n // this.node.menu.classList.add(...classnames);\n });\n var classnames_1 = [];\n if (!keepFirst) {\n for (var i = 0; i <= options.visible; i++) {\n classnames_1.push('mm-panel_iconpanel-' + i);\n }\n }\n this.bind('openPanel:start', function (panel) {\n var panels = DOM.children(_this.node.pnls, '.mm-panel');\n panel = panel || panels[0];\n if (panel.parentElement.matches('.mm-listitem_vertical')) {\n return;\n }\n if (keepFirst) {\n panels.forEach(function (panel, p) {\n panel.classList[p == 0 ? 'add' : 'remove']('mm-panel_iconpanel-first');\n });\n }\n else {\n //\tRemove the \"iconpanel\" classnames from all panels.\n panels.forEach(function (panel) {\n // IE11:\n classnames_1.forEach(function (classname) {\n panel.classList.remove(classname);\n });\n // Better browsers:\n // panel.classList.remove(...classnames);\n });\n //\tFilter out panels that are not opened.\n panels = panels.filter(function (panel) {\n return panel.matches('.mm-panel_opened-parent');\n });\n //\tAdd the current panel to the list.\n var panelAdded_1 = false;\n panels.forEach(function (elem) {\n if (panel === elem) {\n panelAdded_1 = true;\n }\n });\n if (!panelAdded_1) {\n panels.push(panel);\n }\n //\tRemove the \"hidden\" classname from all opened panels.\n panels.forEach(function (panel) {\n panel.classList.remove('mm-hidden');\n });\n //\tSlice the opened panels to the max visible amount.\n panels = panels.slice(-options.visible);\n //\tAdd the \"iconpanel\" classnames.\n panels.forEach(function (panel, p) {\n panel.classList.add('mm-panel_iconpanel-' + p);\n });\n }\n });\n this.bind('initPanel:after', function (panel) {\n if (options.blockPanel &&\n !panel.parentElement.matches('.mm-listitem_vertical') &&\n !DOM.children(panel, '.mm-panel__blocker')[0]) {\n var blocker = DOM.create('a.mm-panel__blocker');\n blocker.setAttribute('href', '#' + panel.closest('.mm-panel').id);\n panel.prepend(blocker);\n }\n });\n }\n}\n","var options = {\n enable: false,\n enhance: false\n};\nexport default options;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (typeof options == 'boolean' || typeof options == 'string') {\n options = {\n enable: options\n };\n }\n if (typeof options != 'object') {\n options = {};\n }\n return options;\n}\n;\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport { extendShorthandOptions } from './_options';\nimport * as DOM from '../../_modules/dom';\nimport * as events from '../../_modules/eventlisteners';\nimport * as support from '../../_modules/support';\nimport { extend } from '../../_modules/helpers';\n// Add the options.\nMmenu.options.keyboardNavigation = options;\nexport default function () {\n var _this = this;\n //\tKeyboard navigation on touchscreens opens the virtual keyboard :/\n //\tLets prevent that.\n if (support.touch) {\n return;\n }\n var options = extendShorthandOptions(this.opts.keyboardNavigation);\n this.opts.keyboardNavigation = extend(options, Mmenu.options.keyboardNavigation);\n //\tEnable keyboard navigation\n if (options.enable) {\n var menuStart_1 = DOM.create('button.mm-tabstart.mm-sronly'), menuEnd_1 = DOM.create('button.mm-tabend.mm-sronly'), blockerEnd_1 = DOM.create('button.mm-tabend.mm-sronly');\n this.bind('initMenu:after', function () {\n if (options.enhance) {\n _this.node.menu.classList.add('mm-menu_keyboardfocus');\n }\n initWindow.call(_this, options.enhance);\n });\n this.bind('initOpened:before', function () {\n _this.node.menu.prepend(menuStart_1);\n _this.node.menu.append(menuEnd_1);\n DOM.children(_this.node.menu, '.mm-navbars-top, .mm-navbars-bottom').forEach(function (navbars) {\n navbars.querySelectorAll('.mm-navbar__title').forEach(function (title) {\n title.setAttribute('tabindex', '-1');\n });\n });\n });\n this.bind('initBlocker:after', function () {\n Mmenu.node.blck.append(blockerEnd_1);\n DOM.children(Mmenu.node.blck, 'a')[0].classList.add('mm-tabstart');\n });\n var focusable_1 = 'input, select, textarea, button, label, a[href]';\n var setFocus = function (panel) {\n panel =\n panel || DOM.children(_this.node.pnls, '.mm-panel_opened')[0];\n var focus = null;\n //\tFocus already is on an element in a navbar in this menu.\n var navbar = document.activeElement.closest('.mm-navbar');\n if (navbar) {\n if (navbar.closest('.mm-menu') == _this.node.menu) {\n return;\n }\n }\n //\tSet the focus to the first focusable element by default.\n if (options.enable == 'default') {\n //\tFirst visible anchor in a listview in the current panel.\n focus = DOM.find(panel, '.mm-listview a[href]:not(.mm-hidden)')[0];\n //\tFirst focusable and visible element in the current panel.\n if (!focus) {\n focus = DOM.find(panel, focusable_1 + ':not(.mm-hidden)')[0];\n }\n //\tFirst focusable and visible element in a navbar.\n if (!focus) {\n var elements_1 = [];\n DOM.children(_this.node.menu, '.mm-navbars_top, .mm-navbars_bottom').forEach(function (navbar) {\n elements_1.push.apply(elements_1, DOM.find(navbar, focusable_1 + ':not(.mm-hidden)'));\n });\n focus = elements_1[0];\n }\n }\n //\tDefault.\n if (!focus) {\n focus = DOM.children(_this.node.menu, '.mm-tabstart')[0];\n }\n if (focus) {\n focus.focus();\n }\n };\n this.bind('open:finish', setFocus);\n this.bind('openPanel:finish', setFocus);\n //\tAdd screenreader / aria support.\n this.bind('initOpened:after:sr-aria', function () {\n [_this.node.menu, Mmenu.node.blck].forEach(function (element) {\n DOM.children(element, '.mm-tabstart, .mm-tabend').forEach(function (tabber) {\n Mmenu.sr_aria(tabber, 'hidden', true);\n Mmenu.sr_role(tabber, 'presentation');\n });\n });\n });\n }\n}\n/**\n * Initialize the window for keyboard navigation.\n * @param {boolean} enhance - Whether or not to also rich enhance the keyboard behavior.\n **/\nvar initWindow = function (enhance) {\n var _this = this;\n //\tRe-enable tabbing in general\n events.off(document.body, 'keydown.tabguard');\n //\tIntersept the target when tabbing.\n events.off(document.body, 'focusin.tabguard');\n events.on(document.body, 'focusin.tabguard', function (evnt) {\n if (_this.node.wrpr.matches('.mm-wrapper_opened')) {\n var target = evnt.target;\n if (target.matches('.mm-tabend')) {\n var next = void 0;\n //\tJump from menu to blocker.\n if (target.parentElement.matches('.mm-menu')) {\n if (Mmenu.node.blck) {\n next = Mmenu.node.blck;\n }\n }\n //\tJump to opened menu.\n if (target.parentElement.matches('.mm-wrapper__blocker')) {\n next = DOM.find(document.body, '.mm-menu_offcanvas.mm-menu_opened')[0];\n }\n //\tIf no available element found, stay in current element.\n if (!next) {\n next = target.parentElement;\n }\n if (next) {\n DOM.children(next, '.mm-tabstart')[0].focus();\n }\n }\n }\n });\n //\tAdd Additional keyboard behavior.\n events.off(document.body, 'keydown.navigate');\n events.on(document.body, 'keydown.navigate', function (evnt) {\n var target = evnt.target;\n var menu = target.closest('.mm-menu');\n if (menu) {\n var api = menu['mmApi'];\n if (!target.matches('input, textarea')) {\n switch (evnt.keyCode) {\n //\tpress enter to toggle and check\n case 13:\n if (target.matches('.mm-toggle') ||\n target.matches('.mm-check')) {\n target.dispatchEvent(new Event('click'));\n }\n break;\n //\tprevent spacebar or arrows from scrolling the page\n case 32: //\tspace\n case 37: //\tleft\n case 38: //\ttop\n case 39: //\tright\n case 40: //\tbottom\n evnt.preventDefault();\n break;\n }\n }\n if (enhance) {\n //\tspecial case for input\n if (target.matches('input')) {\n switch (evnt.keyCode) {\n //\tempty searchfield with esc\n case 27:\n target.value = '';\n break;\n }\n }\n else {\n var api_1 = menu['mmApi'];\n switch (evnt.keyCode) {\n //\tclose submenu with backspace\n case 8:\n var parent_1 = DOM.find(menu, '.mm-panel_opened')[0]['mmParent'];\n if (parent_1) {\n api_1.openPanel(parent_1.closest('.mm-panel'));\n }\n break;\n //\tclose menu with esc\n case 27:\n if (menu.matches('.mm-menu_offcanvas')) {\n api_1.close();\n }\n break;\n }\n }\n }\n }\n });\n};\n","var options = {\n load: false\n};\nexport default options;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (typeof options == 'boolean') {\n options = {\n load: options\n };\n }\n if (typeof options != 'object') {\n options = {};\n }\n return options;\n}\n;\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport { extendShorthandOptions } from './_options';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\n//\tAdd the options.\nMmenu.options.lazySubmenus = options;\nexport default function () {\n var _this = this;\n var options = extendShorthandOptions(this.opts.lazySubmenus);\n this.opts.lazySubmenus = extend(options, Mmenu.options.lazySubmenus);\n if (options.load) {\n //\tPrevent all sub panels from being initialized.\n this.bind('initPanels:before', function () {\n var panels = [];\n //\tFind all potential subpanels.\n DOM.find(_this.node.pnls, 'li').forEach(function (listitem) {\n panels.push.apply(panels, DOM.children(listitem, _this.conf.panelNodetype.join(', ')));\n });\n //\tFilter out all non-panels and add the lazyload classes\n panels\n .filter(function (panel) { return !panel.matches('.mm-listview_inset'); })\n .filter(function (panel) { return !panel.matches('.mm-nolistview'); })\n .filter(function (panel) { return !panel.matches('.mm-nopanel'); })\n .forEach(function (panel) {\n var classnames = [\n 'mm-panel_lazysubmenu',\n 'mm-nolistview',\n 'mm-nopanel',\n ];\n // IE11:\n classnames.forEach(function (classname) {\n panel.classList.add(classname);\n });\n // Better browsers:\n // panel.classList.add(...classnames);\n });\n });\n //\tre-enable the default opened panel to be initialized.\n this.bind('initPanels:before', function () {\n var panels = [];\n DOM.find(_this.node.pnls, '.' + _this.conf.classNames.selected).forEach(function (listitem) {\n panels.push.apply(panels, DOM.parents(listitem, '.mm-panel_lazysubmenu'));\n });\n if (panels.length) {\n panels.forEach(function (panel) {\n console.log(panel);\n var classnames = [\n 'mm-panel_lazysubmenu',\n 'mm-nolistview',\n 'mm-nopanel',\n ];\n // IE11:\n classnames.forEach(function (classname) {\n panel.classList.remove(classname);\n });\n // Better browsers:\n // panel.classList.remove(...classnames);\n });\n }\n });\n //\tinitPanel for current- and sub panels before openPanel\n this.bind('openPanel:before', function (panel) {\n var panels = DOM.find(panel, '.mm-panel_lazysubmenu').filter(function (panel) {\n return !panel.matches('.mm-panel_lazysubmenu .mm-panel_lazysubmenu');\n });\n if (panel.matches('.mm-panel_lazysubmenu')) {\n panels.unshift(panel);\n }\n panels.forEach(function (panel) {\n var classnames = [\n 'mm-panel_lazysubmenu',\n 'mm-nolistview',\n 'mm-nopanel',\n ];\n // IE11:\n classnames.forEach(function (classname) {\n panel.classList.remove(classname);\n });\n // Better browsers:\n // child.classList.remove(...classnames);\n _this.initPanel(panel);\n });\n });\n }\n}\n","var options = [];\nexport default options;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (typeof options == 'boolean' && options) {\n options = {};\n }\n if (typeof options != 'object') {\n options = {};\n }\n if (typeof options.content == 'undefined') {\n options.content = ['prev', 'title'];\n }\n if (!(options.content instanceof Array)) {\n options.content = [options.content];\n }\n if (typeof options.use == 'undefined') {\n options.use = true;\n }\n if (typeof options.use == 'boolean' && options.use) {\n options.use = true;\n }\n return options;\n}\n;\n","var configs = {\n breadcrumbs: {\n separator: '/',\n removeFirst: false\n }\n};\nexport default configs;\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport configs from './_configs';\nimport { extendShorthandOptions } from './_options';\nimport * as DOM from '../../_modules/dom';\nimport * as media from '../../_modules/matchmedia';\n// Add the options and configs.\nMmenu.options.navbars = options;\nMmenu.configs.navbars = configs;\n// Add the classnames.\nMmenu.configs.classNames.navbars = {\n panelPrev: 'Prev',\n panelTitle: 'Title'\n};\nimport breadcrumbs from './_navbar.breadcrumbs';\nimport close from './_navbar.close';\nimport prev from './_navbar.prev';\nimport searchfield from './_navbar.searchfield';\nimport title from './_navbar.title';\nNavbars.navbarContents = {\n breadcrumbs: breadcrumbs,\n close: close,\n prev: prev,\n searchfield: searchfield,\n title: title\n};\nimport tabs from './_navbar.tabs';\nNavbars.navbarTypes = {\n tabs: tabs\n};\nexport default function Navbars() {\n var _this = this;\n var navs = this.opts.navbars;\n if (typeof navs == 'undefined') {\n return;\n }\n if (!(navs instanceof Array)) {\n navs = [navs];\n }\n var navbars = {};\n if (!navs.length) {\n return;\n }\n navs.forEach(function (options) {\n options = extendShorthandOptions(options);\n if (!options.use) {\n return false;\n }\n //\tCreate the navbar element.\n var navbar = DOM.create('div.mm-navbar');\n //\tGet the position for the navbar.\n var position = options.position;\n //\tRestrict the position to either \"bottom\" or \"top\" (default).\n if (position !== 'bottom') {\n position = 'top';\n }\n //\tCreate the wrapper for the navbar position.\n if (!navbars[position]) {\n navbars[position] = DOM.create('div.mm-navbars_' + position);\n }\n navbars[position].append(navbar);\n //\tAdd content to the navbar.\n for (var c = 0, l = options.content.length; c < l; c++) {\n var ctnt = options.content[c];\n //\tThe content is a string.\n if (typeof ctnt == 'string') {\n var func = Navbars.navbarContents[ctnt];\n //\tThe content refers to one of the navbar-presets (\"prev\", \"title\", etc).\n if (typeof func == 'function') {\n //\tCall the preset function.\n func.call(_this, navbar);\n //\tThe content is just HTML.\n }\n else {\n //\tAdd the HTML.\n // Wrap the HTML in a single node\n var node = DOM.create('span');\n node.innerHTML = ctnt;\n // If there was only a single node, use that.\n var children = DOM.children(node);\n if (children.length == 1) {\n node = children[0];\n }\n navbar.append(node);\n }\n //\tThe content is not a string, it must be an element.\n }\n else {\n navbar.append(ctnt);\n }\n }\n //\tThe type option is set.\n if (typeof options.type == 'string') {\n //\tThe function refers to one of the navbar-presets (\"tabs\").\n var func = Navbars.navbarTypes[options.type];\n if (typeof func == 'function') {\n //\tCall the preset function.\n func.call(_this, navbar);\n }\n }\n //\tEn-/disable the navbar.\n var enable = function () {\n navbar.classList.remove('mm-hidden');\n Mmenu.sr_aria(navbar, 'hidden', false);\n };\n var disable = function () {\n navbar.classList.add('mm-hidden');\n Mmenu.sr_aria(navbar, 'hidden', true);\n };\n if (typeof options.use != 'boolean') {\n media.add(options.use, enable, disable);\n }\n });\n //\tAdd to menu.\n this.bind('initMenu:after', function () {\n for (var position in navbars) {\n _this.node.menu[position == 'bottom' ? 'append' : 'prepend'](navbars[position]);\n }\n });\n}\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport * as DOM from '../../_modules/dom';\nexport default function (navbar) {\n var _this = this;\n //\tAdd content\n var breadcrumbs = DOM.create('div.mm-navbar__breadcrumbs');\n navbar.append(breadcrumbs);\n this.bind('initNavbar:after', function (panel) {\n if (panel.querySelector('.mm-navbar__breadcrumbs')) {\n return;\n }\n DOM.children(panel, '.mm-navbar')[0].classList.add('mm-hidden');\n var crumbs = [], breadcrumbs = DOM.create('span.mm-navbar__breadcrumbs'), current = panel, first = true;\n while (current) {\n current = current.closest('.mm-panel');\n if (!current.parentElement.matches('.mm-listitem_vertical')) {\n var title = DOM.find(current, '.mm-navbar__title span')[0];\n if (title) {\n var text = title.textContent;\n if (text.length) {\n crumbs.unshift(first\n ? '' + text + ''\n : '' +\n text +\n '');\n }\n }\n first = false;\n }\n current = current['mmParent'];\n }\n if (_this.conf.navbars.breadcrumbs.removeFirst) {\n crumbs.shift();\n }\n breadcrumbs.innerHTML = crumbs.join('' +\n _this.conf.navbars.breadcrumbs.separator +\n '');\n DOM.children(panel, '.mm-navbar')[0].append(breadcrumbs);\n });\n //\tUpdate for to opened panel\n this.bind('openPanel:start', function (panel) {\n var crumbs = panel.querySelector('.mm-navbar__breadcrumbs');\n breadcrumbs.innerHTML = crumbs ? crumbs.innerHTML : '';\n });\n //\tAdd screenreader / aria support\n this.bind('initNavbar:after:sr-aria', function (panel) {\n DOM.find(panel, '.mm-breadcrumbs a').forEach(function (anchor) {\n Mmenu.sr_aria(anchor, 'owns', anchor.getAttribute('href').slice(1));\n });\n });\n}\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport * as DOM from '../../_modules/dom';\nexport default function (navbar) {\n var _this = this;\n //\tAdd content\n var close = DOM.create('a.mm-btn.mm-btn_close.mm-navbar__btn');\n navbar.append(close);\n //\tUpdate to page node\n this.bind('setPage:after', function (page) {\n close.setAttribute('href', '#' + page.id);\n });\n //\tAdd screenreader / text support\n this.bind('setPage:after:sr-text', function () {\n close.innerHTML = Mmenu.sr_text(_this.i18n(_this.conf.screenReader.text.closeMenu));\n });\n}\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport * as DOM from '../../_modules/dom';\nexport default function (navbar) {\n var _this = this;\n //\tAdd content.\n var prev = DOM.create('a.mm-btn.mm-btn_prev.mm-navbar__btn');\n navbar.append(prev);\n this.bind('initNavbar:after', function (panel) {\n DOM.children(panel, '.mm-navbar')[0].classList.add('mm-hidden');\n });\n //\tUpdate to opened panel.\n var org;\n var _url, _txt;\n this.bind('openPanel:start', function (panel) {\n if (panel.parentElement.matches('.mm-listitem_vertical')) {\n return;\n }\n org = panel.querySelector('.' + _this.conf.classNames.navbars.panelPrev);\n if (!org) {\n org = panel.querySelector('.mm-navbar__btn.mm-btn_prev');\n }\n _url = org ? org.getAttribute('href') : '';\n _txt = org ? org.innerHTML : '';\n if (_url) {\n prev.setAttribute('href', _url);\n }\n else {\n prev.removeAttribute('href');\n }\n prev.classList[_url || _txt ? 'remove' : 'add']('mm-hidden');\n prev.innerHTML = _txt;\n });\n //\tAdd screenreader / aria support\n this.bind('initNavbar:after:sr-aria', function (panel) {\n Mmenu.sr_aria(panel.querySelector('.mm-navbar'), 'hidden', true);\n });\n this.bind('openPanel:start:sr-aria', function (panel) {\n Mmenu.sr_aria(prev, 'hidden', prev.matches('.mm-hidden'));\n Mmenu.sr_aria(prev, 'owns', (prev.getAttribute('href') || '').slice(1));\n });\n}\n","import * as DOM from '../../_modules/dom';\nimport { type } from '../../_modules/helpers';\nexport default function (navbar) {\n if (type(this.opts.searchfield) != 'object') {\n this.opts.searchfield = {};\n }\n var searchfield = DOM.create('div.mm-navbar__searchfield');\n navbar.append(searchfield);\n this.opts.searchfield.add = true;\n this.opts.searchfield.addTo = [searchfield];\n}\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport * as DOM from '../../_modules/dom';\nexport default function (navbar) {\n var _this = this;\n //\tAdd content to the navbar.\n var title = DOM.create('a.mm-navbar__title');\n var titleText = DOM.create('span');\n title.append(titleText);\n navbar.append(title);\n //\tUpdate the title to the opened panel.\n var _url, _txt;\n var original;\n this.bind('openPanel:start', function (panel) {\n //\tDo nothing in a vertically expanding panel.\n if (panel.parentElement.matches('.mm-listitem_vertical')) {\n return;\n }\n //\tFind the original title in the opened panel.\n original = panel.querySelector('.' + _this.conf.classNames.navbars.panelTitle);\n if (!original) {\n original = panel.querySelector('.mm-navbar__title span');\n }\n //\tGet the URL for the title.\n _url =\n original && original.closest('a')\n ? original.closest('a').getAttribute('href')\n : '';\n if (_url) {\n title.setAttribute('href', _url);\n }\n else {\n title.removeAttribute('href');\n }\n //\tGet the text for the title.\n _txt = original ? original.innerHTML : '';\n titleText.innerHTML = _txt;\n });\n //\tAdd screenreader / aria support\n var prev;\n this.bind('openPanel:start:sr-aria', function (panel) {\n if (_this.opts.screenReader.text) {\n if (!prev) {\n var navbars = DOM.children(_this.node.menu, '.mm-navbars_top, .mm-navbars_bottom');\n navbars.forEach(function (navbar) {\n var btn = navbar.querySelector('.mm-btn_prev');\n if (btn) {\n prev = btn;\n }\n });\n }\n if (prev) {\n var hidden = true;\n if (_this.opts.navbar.titleLink == 'parent') {\n hidden = !prev.matches('.mm-hidden');\n }\n Mmenu.sr_aria(title, 'hidden', hidden);\n }\n }\n });\n}\n","import * as DOM from '../../_modules/dom';\nexport default function (navbar) {\n var _this = this;\n navbar.classList.add('mm-navbar_tabs');\n navbar.parentElement.classList.add('mm-navbars_has-tabs');\n var anchors = DOM.children(navbar, 'a');\n navbar.addEventListener('click', function (evnt) {\n var anchor = evnt.target;\n if (!anchor.matches('a')) {\n return;\n }\n if (anchor.matches('.mm-navbar__tab_selected')) {\n evnt.stopImmediatePropagation();\n return;\n }\n try {\n _this.openPanel(_this.node.menu.querySelector(anchor.getAttribute('href')), false);\n evnt.stopImmediatePropagation();\n }\n catch (err) { }\n });\n function selectTab(panel) {\n anchors.forEach(function (anchor) {\n anchor.classList.remove('mm-navbar__tab_selected');\n });\n var anchor = anchors.filter(function (anchor) {\n return anchor.matches('[href=\"#' + panel.id + '\"]');\n })[0];\n if (anchor) {\n anchor.classList.add('mm-navbar__tab_selected');\n }\n else {\n var parent = panel['mmParent'];\n if (parent) {\n selectTab.call(this, parent.closest('.mm-panel'));\n }\n }\n }\n this.bind('openPanel:start', selectTab);\n}\n","var options = {\n scroll: false,\n update: false\n};\nexport default options;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (typeof options == 'boolean') {\n options = {\n scroll: options\n };\n }\n if (typeof options != 'object') {\n options = {};\n }\n return options;\n}\n;\n","var configs = {\n scrollOffset: 0,\n updateOffset: 50\n};\nexport default configs;\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport configs from './_configs';\nimport { extendShorthandOptions } from './_options';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\n//\tAdd the options and configs.\nMmenu.options.pageScroll = options;\nMmenu.configs.pageScroll = configs;\nexport default function () {\n var _this = this;\n var options = extendShorthandOptions(this.opts.pageScroll);\n this.opts.pageScroll = extend(options, Mmenu.options.pageScroll);\n var configs = this.conf.pageScroll;\n /** The currently \"active\" section */\n var section;\n function scrollTo() {\n if (section) {\n // section.scrollIntoView({ behavior: 'smooth' });\n window.scrollTo({\n top: section.getBoundingClientRect().top +\n document.scrollingElement.scrollTop -\n configs.scrollOffset,\n behavior: 'smooth'\n });\n }\n section = null;\n }\n function anchorInPage(href) {\n try {\n if (href != '#' && href.slice(0, 1) == '#') {\n return Mmenu.node.page.querySelector(href);\n }\n return null;\n }\n catch (err) {\n return null;\n }\n }\n //\tScroll to section after clicking menu item.\n if (options.scroll) {\n this.bind('close:finish', function () {\n scrollTo();\n });\n }\n //\tAdd click behavior.\n //\tPrevents default behavior when clicking an anchor.\n if (this.opts.offCanvas && options.scroll) {\n this.clck.push(function (anchor, args) {\n section = null;\n //\tDon't continue if the clicked anchor is not in the menu.\n if (!args.inMenu) {\n return;\n }\n //\tDon't continue if the targeted section is not on the page.\n var href = anchor.getAttribute('href');\n section = anchorInPage(href);\n if (!section) {\n return;\n }\n //\tIf the sidebar add-on is \"expanded\"...\n if (_this.node.menu.matches('.mm-menu_sidebar-expanded') &&\n _this.node.wrpr.matches('.mm-wrapper_sidebar-expanded')) {\n //\t... scroll the page to the section.\n scrollTo();\n //\t... otherwise...\n }\n else {\n //\t... close the menu.\n return {\n close: true\n };\n }\n });\n }\n //\tUpdate selected menu item after scrolling.\n if (options.update) {\n var scts_1 = [];\n this.bind('initListview:after', function (listview) {\n var listitems = DOM.children(listview, '.mm-listitem');\n DOM.filterLIA(listitems).forEach(function (anchor) {\n var href = anchor.getAttribute('href');\n var section = anchorInPage(href);\n if (section) {\n scts_1.unshift(section);\n }\n });\n });\n var _selected_1 = -1;\n window.addEventListener('scroll', function (evnt) {\n var scrollTop = window.scrollY;\n for (var s = 0; s < scts_1.length; s++) {\n if (scts_1[s].offsetTop < scrollTop + configs.updateOffset) {\n if (_selected_1 !== s) {\n _selected_1 = s;\n var panel = DOM.children(_this.node.pnls, '.mm-panel_opened')[0];\n var listitems = DOM.find(panel, '.mm-listitem');\n var anchors = DOM.filterLIA(listitems);\n anchors = anchors.filter(function (anchor) {\n return anchor.matches('[href=\"#' + scts_1[s].id + '\"]');\n });\n if (anchors.length) {\n _this.setSelected(anchors[0].parentElement);\n }\n }\n break;\n }\n }\n });\n }\n}\n","var options = {\n add: false,\n addTo: 'panels',\n cancel: false,\n noResults: 'No results found.',\n placeholder: 'Search',\n panel: {\n add: false,\n dividers: true,\n fx: 'none',\n id: null,\n splash: null,\n title: 'Search'\n },\n search: true,\n showTextItems: false,\n showSubPanels: true\n};\nexport default options;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (typeof options == 'boolean') {\n options = {\n add: options\n };\n }\n if (typeof options != 'object') {\n options = {};\n }\n if (typeof options.panel == 'boolean') {\n options.panel = {\n add: options.panel\n };\n }\n if (typeof options.panel != 'object') {\n options.panel = {};\n }\n //\tExtend logical options.\n if (options.addTo == 'panel') {\n options.panel.add = true;\n }\n if (options.panel.add) {\n options.showSubPanels = false;\n if (options.panel.splash) {\n options.cancel = true;\n }\n }\n return options;\n}\n;\n","var configs = {\n clear: false,\n form: false,\n input: false,\n submit: false\n};\nexport default configs;\n","export default {\n Search: 'جستجو',\n 'No results found.': 'نتیجه‌ای یافت نشد.',\n cancel: 'انصراف'\n};\n","export default {\n Search: 'Suche',\n 'No results found.': 'Keine Ergebnisse gefunden.',\n cancel: 'beenden'\n};\n","export default {\n Search: 'Найти',\n 'No results found.': 'Ничего не найдено.',\n cancel: 'отменить'\n};\n","var __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport configs from './_configs';\nimport translate from './translations/translate';\nimport { extendShorthandOptions } from './_options';\nimport * as DOM from '../../_modules/dom';\nimport * as events from '../../_modules/eventlisteners';\nimport { type, extend } from '../../_modules/helpers';\n// Add the translations.\ntranslate();\n// Add the options and configs.\nMmenu.options.searchfield = options;\nMmenu.configs.searchfield = configs;\nexport default function () {\n var _this = this;\n var options = extendShorthandOptions(this.opts.searchfield);\n this.opts.searchfield = extend(options, Mmenu.options.searchfield);\n var configs = this.conf.searchfield;\n if (!options.add) {\n return;\n }\n //\tBlur searchfield\n this.bind('close:start', function () {\n DOM.find(_this.node.menu, '.mm-searchfield').forEach(function (input) {\n input.blur();\n });\n });\n this.bind('initPanel:after', function (panel) {\n var searchpanel = null;\n //\tAdd the search panel\n if (options.panel.add) {\n searchpanel = initSearchPanel.call(_this);\n }\n //\tAdd the searchfield\n var addTo = null;\n switch (options.addTo) {\n case 'panels':\n addTo = [panel];\n break;\n case 'panel':\n addTo = [searchpanel];\n break;\n default:\n if (typeof options.addTo == 'string') {\n addTo = DOM.find(_this.node.menu, options.addTo);\n }\n else if (type(options.addTo) == 'array') {\n addTo = options.addTo;\n }\n break;\n }\n addTo.forEach(function (form) {\n form = initSearchfield.call(_this, form);\n if (options.search && form) {\n initSearching.call(_this, form);\n }\n });\n //\tAdd the no-results message\n if (options.noResults) {\n initNoResultsMsg.call(_this, options.panel.add ? searchpanel : panel);\n }\n });\n //\tAdd click behavior.\n //\tPrevents default behavior when clicking an anchor\n this.clck.push(function (anchor, args) {\n if (args.inMenu) {\n if (anchor.matches('.mm-searchfield__btn')) {\n //\tClicking the clear button\n if (anchor.matches('.mm-btn_close')) {\n var form = anchor.closest('.mm-searchfield'), input = DOM.find(form, 'input')[0];\n input.value = '';\n _this.search(input);\n return true;\n }\n //\tClicking the submit button\n if (anchor.matches('.mm-btn_next')) {\n var form = anchor.closest('form');\n if (form) {\n form.submit();\n }\n return true;\n }\n }\n }\n });\n}\nvar initSearchPanel = function () {\n var options = this.opts.searchfield, configs = this.conf.searchfield;\n var searchpanel = DOM.children(this.node.pnls, '.mm-panel_search')[0];\n //\tOnly once\n if (searchpanel) {\n return searchpanel;\n }\n searchpanel = DOM.create('div.mm-panel.mm-panel_search.mm-hidden');\n if (options.panel.id) {\n searchpanel.id = options.panel.id;\n }\n if (options.panel.title) {\n searchpanel.setAttribute('data-mm-title', options.panel.title);\n // searchpanel.dataset.mmTitle = options.panel.title; // IE10 has no dataset :(\n }\n var listview = DOM.create('ul');\n searchpanel.append(listview);\n this.node.pnls.append(searchpanel);\n this.initListview(listview);\n this._initNavbar(searchpanel);\n switch (options.panel.fx) {\n case false:\n break;\n case 'none':\n searchpanel.classList.add('mm-panel_noanimation');\n break;\n default:\n searchpanel.classList.add('mm-panel_fx-' + options.panel.fx);\n break;\n }\n //\tAdd splash content\n if (options.panel.splash) {\n var splash = DOM.create('div.mm-panel__content');\n splash.innerHTML = options.panel.splash;\n searchpanel.append(splash);\n }\n searchpanel.classList.add('mm-panel');\n searchpanel.classList.add('mm-hidden');\n this.node.pnls.append(searchpanel);\n return searchpanel;\n};\nvar initSearchfield = function (wrapper) {\n var options = this.opts.searchfield, configs = this.conf.searchfield;\n //\tNo searchfield in vertical submenus\n if (wrapper.parentElement.matches('.mm-listitem_vertical')) {\n return null;\n }\n //\tOnly one searchfield per panel\n var form = DOM.find(wrapper, '.mm-searchfield')[0];\n if (form) {\n return form;\n }\n function addAttributes(element, attr) {\n if (attr) {\n for (var a in attr) {\n element.setAttribute(a, attr[a]);\n }\n }\n }\n var form = DOM.create((configs.form ? 'form' : 'div') + '.mm-searchfield'), field = DOM.create('div.mm-searchfield__input'), input = DOM.create('input');\n input.type = 'text';\n input.autocomplete = 'off';\n input.placeholder = this.i18n(options.placeholder);\n field.append(input);\n form.append(field);\n wrapper.prepend(form);\n //\tAdd attributes to the input\n addAttributes(input, configs.input);\n //\tAdd the clear button\n if (configs.clear) {\n var anchor = DOM.create('a.mm-btn.mm-btn_close.mm-searchfield__btn');\n anchor.setAttribute('href', '#');\n field.append(anchor);\n }\n //\tAdd attributes and submit to the form\n addAttributes(form, configs.form);\n if (configs.form && configs.submit && !configs.clear) {\n var anchor = DOM.create('a.mm-btn.mm-btn_next.mm-searchfield__btn');\n anchor.setAttribute('href', '#');\n field.append(anchor);\n }\n if (options.cancel) {\n var anchor = DOM.create('a.mm-searchfield__cancel');\n anchor.setAttribute('href', '#');\n anchor.textContent = this.i18n('cancel');\n form.append(anchor);\n }\n return form;\n};\nvar initSearching = function (form) {\n var _this = this;\n var options = this.opts.searchfield, configs = this.conf.searchfield;\n var data = {};\n //\tIn the searchpanel.\n if (form.closest('.mm-panel_search')) {\n data.panels = DOM.find(this.node.pnls, '.mm-panel');\n data.noresults = [form.closest('.mm-panel')];\n //\tIn a panel\n }\n else if (form.closest('.mm-panel')) {\n data.panels = [form.closest('.mm-panel')];\n data.noresults = data.panels;\n //\tNot in a panel, global\n }\n else {\n data.panels = DOM.find(this.node.pnls, '.mm-panel');\n data.noresults = [this.node.menu];\n }\n //\tFilter out search panel\n data.panels = data.panels.filter(function (panel) { return !panel.matches('.mm-panel_search'); });\n //\tFilter out vertical submenus\n data.panels = data.panels.filter(function (panel) { return !panel.parentElement.matches('.mm-listitem_vertical'); });\n // Find listitems and dividers.\n data.listitems = [];\n data.dividers = [];\n data.panels.forEach(function (panel) {\n var _a, _b;\n (_a = data.listitems).push.apply(_a, DOM.find(panel, '.mm-listitem'));\n (_b = data.dividers).push.apply(_b, DOM.find(panel, '.mm-divider'));\n });\n var searchpanel = DOM.children(this.node.pnls, '.mm-panel_search')[0], input = DOM.find(form, 'input')[0], cancel = DOM.find(form, '.mm-searchfield__cancel')[0];\n input['mmSearchfield'] = data;\n //\tOpen the splash panel when focussing the input.\n if (options.panel.add && options.panel.splash) {\n events.off(input, 'focus.splash');\n events.on(input, 'focus.splash', function (evnt) {\n _this.openPanel(searchpanel);\n });\n }\n if (options.cancel) {\n //\tShow the cancel button when focussing the input.\n events.off(input, 'focus.cancel');\n events.on(input, 'focus.cancel', function (evnt) {\n cancel.classList.add('mm-searchfield__cancel-active');\n });\n //\tClose the splash panel when clicking the cancel button.\n events.off(cancel, 'click.splash');\n events.on(cancel, 'click.splash', function (evnt) {\n evnt.preventDefault();\n cancel.classList.remove('mm-searchfield__cancel-active');\n if (searchpanel.matches('.mm-panel_opened')) {\n var parents = DOM.children(_this.node.pnls, '.mm-panel_opened-parent');\n if (parents.length) {\n _this.openPanel(parents[parents.length - 1]);\n }\n }\n });\n }\n //\tFocus the input in the searchpanel when opening the searchpanel.\n if (options.panel.add && options.addTo == 'panel') {\n this.bind('openPanel:finish', function (panel) {\n if (panel === searchpanel) {\n input.focus();\n }\n });\n }\n //\tSearch while typing.\n events.off(input, 'input.search');\n events.on(input, 'input.search', function (evnt) {\n switch (evnt.keyCode) {\n case 9: //\ttab\n case 16: //\tshift\n case 17: //\tcontrol\n case 18: //\talt\n case 37: //\tleft\n case 38: //\ttop\n case 39: //\tright\n case 40: //\tbottom\n break;\n default:\n _this.search(input);\n break;\n }\n });\n //\tSearch initially.\n this.search(input);\n};\nvar initNoResultsMsg = function (wrapper) {\n if (!wrapper) {\n return;\n }\n var options = this.opts.searchfield, configs = this.conf.searchfield;\n //\tNot in a panel\n if (!wrapper.closest('.mm-panel')) {\n wrapper = DOM.children(this.node.pnls, '.mm-panel')[0];\n }\n //\tOnly once\n if (DOM.children(wrapper, '.mm-panel__noresultsmsg').length) {\n return;\n }\n //\tAdd no-results message\n var message = DOM.create('div.mm-panel__noresultsmsg.mm-hidden');\n message.innerHTML = this.i18n(options.noResults);\n wrapper.append(message);\n};\nMmenu.prototype.search = function (input, query) {\n var _a;\n var _this = this;\n var options = this.opts.searchfield, configs = this.conf.searchfield;\n query = query || '' + input.value;\n query = query.toLowerCase().trim();\n var data = input['mmSearchfield'];\n var form = input.closest('.mm-searchfield'), buttons = DOM.find(form, '.mm-btn'), searchpanel = DOM.children(this.node.pnls, '.mm-panel_search')[0];\n /** The panels. */\n var panels = data.panels;\n /** The \"no results\" messages in a cloned array. */\n var noresults = data.noresults;\n /** The listitems in a cloned array. */\n var listitems = data.listitems;\n /** Tje dividers in a cloned array. */\n var dividers = data.dividers;\n //\tReset previous results\n listitems.forEach(function (listitem) {\n listitem.classList.remove('mm-listitem_nosubitems');\n listitem.classList.remove('mm-listitem_onlysubitems');\n listitem.classList.remove('mm-hidden');\n });\n if (searchpanel) {\n DOM.children(searchpanel, '.mm-listview')[0].innerHTML = '';\n }\n panels.forEach(function (panel) {\n panel.scrollTop = 0;\n });\n //\tSearch\n if (query.length) {\n //\tInitially hide all dividers.\n dividers.forEach(function (divider) {\n divider.classList.add('mm-hidden');\n });\n //\tHide listitems that do not match.\n listitems.forEach(function (listitem) {\n var text = DOM.children(listitem, '.mm-listitem__text')[0];\n var add = false;\n // The listitem should be shown if:\n // 1) The text matches the query and\n // 2a) The text is a open-button and\n // 2b) the option showSubPanels is set to true.\n // or 3a) The text is not an anchor and\n // 3b) the option showTextItems is set to true.\n // or 4) The text is an anchor.\n // 1\n if (text &&\n DOM.text(text)\n .toLowerCase()\n .indexOf(query) > -1) {\n // 2a\n if (text.matches('.mm-listitem__btn')) {\n // 2b\n if (options.showSubPanels) {\n add = true;\n }\n }\n // 3a\n else if (!text.matches('a')) {\n // 3b\n if (options.showTextItems) {\n add = true;\n }\n }\n // 4\n else {\n add = true;\n }\n }\n if (!add) {\n listitem.classList.add('mm-hidden');\n }\n });\n /** Whether or not the query yielded results. */\n var hasResults = listitems.filter(function (listitem) { return !listitem.matches('.mm-hidden'); }).length;\n //\tShow all mached listitems in the search panel\n if (options.panel.add) {\n //\tClone all matched listitems into the search panel\n var allitems_1 = [];\n panels.forEach(function (panel) {\n var listitems = DOM.filterLI(DOM.find(panel, '.mm-listitem'));\n listitems = listitems.filter(function (listitem) { return !listitem.matches('.mm-hidden'); });\n if (listitems.length) {\n // Add a divider to indicate in what panel the listitems were.\n if (options.panel.dividers) {\n var divider = DOM.create('li.mm-divider');\n var title = DOM.find(panel, '.mm-navbar__title')[0];\n if (title) {\n divider.innerHTML = title.innerHTML;\n allitems_1.push(divider);\n }\n }\n listitems.forEach(function (listitem) {\n allitems_1.push(listitem.cloneNode(true));\n });\n }\n });\n //\tRemove toggles and checks.\n allitems_1.forEach(function (listitem) {\n listitem\n .querySelectorAll('.mm-toggle, .mm-check')\n .forEach(function (element) {\n element.remove();\n });\n });\n //\tAdd to the search panel.\n (_a = DOM.children(searchpanel, '.mm-listview')[0]).append.apply(_a, allitems_1);\n //\tOpen the search panel.\n this.openPanel(searchpanel);\n }\n else {\n //\tAlso show listitems in sub-panels for matched listitems\n if (options.showSubPanels) {\n panels.forEach(function (panel) {\n var listitems = DOM.find(panel, '.mm-listitem');\n DOM.filterLI(listitems).forEach(function (listitem) {\n var child = listitem['mmChild'];\n if (child) {\n DOM.find(child, '.mm-listitem').forEach(function (listitem) {\n listitem.classList.remove('mm-hidden');\n });\n }\n });\n });\n }\n //\tUpdate parent for sub-panel\n // .reverse() mutates the original array, therefor we \"clone\" it first using [...panels].\n __spreadArrays(panels).reverse().forEach(function (panel, p) {\n var parent = panel['mmParent'];\n if (parent) {\n //\tThe current panel has mached listitems\n var listitems_1 = DOM.find(panel, '.mm-listitem');\n if (DOM.filterLI(listitems_1).length) {\n //\tShow parent\n if (parent.matches('.mm-hidden')) {\n parent.classList.remove('mm-hidden');\n }\n parent.classList.add('mm-listitem_onlysubitems');\n }\n else if (!input.closest('.mm-panel')) {\n if (panel.matches('.mm-panel_opened') ||\n panel.matches('.mm-panel_opened-parent')) {\n //\tCompensate the timeout for the opening animation\n setTimeout(function () {\n _this.openPanel(parent.closest('.mm-panel'));\n }, (p + 1) * (_this.conf.openingInterval * 1.5));\n }\n parent.classList.add('mm-listitem_nosubitems');\n }\n }\n });\n //\tShow parent panels of vertical submenus\n panels.forEach(function (panel) {\n var listitems = DOM.find(panel, '.mm-listitem');\n DOM.filterLI(listitems).forEach(function (listitem) {\n DOM.parents(listitem, '.mm-listitem_vertical').forEach(function (parent) {\n if (parent.matches('.mm-hidden')) {\n parent.classList.remove('mm-hidden');\n parent.classList.add('mm-listitem_onlysubitems');\n }\n });\n });\n });\n //\tShow first preceeding divider of parent\n panels.forEach(function (panel) {\n var listitems = DOM.find(panel, '.mm-listitem');\n DOM.filterLI(listitems).forEach(function (listitem) {\n var divider = DOM.prevAll(listitem, '.mm-divider')[0];\n if (divider) {\n divider.classList.remove('mm-hidden');\n }\n });\n });\n }\n //\tShow submit / clear button\n buttons.forEach(function (button) { return button.classList.remove('mm-hidden'); });\n //\tShow/hide no results message\n noresults.forEach(function (wrapper) {\n DOM.find(wrapper, '.mm-panel__noresultsmsg').forEach(function (message) {\n return message.classList[hasResults ? 'add' : 'remove']('mm-hidden');\n });\n });\n if (options.panel.add) {\n //\tHide splash\n if (options.panel.splash) {\n DOM.find(searchpanel, '.mm-panel__content').forEach(function (splash) {\n return splash.classList.add('mm-hidden');\n });\n }\n //\tRe-show original listitems when in search panel\n listitems.forEach(function (listitem) {\n return listitem.classList.remove('mm-hidden');\n });\n dividers.forEach(function (divider) { return divider.classList.remove('mm-hidden'); });\n }\n //\tDon't search\n }\n else {\n //\tShow all items\n listitems.forEach(function (listitem) { return listitem.classList.remove('mm-hidden'); });\n dividers.forEach(function (divider) { return divider.classList.remove('mm-hidden'); });\n //\tHide submit / clear button\n buttons.forEach(function (button) { return button.classList.add('mm-hidden'); });\n //\tHide no results message\n noresults.forEach(function (wrapper) {\n DOM.find(wrapper, '.mm-panel__noresultsmsg').forEach(function (message) {\n return message.classList.add('mm-hidden');\n });\n });\n if (options.panel.add) {\n //\tShow splash\n if (options.panel.splash) {\n DOM.find(searchpanel, '.mm-panel__content').forEach(function (splash) {\n return splash.classList.remove('mm-hidden');\n });\n //\tClose panel\n }\n else if (!input.closest('.mm-panel_search')) {\n var opened = DOM.children(this.node.pnls, '.mm-panel_opened-parent');\n this.openPanel(opened.slice(-1)[0]);\n }\n }\n }\n //\tUpdate for other addons\n this.trigger('updateListview');\n};\n","import { add } from '../../../_modules/i18n';\nimport nl from './nl';\nimport fa from './fa';\nimport de from './de';\nimport ru from './ru';\nexport default function () {\n add(nl, 'nl');\n add(fa, 'fa');\n add(de, 'de');\n add(ru, 'ru');\n}\n","export default {\n Search: 'Zoeken',\n 'No results found.': 'Geen resultaten gevonden.',\n cancel: 'annuleren'\n};\n","var options = {\n add: false,\n addTo: 'panels'\n};\nexport default options;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (typeof options == 'boolean') {\n options = {\n add: options\n };\n }\n if (typeof options != 'object') {\n options = {};\n }\n return options;\n}\n;\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport { extendShorthandOptions } from './_options';\nimport * as DOM from '../../_modules/dom';\nimport * as support from '../../_modules/support';\nimport { extend } from '../../_modules/helpers';\n// Add the options.\nMmenu.options.sectionIndexer = options;\nexport default function () {\n var _this = this;\n var options = extendShorthandOptions(this.opts.sectionIndexer);\n this.opts.sectionIndexer = extend(options, Mmenu.options.sectionIndexer);\n if (!options.add) {\n return;\n }\n this.bind('initPanels:after', function () {\n //\tAdd the indexer, only if it does not allready excists\n if (!_this.node.indx) {\n var buttons_1 = '';\n 'abcdefghijklmnopqrstuvwxyz'.split('').forEach(function (letter) {\n buttons_1 += '' + letter + '';\n });\n var indexer = DOM.create('div.mm-sectionindexer');\n indexer.innerHTML = buttons_1;\n _this.node.pnls.prepend(indexer);\n _this.node.indx = indexer;\n //\tPrevent default behavior when clicking an anchor\n _this.node.indx.addEventListener('click', function (evnt) {\n var anchor = evnt.target;\n if (anchor.matches('a')) {\n evnt.preventDefault();\n }\n });\n //\tScroll onMouseOver / onTouchStart\n var mouseOverEvent = function (evnt) {\n if (!evnt.target.matches('a')) {\n return;\n }\n var letter = evnt.target.textContent, panel = DOM.children(_this.node.pnls, '.mm-panel_opened')[0];\n var newTop = -1, oldTop = panel.scrollTop;\n panel.scrollTop = 0;\n DOM.find(panel, '.mm-divider')\n .filter(function (divider) { return !divider.matches('.mm-hidden'); })\n .forEach(function (divider) {\n if (newTop < 0 &&\n letter ==\n divider.textContent\n .trim()\n .slice(0, 1)\n .toLowerCase()) {\n newTop = divider.offsetTop;\n }\n });\n panel.scrollTop = newTop > -1 ? newTop : oldTop;\n };\n if (support.touch) {\n _this.node.indx.addEventListener('touchstart', mouseOverEvent);\n _this.node.indx.addEventListener('touchmove', mouseOverEvent);\n }\n else {\n _this.node.indx.addEventListener('mouseover', mouseOverEvent);\n }\n }\n //\tShow or hide the indexer\n _this.bind('openPanel:start', function (panel) {\n var active = DOM.find(panel, '.mm-divider').filter(function (divider) { return !divider.matches('.mm-hidden'); }).length;\n _this.node.indx.classList[active ? 'add' : 'remove']('mm-sectionindexer_active');\n });\n });\n}\n","var options = {\n current: true,\n hover: false,\n parent: false\n};\nexport default options;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (typeof options == 'boolean') {\n options = {\n hover: options,\n parent: options\n };\n }\n if (typeof options != 'object') {\n options = {};\n }\n return options;\n}\n;\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport { extendShorthandOptions } from './_options';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\n//\tAdd the options.\nMmenu.options.setSelected = options;\nexport default function () {\n var _this = this;\n var options = extendShorthandOptions(this.opts.setSelected);\n this.opts.setSelected = extend(options, Mmenu.options.setSelected);\n //\tFind current by URL\n if (options.current == 'detect') {\n var findCurrent_1 = function (url) {\n url = url.split('?')[0].split('#')[0];\n var anchor = _this.node.menu.querySelector('a[href=\"' + url + '\"], a[href=\"' + url + '/\"]');\n if (anchor) {\n _this.setSelected(anchor.parentElement);\n }\n else {\n var arr = url.split('/').slice(0, -1);\n if (arr.length) {\n findCurrent_1(arr.join('/'));\n }\n }\n };\n this.bind('initMenu:after', function () {\n findCurrent_1.call(_this, window.location.href);\n });\n //\tRemove current selected item\n }\n else if (!options.current) {\n this.bind('initListview:after', function (listview) {\n DOM.children(listview, '.mm-listitem_selected').forEach(function (listitem) {\n listitem.classList.remove('mm-listitem_selected');\n });\n });\n }\n //\tAdd :hover effect on items\n if (options.hover) {\n this.bind('initMenu:after', function () {\n _this.node.menu.classList.add('mm-menu_selected-hover');\n });\n }\n //\tSet parent item selected for submenus\n if (options.parent) {\n this.bind('openPanel:finish', function (panel) {\n //\tRemove all\n DOM.find(_this.node.pnls, '.mm-listitem_selected-parent').forEach(function (listitem) {\n listitem.classList.remove('mm-listitem_selected-parent');\n });\n //\tMove up the DOM tree\n var parent = panel['mmParent'];\n while (parent) {\n if (!parent.matches('.mm-listitem_vertical')) {\n parent.classList.add('mm-listitem_selected-parent');\n }\n parent = parent.closest('.mm-panel');\n parent = parent['mmParent'];\n }\n });\n this.bind('initMenu:after', function () {\n _this.node.menu.classList.add('mm-menu_selected-parent');\n });\n }\n}\n","var options = {\n collapsed: {\n use: false,\n blockMenu: true,\n hideDivider: false,\n hideNavbar: true\n },\n expanded: {\n use: false,\n initial: 'open'\n }\n};\nexport default options;\n/**\n * Extend shorthand options.\n *\n * @param {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n if (typeof options == 'string' ||\n (typeof options == 'boolean' && options) ||\n typeof options == 'number') {\n options = {\n expanded: options\n };\n }\n if (typeof options != 'object') {\n options = {};\n }\n //\tExtend collapsed shorthand options.\n if (typeof options.collapsed == 'boolean' && options.collapsed) {\n options.collapsed = {\n use: true\n };\n }\n if (typeof options.collapsed == 'string' ||\n typeof options.collapsed == 'number') {\n options.collapsed = {\n use: options.collapsed\n };\n }\n if (typeof options.collapsed != 'object') {\n options.collapsed = {};\n }\n //\tExtend expanded shorthand options.\n if (typeof options.expanded == 'boolean' && options.expanded) {\n options.expanded = {\n use: true\n };\n }\n if (typeof options.expanded == 'string' ||\n typeof options.expanded == 'number') {\n options.expanded = {\n use: options.expanded\n };\n }\n if (typeof options.expanded != 'object') {\n options.expanded = {};\n }\n return options;\n}\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport options from './_options';\nimport { extendShorthandOptions } from './_options';\nimport * as DOM from '../../_modules/dom';\nimport * as media from '../../_modules/matchmedia';\nimport { extend } from '../../_modules/helpers';\n// Add the options.\nMmenu.options.sidebar = options;\nexport default function () {\n var _this = this;\n if (!this.opts.offCanvas) {\n return;\n }\n var options = extendShorthandOptions(this.opts.sidebar);\n this.opts.sidebar = extend(options, Mmenu.options.sidebar);\n //\tCollapsed\n if (options.collapsed.use) {\n //\tMake the menu collapsable.\n this.bind('initMenu:after', function () {\n _this.node.menu.classList.add('mm-menu_sidebar-collapsed');\n if (options.collapsed.blockMenu &&\n _this.opts.offCanvas &&\n !DOM.children(_this.node.menu, '.mm-menu__blocker')[0]) {\n var anchor = DOM.create('a.mm-menu__blocker');\n anchor.setAttribute('href', '#' + _this.node.menu.id);\n _this.node.menu.prepend(anchor);\n }\n if (options.collapsed.hideNavbar) {\n _this.node.menu.classList.add('mm-menu_hidenavbar');\n }\n if (options.collapsed.hideDivider) {\n _this.node.menu.classList.add('mm-menu_hidedivider');\n }\n });\n //\tEn-/disable the collapsed sidebar.\n var enable = function () {\n _this.node.wrpr.classList.add('mm-wrapper_sidebar-collapsed');\n };\n var disable = function () {\n _this.node.wrpr.classList.remove('mm-wrapper_sidebar-collapsed');\n };\n if (typeof options.collapsed.use == 'boolean') {\n this.bind('initMenu:after', enable);\n }\n else {\n media.add(options.collapsed.use, enable, disable);\n }\n }\n //\tExpanded\n if (options.expanded.use) {\n //\tMake the menu expandable\n this.bind('initMenu:after', function () {\n _this.node.menu.classList.add('mm-menu_sidebar-expanded');\n });\n //\tEn-/disable the expanded sidebar.\n var enable = function () {\n _this.node.wrpr.classList.add('mm-wrapper_sidebar-expanded');\n if (!_this.node.wrpr.matches('.mm-wrapper_sidebar-closed')) {\n _this.open();\n }\n };\n var disable = function () {\n _this.node.wrpr.classList.remove('mm-wrapper_sidebar-expanded');\n _this.close();\n };\n if (typeof options.expanded.use == 'boolean') {\n this.bind('initMenu:after', enable);\n }\n else {\n media.add(options.expanded.use, enable, disable);\n }\n // Manually en-/disable the expanded sidebar (open / close the menu)\n this.bind('close:start', function () {\n if (_this.node.wrpr.matches('.mm-wrapper_sidebar-expanded')) {\n _this.node.wrpr.classList.add('mm-wrapper_sidebar-closed');\n if (options.expanded.initial == 'remember') {\n window.localStorage.setItem('mmenuExpandedState', 'closed');\n }\n }\n });\n this.bind('open:start', function () {\n if (_this.node.wrpr.matches('.mm-wrapper_sidebar-expanded')) {\n _this.node.wrpr.classList.remove('mm-wrapper_sidebar-closed');\n if (options.expanded.initial == 'remember') {\n window.localStorage.setItem('mmenuExpandedState', 'open');\n }\n }\n });\n // Set the initial state\n var initialState = options.expanded.initial;\n if (options.expanded.initial == 'remember') {\n var state = window.localStorage.getItem('mmenuExpandedState');\n switch (state) {\n case 'open':\n case 'closed':\n initialState = state;\n break;\n }\n }\n if (initialState == 'closed') {\n this.bind('initMenu:after', function () {\n _this.node.wrpr.classList.add('mm-wrapper_sidebar-closed');\n });\n }\n //\tAdd click behavior.\n //\tPrevents default behavior when clicking an anchor\n this.clck.push(function (anchor, args) {\n if (args.inMenu && args.inListview) {\n if (_this.node.wrpr.matches('.mm-wrapper_sidebar-expanded')) {\n return {\n close: options.expanded.initial == 'closed'\n };\n }\n }\n });\n }\n}\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport * as DOM from '../../_modules/dom';\n//\tAdd the classnames.\nMmenu.configs.classNames.toggles = {\n toggle: 'Toggle',\n check: 'Check'\n};\nexport default function () {\n var _this = this;\n this.bind('initPanel:after', function (panel) {\n //\tRefactor toggle classes\n DOM.find(panel, 'input').forEach(function (input) {\n DOM.reClass(input, _this.conf.classNames.toggles.toggle, 'mm-toggle');\n DOM.reClass(input, _this.conf.classNames.toggles.check, 'mm-check');\n });\n });\n}\n","/*!\n * mmenu.js\n * mmenujs.com\n *\n * Copyright (c) Fred Heusschen\n * frebsite.nl\n */\n\n//\tCore\nimport Mmenu from '../dist/core/oncanvas/mmenu.oncanvas';\n\n//\tCore add-ons\nimport offcanvas from '../dist/core/offcanvas/mmenu.offcanvas';\nimport screenReader from '../dist/core/screenreader/mmenu.screenreader';\nimport scrollBugFix from '../dist/core/scrollbugfix/mmenu.scrollbugfix';\n\n//\tAdd-ons\nimport autoHeight from '../dist/addons/autoheight/mmenu.autoheight';\nimport backButton from '../dist/addons/backbutton/mmenu.backbutton';\nimport columns from '../dist/addons/columns/mmenu.columns';\nimport counters from '../dist/addons/counters/mmenu.counters';\nimport dividers from '../dist/addons/dividers/mmenu.dividers';\nimport drag from '../dist/addons/drag/mmenu.drag';\nimport dropdown from '../dist/addons/dropdown/mmenu.dropdown';\nimport fixedElements from '../dist/addons/fixedelements/mmenu.fixedelements';\nimport iconbar from '../dist/addons/iconbar/mmenu.iconbar';\nimport iconPanels from '../dist/addons/iconpanels/mmenu.iconpanels';\nimport keyboardNavigation from '../dist/addons/keyboardnavigation/mmenu.keyboardnavigation';\nimport lazySubmenus from '../dist/addons/lazysubmenus/mmenu.lazysubmenus';\nimport navbars from '../dist/addons/navbars/mmenu.navbars';\nimport pageScroll from '../dist/addons/pagescroll/mmenu.pagescroll';\nimport searchfield from '../dist/addons/searchfield/mmenu.searchfield';\nimport sectionIndexer from '../dist/addons/sectionindexer/mmenu.sectionindexer';\nimport setSelected from '../dist/addons/setselected/mmenu.setselected';\nimport sidebar from '../dist/addons/sidebar/mmenu.sidebar';\nimport toggles from '../dist/addons/toggles/mmenu.toggles';\n\n//\tWrappers\nimport angular from '../dist/wrappers/angular/mmenu.angular';\nimport bootstrap from '../dist/wrappers/bootstrap/mmenu.bootstrap';\nimport olark from '../dist/wrappers/olark/mmenu.olark';\nimport turbolinks from '../dist/wrappers/turbolinks/mmenu.turbolinks';\nimport wordpress from '../dist/wrappers/wordpress/mmenu.wordpress';\n\nMmenu.addons = {\n //\tCore add-ons\n offcanvas,\n screenReader,\n scrollBugFix,\n\n //\tAdd-ons\n autoHeight,\n backButton,\n columns,\n counters,\n dividers,\n drag,\n dropdown,\n fixedElements,\n iconbar,\n iconPanels,\n keyboardNavigation,\n lazySubmenus,\n navbars,\n pageScroll,\n searchfield,\n sectionIndexer,\n setSelected,\n sidebar,\n toggles\n};\n\n//\tWrappers\nMmenu.wrappers = {\n angular,\n bootstrap,\n olark,\n turbolinks,\n wordpress\n};\n\n// Export module\nexport default Mmenu;\n\n//\tGlobal namespace\nif (window) {\n window.Mmenu = Mmenu;\n}\n\n//\tjQuery plugin\n(function ($) {\n if ($) {\n $.fn.mmenu = function (options, configs) {\n var $result = $();\n\n this.each(function (e, element) {\n //\tDon't proceed if the element already is a mmenu.\n if (element.mmApi) {\n return;\n }\n\n var menu = new Mmenu(element, options, configs),\n $menu = $(menu.node.menu);\n\n //\tStore the API for backward compat.\n $menu.data('mmenu', menu.API);\n\n $result = $result.add($menu);\n });\n\n return $result;\n };\n }\n})(window.jQuery || window.Zepto || null);\n","export default function () {\n this.opts.onClick = {\n close: true,\n preventDefault: false,\n setSelected: true\n };\n}\n;\n","import * as DOM from '../../_modules/dom';\nexport default function () {\n var _this = this;\n //\tCreate the menu\n if (this.node.menu.matches('.navbar-collapse')) {\n //\tNo need for cloning the menu...\n if (this.conf.offCanvas) {\n this.conf.offCanvas.clone = false;\n }\n //\t... We'll create a new menu\n var nav = DOM.create('nav'), panel = DOM.create('div');\n nav.append(panel);\n DOM.children(this.node.menu).forEach(function (child) {\n switch (true) {\n case child.matches('.navbar-nav'):\n panel.append(cloneNav(child));\n break;\n case child.matches('.dropdown-menu'):\n panel.append(cloneDropdown(child));\n break;\n case child.matches('.form-inline'):\n _this.conf.searchfield.form = {\n action: child.getAttribute('action') || null,\n method: child.getAttribute('method') || null,\n };\n _this.conf.searchfield.input = {\n name: child.querySelector('input').getAttribute('name') ||\n null,\n };\n _this.conf.searchfield.clear = false;\n _this.conf.searchfield.submit = true;\n break;\n default:\n panel.append(child.cloneNode(true));\n break;\n }\n });\n //\tSet the menu\n this.bind('initMenu:before', function () {\n document.body.prepend(nav);\n _this.node.menu = nav;\n });\n //\tHijack the toggler.\n var parent_1 = this.node.menu.parentElement;\n if (parent_1) {\n var toggler = parent_1.querySelector('.navbar-toggler');\n if (toggler) {\n toggler.removeAttribute('data-target');\n // delete toggler.dataset.target; // IE10 has no dataset :(\n toggler.removeAttribute('aria-controls');\n //\tRemove all bound events.\n toggler.outerHTML = toggler.outerHTML;\n toggler = parent_1.querySelector('.navbar-toggler');\n // Open the menu on-click.\n toggler.addEventListener('click', function (evnt) {\n evnt.preventDefault();\n evnt.stopImmediatePropagation();\n _this[_this.vars.opened ? 'close' : 'open']();\n });\n }\n }\n }\n function cloneLink(anchor) {\n var link = DOM.create(anchor.matches('a') ? 'a' : 'span');\n //\tCopy attributes\n var attr = ['href', 'title', 'target'];\n for (var a = 0; a < attr.length; a++) {\n if (anchor.getAttribute(attr[a])) {\n link.setAttribute(attr[a], anchor.getAttribute(attr[a]));\n }\n }\n //\tCopy contents\n link.innerHTML = anchor.innerHTML;\n //\tRemove Screen reader text.\n DOM.find(link, '.sr-only').forEach(function (sro) {\n sro.remove();\n });\n return link;\n }\n function cloneDropdown(dropdown) {\n var list = DOM.create('ul');\n DOM.children(dropdown).forEach(function (anchor) {\n var item = DOM.create('li');\n if (anchor.matches('.dropdown-divider')) {\n item.classList.add('Divider');\n }\n else if (anchor.matches('.dropdown-item')) {\n item.append(cloneLink(anchor));\n }\n list.append(item);\n });\n return list;\n }\n function cloneNav(nav) {\n var list = DOM.create('ul');\n DOM.find(nav, '.nav-item').forEach(function (anchor) {\n var item = DOM.create('li');\n if (anchor.matches('.active')) {\n item.classList.add('Selected');\n }\n if (!anchor.matches('.nav-link')) {\n var dropdown = DOM.children(anchor, '.dropdown-menu')[0];\n if (dropdown) {\n item.append(cloneDropdown(dropdown));\n }\n anchor = DOM.children(anchor, '.nav-link')[0];\n }\n item.prepend(cloneLink(anchor));\n list.append(item);\n });\n return list;\n }\n}\n","export default function () {\n this.conf.offCanvas.page.noSelector.push('#olark');\n}\n;\n","export default function () {\n var classnames;\n document.addEventListener('turbolinks:before-visit', function (evnt) {\n classnames = document\n .querySelector('.mm-wrapper')\n .className.split(' ')\n .filter(function (name) { return /mm-/.test(name); });\n });\n document.addEventListener('turbolinks:load', function (evnt) {\n if (typeof classnames === 'undefined') {\n return;\n }\n document.querySelector('.mm-wrapper').className = classnames;\n });\n}\n","export default function () {\n this.conf.classNames.selected = 'current-menu-item';\n var wpadminbar = document.getElementById('wpadminbar');\n if (wpadminbar) {\n wpadminbar.style.position = 'fixed';\n wpadminbar.classList.add('mm-slideout');\n }\n}\n","/*************************************************/\r\n/* Partials */\r\n/*************************************************/\r\nimport { mmenu } from \"./partials/mmenu.js\";\r\n\r\n/*************************************************/\r\n/* Init */\r\n/*************************************************/\r\n\r\nconst ready = callback => {\r\n if (document.readyState != 'loading') callback();\r\n else document.addEventListener('DOMContentLoaded', callback);\r\n}\r\n\r\nready(() => {\r\n mmenu();\r\n});\r\n","/*************************************************/\r\n/* MMENU */\r\n/*************************************************/\r\nimport Mmenu from 'mmenu-js';\r\n\r\nexport function mmenu() {\r\n let mobileMenu,\r\n mobileMenuTrigger,\r\n breakpointMaxM = 768,\r\n resizeTimer;\r\n\r\n const mobileMenuSelector = '#mobile-menu',\r\n mainContentSelector = '#mainContent';\r\n\r\n const init = function () {\r\n mobileMenu = document.querySelector(mobileMenuSelector);\r\n mobileMenuTrigger = document.querySelector('.mm-trigger');\r\n breakpointMaxM = 768;\r\n\r\n const menu = new Mmenu(mobileMenuSelector, {\r\n // options\r\n 'extensions': [\r\n 'position-right',\r\n 'pagedim-black',\r\n 'border-full',\r\n 'theme-dark',\r\n 'fx-menu-slide',\r\n 'custom-width'\r\n ],\r\n 'navbar': {\r\n add:false\r\n }\r\n }, {\r\n // configuration\r\n offCanvas: {\r\n page: {\r\n nodetype: 'main',\r\n selector:mainContentSelector\r\n }\r\n },\r\n classNames: {\r\n selected: 'custom-mm-selected',\r\n panel: 'custom-mm-panel',\r\n }\r\n });\r\n\r\n // Init mmenu api\r\n const mmenuApi = menu.API;\r\n\r\n // Open menu\r\n mobileMenuTrigger.addEventListener('click', () => {\r\n if (mmenuApi) {\r\n mobileMenu.setAttribute('style', '');\r\n mmenuApi.open();\r\n }\r\n });\r\n\r\n // Close mmenu if screen width gets over breakpointMaxM (768px)\r\n window.addEventListener('resize', e => {\r\n clearTimeout(resizeTimer);\r\n resizeTimer = setTimeout(function () {\r\n const width = document.body.clientWidth;\r\n const mmIsOpened = document.querySelector('body').classList.contains('mm-wrapper_opening');\r\n if (mmenuApi && mmIsOpened && width > breakpointMaxM) {\r\n mmenuApi.close();\r\n }\r\n }, 250);\r\n });\r\n };\r\n\r\n init();\r\n}\r\n"],"names":["hooks","extensions","wrappers","navbar","add","sticky","title","titleLink","onClick","close","preventDefault","setSelected","slidingSubmenus","classNames","inset","nolistview","nopanel","panel","selected","vertical","language","openingInterval","panelNodetype","transitionDuration","extend","orignl","dfault","k","type","hasOwnProperty","variable","toString","call","match","toLowerCase","valueOrFn","element","option","value","transitionend","func","duration","_ended","_fn","evnt","target","removeEventListener","addEventListener","setTimeout","uniqueId","__id","originalId","id","slice","translations","text","create","selector","args","split","elem","document","createElement","shift","forEach","classname","classList","find","filter","Array","prototype","querySelectorAll","children","child","matches","parents","parent","parentElement","push","filterLI","listitems","listitem","filterLIA","anchors","apply","anchor","reClass","oldClass","newClass","remove","listeners","query","yes","no","fire","mqlist","fn","m","length","fa","de","ru","Mmenu","menu","options","configs","this","opts","conf","_api","node","vars","hook","clck","querySelector","_deprecatedWarnings","_initWrappers","_initAddons","_initExtensions","_initHooks","_initAPI","_initMenu","_initPanels","_initOpened","_initAnchors","_loop_1","window","matchMedia","onchange","openPanel","animation","_this","trigger","closest","panels","pnls","current_1","parent_1","hidden","openPanelStart_1","openPanelFinish_1","closePanel","li","closeAllPanels","opened","togglePanel","bind","h","l","that","API","re","arguments","w","wrpr","addon","addons","all","Object","keys","classnames","map","extension","indexOf","nodeName","append","inMenu","href","getAttribute","err","initPanel","join","_initPanel","children_1","listview","removeAttribute","wrapper","before","item","button","setAttribute","innerHTML","insertBefore","nextElementSibling","_initNavbar","initListview","parentListitem","parentPanel","prev","opener","titleText","textContent","i18n","prepend","lastitem","current","inListview","toExternal","c","click","offCanvas","blockUI","moveBackground","clone","insertMethod","insertSelector","page","nodetype","noSelector","ucFirst","word","charAt","toUpperCase","on","handler","evntParts","off","_openSetup","_openStart","closeAllOthers","force","clsn","body","api","pages","wrapper_1","initWindow","keyCode","initBlocker","blck","closeMenu","stopPropagation","aria","closeSubmenu","openSubmenu","toggleSubmenu","attr","name","fix","touch","navigator","msMaxTouchPoints","height","open","visible","min","max","addTo","count","counter","top","right","bottom","left","start","swipe","directionNames","x","y","state","percentage2number","position","size","parseInt","DragEvents","surface","area","treshold","stop","move","event","currentPosition","touches","pageX","pageY","width","clientWidth","clientHeight","startPosition","dragDirection","_dragDirection","detail","_eventDetail","_dispatchEvents","Math","abs","movement","axis","swipeDirection","_swipeDirection","direction","changedTouches","distance","distX","distY","movementX","movementY","distanceX","distanceY","eventName","CustomEvent","replace","dispatchEvent","dragInstance","dragNode","maxDistance","moving","addMatchMedia","queries","getPositionVars","zposition","slideOutNodes","style","open_1","pos","drop","fitViewport","tip","offset","viewport","fixed","use","blockPanel","hideDivider","hideNavbar","enable","enhance","next","focus","Event","api_1","load","breadcrumbs","separator","removeFirst","Navbars","navs","navbars","content","ctnt","navbarContents","navbarTypes","panelPrev","panelTitle","crumbs","first","unshift","screenReader","org","_url","_txt","searchfield","original","btn","tabs","stopImmediatePropagation","selectTab","scroll","update","scrollOffset","updateOffset","cancel","noResults","placeholder","dividers","fx","splash","search","showTextItems","showSubPanels","clear","form","input","submit","Search","__spreadArrays","s","i","il","r","a","j","jl","initSearchPanel","searchpanel","initSearchfield","addAttributes","field","autocomplete","initSearching","data","noresults","_a","_b","initNoResultsMsg","message","trim","buttons","scrollTop","divider","childNodes","nodeType","hasResults","allitems_1","cloneNode","reverse","p","previous","previousElementSibling","hover","collapsed","blockMenu","expanded","initial","toggle","check","offcanvas","extendShorthandOptions","setPage","hash","location","hide","scrollBugFix","touchDir","get","passive","pop","scrollHeight","offsetHeight","autoHeight","measurablePanel","setHeight","highest","_hgh","_dif","backButton","_menu","states","setStates","history","pushState","back","pathname","columns","colm","colp","rmvc","contains","className","colnr","counters","cntrclss","lastletter","letter","drag","dropdown","of","events","getPosition","dir","obj","val","css","cls","_outerSize","_startPos","_stopPos","_size","_winSize","_maxSize","_position","startPos","getBoundingClientRect","stopPos","windowSize","offs","fixedElements","_fixd","wrppr","fxd","iconbar","n","part","classname_1","selectTab_1","iconPanels","keepFirst","classnames_1","panelAdded_1","blocker","keyboardNavigation","menuStart_1","menuEnd_1","blockerEnd_1","focusable_1","setFocus","activeElement","elements_1","tabber","lazySubmenus","console","log","pageScroll","section","scrollTo","scrollingElement","behavior","anchorInPage","scts_1","_selected_1","scrollY","offsetTop","blur","sectionIndexer","indx","buttons_1","indexer","mouseOverEvent","newTop","oldTop","active","findCurrent_1","url","arr","sidebar","disable","localStorage","setItem","initialState","getItem","toggles","angular","bootstrap","nav","list","cloneDropdown","cloneLink","cloneNav","action","method","toggler","outerHTML","link","sro","olark","turbolinks","test","wordpress","wpadminbar","getElementById","$","jQuery","Zepto","mmenu","$result","each","e","mmApi","$menu","callback","mobileMenu","mobileMenuTrigger","resizeTimer","breakpointMaxM","mobileMenuSelector","mmenuApi","clearTimeout","mmIsOpened","init","readyState"],"sourceRoot":""}