{"version":3,"file":"js/mmenu.js","mappings":"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","sources":["webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/oncanvas/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/oncanvas/_configs.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/_modules/helpers.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/_modules/i18n.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/oncanvas/translations/nl.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/oncanvas/translations/fa.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/oncanvas/translations/de.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/oncanvas/translations/ru.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/_modules/dom.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/_modules/matchmedia.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/oncanvas/translations/translate.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/oncanvas/mmenu.oncanvas.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/offcanvas/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/offcanvas/_configs.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/_modules/eventlisteners.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/offcanvas/mmenu.offcanvas.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/screenreader/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/screenreader/_configs.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/screenreader/translations/fa.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/screenreader/translations/de.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/screenreader/translations/ru.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/screenreader/mmenu.screenreader.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/screenreader/translations/translate.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/screenreader/translations/nl.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/scrollbugfix/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/_modules/support.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/core/scrollbugfix/mmenu.scrollbugfix.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/autoheight/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/autoheight/mmenu.autoheight.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/backbutton/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/backbutton/mmenu.backbutton.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/columns/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/columns/mmenu.columns.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/counters/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/counters/mmenu.counters.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/dividers/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/dividers/mmenu.dividers.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/drag/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/_modules/dragevents/_support.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/_modules/dragevents/_defaults.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/_modules/dragevents/_settings.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/_modules/dragevents/_helpers.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/_modules/dragevents/index.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/drag/_drag.open.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/drag/mmenu.drag.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/dropdown/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/dropdown/_configs.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/dropdown/mmenu.dropdown.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/fixedelements/_configs.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/fixedelements/mmenu.fixedelements.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/iconbar/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/iconbar/mmenu.iconbar.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/iconpanels/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/iconpanels/mmenu.iconpanels.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/keyboardnavigation/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/keyboardnavigation/mmenu.keyboardnavigation.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/lazysubmenus/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/lazysubmenus/mmenu.lazysubmenus.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/navbars/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/navbars/_configs.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/navbars/mmenu.navbars.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/navbars/_navbar.breadcrumbs.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/navbars/_navbar.close.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/navbars/_navbar.prev.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/navbars/_navbar.searchfield.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/navbars/_navbar.title.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/navbars/_navbar.tabs.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/pagescroll/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/pagescroll/_configs.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/pagescroll/mmenu.pagescroll.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/searchfield/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/searchfield/_configs.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/searchfield/translations/fa.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/searchfield/translations/de.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/searchfield/translations/ru.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/searchfield/mmenu.searchfield.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/searchfield/translations/translate.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/searchfield/translations/nl.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/sectionindexer/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/sectionindexer/mmenu.sectionindexer.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/setselected/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/setselected/mmenu.setselected.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/sidebar/_options.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/sidebar/mmenu.sidebar.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/addons/toggles/mmenu.toggles.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/src/mmenu.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/wrappers/angular/mmenu.angular.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/wrappers/bootstrap/mmenu.bootstrap.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/wrappers/olark/mmenu.olark.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/wrappers/turbolinks/mmenu.turbolinks.js","webpack://clienti-boilerplate-webpack-umbraco/./node_modules/mmenu-js/dist/wrappers/wordpress/mmenu.wordpress.js","webpack://clienti-boilerplate-webpack-umbraco/./src/scripts/mmenu.js","webpack://clienti-boilerplate-webpack-umbraco/./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 = 992,\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 = 992;\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 ]\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 (992px)\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","media","openPanel","animation","_this","trigger","closest","DOM","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","open","_openSetup","_openStart","closeAllOthers","events","force","clsn","body","api","setPage","pages","wrapper_1","initWindow","keyCode","initBlocker","blck","closeMenu","stopPropagation","aria","closeSubmenu","openSubmenu","toggleSubmenu","attr","screenReader","sr_aria","name","sr_role","sr_text","fix","touch","navigator","msMaxTouchPoints","scrollBugFix","height","autoHeight","backButton","visible","min","max","columns","addTo","count","counters","counter","dividers","divider","area","top","right","bottom","left","treshold","start","swipe","directionNames","x","y","state","percentage2number","position","size","parseInt","DragEvents","surface","support","stop","move","event","currentPosition","touches","pageX","pageY","width","clientWidth","clientHeight","startPosition","settings","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","drag","drop","fitViewport","tip","offset","viewport","dropdown","fixedElements","fixed","use","iconbar","blockPanel","hideDivider","hideNavbar","iconPanels","enable","enhance","keyboardNavigation","next","focus","Event","api_1","load","lazySubmenus","breadcrumbs","separator","removeFirst","Navbars","navs","navbars","content","extendShorthandOptions","ctnt","navbarContents","navbarTypes","panelPrev","panelTitle","crumbs","first","unshift","org","_url","_txt","searchfield","original","btn","tabs","stopImmediatePropagation","selectTab","scroll","update","scrollOffset","updateOffset","pageScroll","cancel","noResults","placeholder","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","childNodes","nodeType","hasResults","allitems_1","cloneNode","reverse","p","previous","previousElementSibling","sectionIndexer","hover","collapsed","blockMenu","expanded","initial","sidebar","toggles","toggle","check","offcanvas","hash","location","hide","touchDir","get","passive","pop","scrollHeight","offsetHeight","measurablePanel","setHeight","highest","_hgh","_dif","_menu","states","setStates","history","pushState","back","pathname","colm","colp","rmvc","contains","className","colnr","cntrclss","lastletter","letter","dragOpen","of","getPosition","dir","obj","val","css","cls","_outerSize","_startPos","_stopPos","_size","_winSize","_maxSize","_position","startPos","getBoundingClientRect","stopPos","windowSize","offs","_fixd","wrppr","fxd","n","part","classname_1","selectTab_1","keepFirst","classnames_1","panelAdded_1","blocker","menuStart_1","menuEnd_1","blockerEnd_1","focusable_1","setFocus","activeElement","elements_1","tabber","console","log","section","scrollTo","scrollingElement","behavior","anchorInPage","scts_1","_selected_1","scrollY","offsetTop","blur","indx","buttons_1","indexer","mouseOverEvent","newTop","oldTop","active","findCurrent_1","url","arr","disable","localStorage","setItem","initialState","getItem","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":""}