{"version":3,"file":"main.js","mappings":"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","sources":["webpack://build/webpack/runtime/load script","webpack://build/webpack/runtime/jsonp chunk loading","webpack://build/../basicodesign/assets/javascripts/components/utilities.js","webpack://build/../basicodesign/assets/javascripts/components/vndaComponents.js","webpack://build/external var \"Swiper\"","webpack://build/webpack/bootstrap","webpack://build/webpack/runtime/compat get default export","webpack://build/webpack/runtime/define property getters","webpack://build/webpack/runtime/ensure chunk","webpack://build/webpack/runtime/get javascript chunk filename","webpack://build/webpack/runtime/global","webpack://build/webpack/runtime/hasOwnProperty shorthand","webpack://build/webpack/runtime/make namespace object","webpack://build/webpack/runtime/publicPath","webpack://build/../basicodesign/node_modules/mmenu-js/dist/core/oncanvas/options.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/core/oncanvas/mmenu.oncanvas.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/core/oncanvas/configs.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/_modules/helpers.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/_modules/i18n.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/_modules/dom.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/_modules/matchmedia.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/core/oncanvas/translations/index.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/core/oncanvas/translations/de.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/core/oncanvas/translations/fa.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/core/oncanvas/translations/nl.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/core/oncanvas/translations/pt_br.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/core/oncanvas/translations/ru.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/core/oncanvas/translations/sk.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/core/oncanvas/translations/uk.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/core/offcanvas/options.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/core/offcanvas/configs.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/core/offcanvas/mmenu.offcanvas.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/core/scrollbugfix/options.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/_modules/support.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/core/theme/mmenu.theme.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/backbutton/options.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/counters/options.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/iconbar/options.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/iconpanels/_options.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/navbars/configs.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/navbars/mmenu.navbars.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/navbars/options.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/navbars/navbar.breadcrumbs.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/navbars/navbar.close.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/navbars/navbar.prev.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/navbars/navbar.searchfield.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/navbars/navbar.title.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/navbars/navbar.tabs.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/pagescroll/options.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/pagescroll/configs.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/searchfield/options.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/searchfield/configs.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/searchfield/translations/index.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/searchfield/translations/de.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/searchfield/translations/fa.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/searchfield/translations/nl.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/searchfield/translations/pt_br.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/searchfield/translations/ru.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/searchfield/translations/sk.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/searchfield/translations/uk.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/searchfield/mmenu.searchfield.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/sectionindexer/options.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/setselected/options.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/sidebar/options.js","webpack://build/../basicodesign/node_modules/mmenu-js/src/mmenu.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/core/scrollbugfix/mmenu.scrollbugfix.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/core/theme/options.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/backbutton/mmenu.backbutton.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/counters/mmenu.counters.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/iconbar/mmenu.iconbar.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/iconpanels/mmenu.iconpanels.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/pagescroll/mmenu.pagescroll.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/sectionindexer/mmenu.sectionindexer.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/setselected/mmenu.setselected.js","webpack://build/../basicodesign/node_modules/mmenu-js/dist/addons/sidebar/mmenu.sidebar.js","webpack://build/../basicodesign/assets/javascripts/common/menuMobile.js","webpack://build/../basicodesign/assets/javascripts/common/headerCart.js","webpack://build/../basicodesign/assets/javascripts/common/footerTabs.js","webpack://build/../basicodesign/assets/javascripts/components/popup.js","webpack://build/../basicodesign/assets/javascripts/common/fixedHeader.js","webpack://build/../basicodesign/assets/javascripts/common/webforms.js","webpack://build/../basicodesign/assets/javascripts/common/search.js","webpack://build/../basicodesign/assets/javascripts/main.js"],"sourcesContent":["var inProgress = {};\nvar dataWebpackPrefix = \"build:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkbuild\"] = self[\"webpackChunkbuild\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// ===============================================================\r\n// Busca Preço de Produtos por Ajax\r\n// ===============================================================\r\nexport function getPriceProd() {\r\n const attr = 'data-update-price';\r\n const processedAttr = 'data-price-processed';\r\n const products = document.querySelectorAll(`[${attr}]`);\r\n\r\n if (products.length > 0)\r\n products.forEach((product) => {\r\n const processed = product.getAttribute(processedAttr);\r\n\r\n if (processed != 'true') {\r\n const prodId = product.getAttribute(attr);\r\n const url = `/produto/preco/${prodId}`;\r\n\r\n if (prodId != null && prodId != '') {\r\n $.ajax({\r\n url: url,\r\n type: 'GET',\r\n })\r\n .done(function (resp) {\r\n // console.info(resp);\r\n product.innerHTML = resp;\r\n product.setAttribute(processedAttr, true);\r\n })\r\n .fail(function (resp) {\r\n // console.error(`Falha ao buscar o preço do produto ${prodId}`);\r\n // console.log(resp);\r\n });\r\n }\r\n }\r\n });\r\n}\r\n\r\n// ===============================================================\r\n// DEBOUNCE\r\n// ===============================================================\r\n/*\r\n Debounce retorna uma função que enquanto continuar sendo chamada não é executada\r\n A função só será executada quando para de ser chamada por N milisegundos\r\n Útil para melhorar a performance de códigos que são executados muitas vezes por segundo, como o $(window).resize()\r\n\r\n Ex:\r\n \r\n $(window).resize(debounce(function() {\r\n // código a ser executado\r\n }, 500))\r\n \r\n No exemplo acima a função só será executada 500ms depois do último resize\r\n Abra o link abaixo e redimensione a janela branca e acompanhe o output do console\r\n Exemplo codepen: https://codepen.io/valkervieira/pen/oNgqyWY\r\n\r\n Um caso comum de uso é em lojas onde a seleção de um filtro na página de tag recarrega automáticamente a página\r\n Com o debounce o usuário pode escolher vários filtros rapidamente e a página só recarrega quando parar de escolher\r\n*/\r\n\r\nexport function debounce(func, wait, immediate) {\r\n var timeout;\r\n immediate || (immediate = true);\r\n\r\n return function () {\r\n var context = this,\r\n args = arguments;\r\n\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n\r\n var callNow = immediate && !timeout;\r\n\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(later, wait);\r\n\r\n if (callNow) func.apply(context, args);\r\n };\r\n}\r\n\r\n// ===============================================================\r\n// THROTTLE\r\n// ===============================================================\r\n/*\r\n Throttle diminui a frequencia que uma função é executada\r\n Enquanto no debounce a função só é executada quando para de ser chamada, no throttle ela\r\n continua sendo executada só que em um intervalo mínimo de N milisegundos (default = 250)\r\n\r\n Ex:\r\n\r\n $(window).resize(throttle() {\r\n // código a ser executado\r\n }, 500)\r\n\r\n No exemplo acima a função resize é chamada várias vezes por segundo mas só é executada 1 vez a cada 500ms\r\n Abra o link abaixo, redimensione a janela branca e acompanhe o console\r\n Exemplo codepen: https://codepen.io/valkervieira/pen/yLyKEPW\r\n\r\n Um caso comum de uso é checar se o scroll passou de um determinado ponto, para fixar um header ou alterar algum elemento do DOM\r\n*/\r\nexport function throttle(fn, threshhold, scope) {\r\n threshhold || (threshhold = 250);\r\n var last, deferTimer;\r\n return function () {\r\n var context = scope || this;\r\n\r\n var now = +new Date(),\r\n args = arguments;\r\n if (last && now < last + threshhold) {\r\n // hold on to it\r\n clearTimeout(deferTimer);\r\n deferTimer = setTimeout(function () {\r\n last = now;\r\n fn.apply(context, args);\r\n }, threshhold);\r\n } else {\r\n last = now;\r\n fn.apply(context, args);\r\n }\r\n };\r\n}\r\n\r\n// ===============================================================\r\n// FORMAT MONEY\r\n// ===============================================================\r\nexport function formatMoney(value) {\r\n // FORMATA UM VALOR\r\n return (\r\n 'R$ ' +\r\n value\r\n .toFixed(2)\r\n .replace('.', ',')\r\n .replace(/(\\d)(?=(\\d{3})+\\,)/g, '$1.')\r\n );\r\n}\r\n\r\n// ===============================================================\r\n// FORMAT VALUE\r\n// ===============================================================\r\n\r\nexport const formatValue = function (value = '') {\r\n let parsedValue = value;\r\n if (typeof value === 'number') {\r\n parsedValue = value.toFixed(2).toString();\r\n }\r\n return parsedValue.replace('.', ',');\r\n};\r\n\r\n// ===============================================================\r\n// VALIDA QUANTIDADE\r\n// ===============================================================\r\nexport function validateQuantity(_val) {\r\n // VALIDA SE A QUANTIDADE INFORMADA É UM NÚMERO\r\n if (!isNaN(_val)) {\r\n if (parseInt(_val) > 0) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\n// ===============================================================\r\n// CLEAR NUMBER\r\n// ===============================================================\r\nexport function getClearNumber(_val) {\r\n // RETORNA UM NÚMERO LIMPO COMO INT\r\n if (!isNaN(_val)) {\r\n clearNumber = parseInt(_val);\r\n\r\n return clearNumber;\r\n }\r\n\r\n return false;\r\n}\r\n\r\n// ===============================================================\r\n// MENSAGEM DE RESPOSTA\r\n// ===============================================================\r\nexport function setMsgResponse(_msg, _type, _$parent) {\r\n /*\r\n O tipo pode conter um dos 3 valores: success, warning, error ou CLEAR.\r\n O type CLEAR limpa as mensagens e faz sumir a mensagem\r\n O elemento _$parent precisa ter uma div [data-msg-retorno], com uma div [data-msg] dentro,\r\n para exibir a mensagem corretamente no local\r\n */\r\n\r\n // Verifica se não há mais de uma mensagem\r\n // caso tenha, gera um html para cada mensagem\r\n if (Array.isArray(_msg)) {\r\n var msgArr = _msg;\r\n _msg = '';\r\n for (var i = msgArr.length - 1; i >= 0; i--) {\r\n _msg += '' + msgArr[i] + '';\r\n }\r\n }\r\n\r\n _$parent\r\n .find('[data-msg-retorno]')\r\n .removeClass('success')\r\n .removeClass('warning')\r\n .removeClass('error');\r\n\r\n _$parent.find('[data-msg-retorno] [data-msg]').empty();\r\n\r\n if (_type != 'clear') {\r\n _$parent.find('[data-msg-retorno]').addClass(_type);\r\n _$parent.find('[data-msg-retorno] [data-msg]').html(_msg);\r\n }\r\n}\r\n\r\nexport function pageLoading() {\r\n let lettersList = $('.page-loading .item');\r\n\r\n function funcLoading(i) {\r\n $(lettersList).removeClass('show');\r\n $(lettersList[i]).addClass('show');\r\n if (i < lettersList.length) {\r\n setTimeout(function () {\r\n i++;\r\n funcLoading(i);\r\n }, 100);\r\n } else {\r\n $('.page-loading').addClass('hide');\r\n $('.topo-page .title h2').addClass('show');\r\n $('.topo-page .title h1').addClass('show');\r\n }\r\n }\r\n\r\n window.addEventListener('load', function () {\r\n funcLoading(0);\r\n });\r\n}\r\n","// ===============================================================\r\n// CART DRAWER\r\n// ===============================================================\r\nexport function setCartDrawer() {\r\n window.addEventListener('load', () => {\r\n // Seleciona o elemento\r\n const root = document.querySelector('#component-cart-drawer-root');\r\n\r\n // Define frete grátis\r\n const free_shipping_value = root.getAttribute('data-free');\r\n\r\n // Inicia o componente\r\n const componentCartDrawer = new Vnda.Component.CartDrawer({\r\n anchor: 'right',\r\n display: 'list',\r\n startOpen: false,\r\n titleCart: 'Carrinho de compras',\r\n disableShippingCalculation: true,\r\n freeShipping: free_shipping_value,\r\n });\r\n\r\n // Renderiza o componente\r\n componentCartDrawer.render(root);\r\n\r\n // Adiciona o evento de abertura\r\n let open = document.querySelector('[data-toggle-cart]');\r\n if (open) open.addEventListener('click', componentCartDrawer.toggle);\r\n\r\n // Adiciona o componente ao escopo global\r\n window.componentCartDrawer = componentCartDrawer;\r\n });\r\n}\r\n\r\n// ===============================================================\r\n// NEWSLETTER POPUP\r\n// ===============================================================\r\nexport function setNewsletterPopup() {\r\n window.addEventListener('load', () => {\r\n\r\n // Seleciona o elemento\r\n const root = document.querySelector('#component-popup-newsletter-root');\r\n\r\n // Define propriedades do componente\r\n let maxWidth = window.data_popup.maxWidth;\r\n let imageUrl = window.data_popup.imageUrl;\r\n let title = window.data_popup.title;\r\n let description = window.data_popup.description;\r\n let subdomain = window.data_popup.subdomain;\r\n let successMessage = window.data_popup.success;\r\n\r\n // Inicia o componente\r\n const componentNewsletterPopup = new Vnda.Component.NewsletterPopup({\r\n maxWidth: maxWidth,\r\n maxHeight: 500,\r\n imageUrl: imageUrl,\r\n imagePosition: 'left',\r\n popupPosition: 'center',\r\n title: title,\r\n description: description,\r\n textBtnSubmit: 'Enviar',\r\n classBtnSubmit: 'btn-newsletter',\r\n formKey: `${subdomain}-newsletter`,\r\n hasNameField: false,\r\n hasLastNameField: false,\r\n hasDateOfBirthField: false,\r\n hasPhoneField: false,\r\n successMessage: successMessage,\r\n delay: 500,\r\n frequency: '1',\r\n language: 'pt-BR'\r\n });\r\n\r\n // Renderiza o componente\r\n componentNewsletterPopup.render(root);\r\n \r\n });\r\n}\r\n\r\n\r\n// ===============================================================\r\n// FILTROS\r\n// ===============================================================\r\nexport function setFilters() {\r\n window.addEventListener('load', () => {\r\n // Seleciona o elemento\r\n const root = document.querySelector(\r\n '#component-products-filter-drawer-root'\r\n );\r\n var propertiesList = [];\r\n\r\n // Define filtros de categoria\r\n let tags = aggregations.types.categoria && [\r\n {\r\n title: 'Categoria',\r\n type: 'categoria',\r\n style: 'grid',\r\n options: aggregations.types.categoria,\r\n },\r\n ];\r\n\r\n // Define filtros do primeiro atributo\r\n let property1 = aggregations.properties.property1.length > 0 && {\r\n title: 'Cor',\r\n property: 'property1',\r\n style: 'colors',\r\n colorsProps: {\r\n showTitle: true,\r\n showColor: true,\r\n },\r\n options: aggregations.properties.property1,\r\n };\r\n\r\n if (property1) {\r\n propertiesList.push(property1);\r\n }\r\n\r\n // Ordena tamanhos\r\n const sizesOrder = ['pp', 'p', 'm', 'g', 'gg', 'xg'];\r\n const sizes = aggregations.properties.property2;\r\n const newSizes = sizes.sort((optionA, optionB) => {\r\n return (\r\n sizesOrder.indexOf(optionA.value.toLowerCase()) -\r\n sizesOrder.indexOf(optionB.value.toLowerCase())\r\n );\r\n });\r\n\r\n // Define filtros do segundo atributo\r\n let property2 = aggregations.properties.property2.length > 0 && {\r\n title: 'Tamanho',\r\n property: 'property2',\r\n style: 'grid',\r\n gridProps: {\r\n columns: 4,\r\n },\r\n options: newSizes,\r\n };\r\n\r\n if (property2) {\r\n propertiesList.push(property2);\r\n }\r\n\r\n // Define filtros do terceiro atributo\r\n let property3 = aggregations.properties.property3.length > 0 && {\r\n title: 'Tecido',\r\n property: 'property3',\r\n style: 'grid',\r\n gridProps: {\r\n columns: 4,\r\n },\r\n options: aggregations.properties.property3,\r\n };\r\n\r\n if (property3) {\r\n propertiesList.push(property3);\r\n }\r\n\r\n // Inicia o componente\r\n const componentFilters = new Vnda.Component.ProductsFilter({\r\n mode: 'drawer',\r\n hasSort: true,\r\n filterOnClick: true,\r\n resetMode: 'all',\r\n // tags type \"categoria\"\r\n tags: tags,\r\n // properties\r\n properties: propertiesList,\r\n // price\r\n price: [aggregations.min_price, aggregations.max_price],\r\n });\r\n\r\n // Renderiza o componente\r\n componentFilters.render(root);\r\n\r\n // Adiciona evento de abertura\r\n let open = document.querySelector('.open-filter');\r\n if (open) open.addEventListener('click', componentFilters.toggle);\r\n });\r\n}\r\n\r\n// ===============================================================\r\n// LOGIN\r\n// ===============================================================\r\nexport function setLogin() {\r\n window.addEventListener('load', () => {\r\n // Seleciona o elemento\r\n const root = document.querySelector('#component-login-static-root');\r\n\r\n // Define link para o Facebook\r\n let facebook_connect_url = root.getAttribute('data-facebook');\r\n\r\n // Inicia o componente\r\n window.componentLogin = {};\r\n window.componentLogin['static'] = new Vnda.Component.Login({\r\n mode: 'static',\r\n formProps: {\r\n login: {\r\n buttons: {\r\n facebook: {\r\n link: facebook_connect_url,\r\n },\r\n },\r\n hasFacebook: false,\r\n },\r\n register: {\r\n buttons: {\r\n facebook: {\r\n link: facebook_connect_url,\r\n },\r\n },\r\n hasFacebook: false,\r\n },\r\n },\r\n });\r\n\r\n // Renderiza o componente\r\n componentLogin['static'].render(root);\r\n });\r\n}\r\n","module.exports = Swiper;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","const options = {\n hooks: {},\n navbar: {\n add: true,\n title: 'Menu',\n titleLink: 'parent'\n },\n slidingSubmenus: true\n};\nexport default options;\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar _panelObserver, _listviewObserver, _listitemObserver;\nimport OPTIONS from './options';\nimport CONFIGS from './configs';\nimport translate from './translations';\nimport * as DOM from '../../_modules/dom';\nimport * as i18n from '../../_modules/i18n';\nimport * as media from '../../_modules/matchmedia';\nimport { extend, type, uniqueId, } from '../../_modules/helpers';\n// Add the translations.\ntranslate();\n/**\n * Class for a mobile menu.\n */\nexport default class Mmenu {\n /**\n * Create a mobile menu.\n * @param {HTMLElement|string} \tmenu\t\tThe menu node.\n * @param {object} \t\t\t\t[option]\tOptions for the menu.\n * @param {object} \t\t\t\t[configs]\tConfiguration options for the menu.\n */\n constructor(menu, options, configs) {\n /** MutationObserver for adding a listview to a panel. */\n _panelObserver.set(this, void 0);\n /** MutationObserver for adding a listitem to a listview. */\n _listviewObserver.set(this, void 0);\n /** MutationObserver for adding a listview to a listitem. */\n _listitemObserver.set(this, void 0);\n //\tExtend options and configuration from defaults.\n this.opts = extend(options, OPTIONS);\n this.conf = extend(configs, CONFIGS);\n //\tMethods to expose in the API.\n this._api = [\n 'i18n',\n 'bind',\n 'openPanel',\n 'closePanel',\n 'setSelected',\n ];\n //\tStorage objects for nodes and hooks.\n this.node = {};\n this.hook = {};\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.trigger('init:before');\n this._initObservers();\n this._initAddons();\n this._initHooks();\n this._initAPI();\n this._initMenu();\n this._initPanels();\n this._initOpened();\n media.watch();\n this.trigger('init:after');\n return this;\n }\n /**\n * Open a panel.\n * @param {HTMLElement} panel Panel to open.\n * @param {boolean} [animation=true] Whether or not to use an animation.\n * @param {boolean} [setfocus=true] Whether or not to set focus to the panel.\n */\n openPanel(panel, animation = true, setfocus = true) {\n //\tFind panel.\n if (!panel) {\n return;\n }\n panel = panel.closest('.mm-panel');\n //\tInvoke \"before\" hook.\n this.trigger('openPanel:before', [panel, {\n animation,\n setfocus\n }]);\n /** Wrapping listitem (for a vertical panel) */\n const listitem = panel.closest('.mm-listitem--vertical');\n //\tOpen a \"vertical\" panel.\n if (listitem) {\n listitem.classList.add('mm-listitem--opened');\n /** The parent panel */\n const parent = listitem.closest('.mm-panel');\n this.openPanel(parent);\n //\tOpen a \"horizontal\" panel.\n }\n else {\n /** Currently opened panel. */\n const current = DOM.children(this.node.pnls, '.mm-panel--opened')[0];\n // Ensure current panel stays on top while closing it.\n if (panel.matches('.mm-panel--parent') && current) {\n current.classList.add('mm-panel--highest');\n }\n // Remove opened, parent, animation and highest classes from all panels.\n const remove = ['mm-panel--opened', 'mm-panel--parent'];\n const add = [];\n if (animation) {\n remove.push('mm-panel--noanimation');\n }\n else {\n add.push('mm-panel--noanimation');\n }\n DOM.children(this.node.pnls, '.mm-panel').forEach(pnl => {\n pnl.classList.add(...add);\n pnl.classList.remove(...remove);\n if (pnl !== current) {\n pnl.classList.remove('mm-panel--highest');\n }\n // Set inert attribute.\n if (pnl === panel) {\n pnl.removeAttribute('inert');\n }\n else {\n pnl.setAttribute('inert', 'true');\n }\n });\n // Open new panel.\n panel.classList.add('mm-panel--opened');\n /** The parent panel */\n let parent = DOM.find(this.node.pnls, `#${panel.dataset.mmParent}`)[0];\n //\tSet parent panels as \"parent\".\n while (parent) {\n parent = parent.closest('.mm-panel');\n parent.classList.add('mm-panel--parent');\n parent = DOM.find(this.node.pnls, `#${parent.dataset.mmParent}`)[0];\n }\n }\n //\tInvoke \"after\" hook.\n this.trigger('openPanel:after', [panel, {\n animation,\n setfocus\n }]);\n }\n /**\n * Close a panel.\n * @param {HTMLElement} panel Panel to close.\n * @param {boolean} [animation=true] Whether or not to use an animation.\n * @param {boolean} [setfocus=true] Whether or not to set focus to the panel.\n */\n closePanel(panel, animation = true, setfocus = true) {\n if (!panel) {\n return;\n }\n if (!panel.matches('.mm-panel--opened') &&\n !panel.parentElement.matches('.mm-listitem--opened')) {\n return;\n }\n //\tInvoke \"before\" hook.\n this.trigger('closePanel:before', [panel]);\n //\tClose a \"vertical\" panel.\n if (panel.parentElement.matches('.mm-listitem--vertical')) {\n panel.parentElement.classList.remove('mm-listitem--opened');\n // Close a \"horizontal\" panel...\n }\n else {\n // ... open its parent...\n if (panel.dataset.mmParent) {\n const parent = DOM.find(this.node.pnls, `#${panel.dataset.mmParent}`)[0];\n this.openPanel(parent, animation, setfocus);\n // ... or the last opened\n }\n else {\n const lastPanel = DOM.children(this.node.pnls, '.mm-panel--parent').pop();\n if (lastPanel && lastPanel !== panel) {\n this.openPanel(lastPanel, animation, setfocus);\n // ... or the first panel.\n }\n else {\n const firstPanel = DOM.children(this.node.pnls, '.mm-panel')[0];\n if (firstPanel && firstPanel !== panel) {\n this.openPanel(firstPanel, animation, setfocus);\n }\n }\n }\n }\n //\tInvoke \"after\" hook.\n this.trigger('closePanel:after', [panel]);\n }\n /**\n * Toggle a panel opened/closed.\n * @param {HTMLElement} panel Panel to open or close.\n */\n togglePanel(panel) {\n const listitem = panel.parentElement;\n /** The function to invoke (open or close). */\n let fn = 'openPanel';\n //\tToggle only works for \"vertical\" panels.\n if (listitem.matches('.mm-listitem--opened') ||\n panel.matches('.mm-panel--opened')) {\n fn = 'closePanel';\n }\n this[fn](panel);\n }\n /**\n * Display a listitem as being \"selected\".\n * @param {HTMLElement} listitem Listitem to mark.\n */\n setSelected(listitem) {\n //\tInvoke \"before\" hook.\n this.trigger('setSelected:before', [listitem]);\n //\tRemove the selected class from all listitems.\n DOM.find(this.node.menu, '.mm-listitem--selected').forEach((li) => {\n li.classList.remove('mm-listitem--selected');\n });\n //\tAdd 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 bind(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 trigger(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 observers.\n */\n _initObservers() {\n __classPrivateFieldSet(this, _panelObserver, new MutationObserver((mutationsList) => {\n mutationsList.forEach((mutation) => {\n mutation.addedNodes.forEach((listview) => {\n if (listview.matches(this.conf.panelNodetype.join(', '))) {\n this._initListview(listview);\n }\n });\n });\n }));\n __classPrivateFieldSet(this, _listviewObserver, new MutationObserver((mutationsList) => {\n mutationsList.forEach((mutation) => {\n mutation.addedNodes.forEach((listitem) => {\n this._initListitem(listitem);\n });\n });\n }));\n __classPrivateFieldSet(this, _listitemObserver, new MutationObserver((mutationsList) => {\n mutationsList.forEach((mutation) => {\n mutation.addedNodes.forEach((subpanel) => {\n if (subpanel === null || subpanel === void 0 ? void 0 : subpanel.matches(this.conf.panelNodetype.join(', '))) {\n this._initSubPanel(subpanel);\n }\n });\n });\n }));\n }\n /**\n * Create the API.\n */\n _initAPI() {\n //\tWe need this=that because:\n //\t1) the \"arguments\" object can not be referenced in an arrow function in ES3 and ES5.\n const that = this;\n this.API = {};\n this._api.forEach((fn) => {\n this.API[fn] = function () {\n return that[fn].apply(that, arguments); // 1)\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 _initHooks() {\n for (let hook in this.opts.hooks) {\n this.bind(hook, this.opts.hooks[hook]);\n }\n }\n /**\n * Initialize all available add-ons.\n */\n _initAddons() {\n //\tInvoke \"before\" hook.\n this.trigger('initAddons:before');\n for (let 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 menu.\n */\n _initMenu() {\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 class to the menu.\n this.node.menu.classList.add('mm-menu');\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 this.node.menu.setAttribute('aria-label', this.i18n(this.opts.navbar.title || 'Menu'));\n this.node.menu.setAttribute('aria-modal', 'true');\n this.node.menu.setAttribute('role', 'dialog');\n /** All panel nodes in the menu. */\n const panels = DOM.children(this.node.menu).filter((panel) => panel.matches(this.conf.panelNodetype.join(', ')));\n //\tWrap the panels in a node.\n this.node.pnls = DOM.create('div.mm-panels');\n this.node.menu.append(this.node.pnls);\n // Initiate all panel like nodes\n panels.forEach((panel) => {\n this._initPanel(panel);\n });\n //\tInvoke \"after\" hook.\n this.trigger('initMenu:after');\n }\n /**\n * Initialize panels.\n */\n _initPanels() {\n //\tInvoke \"before\" hook.\n this.trigger('initPanels:before');\n //\tOpen / close panels.\n this.node.menu.addEventListener('click', event => {\n var _a, _b;\n /** The href attribute for the clicked anchor. */\n const href = ((_b = (_a = event.target) === null || _a === void 0 ? void 0 : _a.closest('a[href]')) === null || _b === void 0 ? void 0 : _b.getAttribute('href')) || '';\n if (href.slice(0, 1) === '#') {\n try {\n /** The targeted panel */\n const panel = DOM.find(this.node.menu, href)[0];\n if (panel) {\n event.preventDefault();\n this.togglePanel(panel);\n }\n }\n catch (err) { }\n }\n }, {\n // useCapture to ensure the logical order.\n capture: true\n });\n //\tInvoke \"after\" hook.\n this.trigger('initPanels:after');\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 _initPanel(panel) {\n var _a;\n if (panel.matches('.mm-panel')) {\n return;\n }\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 //\tStop if not supposed to be a panel.\n if (panel.matches('.mm-nopanel')) {\n return;\n }\n //\tInvoke \"before\" hook.\n this.trigger('initPanel:before', [panel]);\n // Must have an ID\n panel.id = panel.id || uniqueId();\n //\tWrap UL/OL in DIV\n if (panel.matches('ul, ol')) {\n /** The panel. */\n const wrapper = DOM.create('div');\n // Transport the ID\n wrapper.id = panel.id;\n panel.removeAttribute('id');\n // Transport \"mm-\" prefixed classnames.\n [].slice\n .call(panel.classList)\n .filter((classname) => classname.slice(0, 3) === 'mm-')\n .forEach((classname) => {\n wrapper.classList.add(classname);\n panel.classList.remove(classname);\n });\n // Transport \"mm\" prefixed data attributes.\n Object.keys(panel.dataset)\n .filter((attr) => attr.slice(0, 2) === 'mm')\n .forEach(attr => {\n wrapper.dataset[attr] = panel.dataset[attr];\n delete panel.dataset[attr];\n });\n //\tWrap the listview in the panel.\n panel.before(wrapper);\n wrapper.append(panel);\n panel = wrapper;\n }\n panel.classList.add('mm-panel');\n // Append to the panels node if not vertically expanding\n if (!((_a = panel.parentElement) === null || _a === void 0 ? void 0 : _a.matches('.mm-listitem--vertical'))) {\n this.node.pnls.append(panel);\n }\n // Initialize tha navbar.\n this._initNavbar(panel);\n // Initialize the listview(s).\n DOM.children(panel, 'ul, ol').forEach((listview) => {\n this._initListview(listview);\n });\n // Observe the panel for added listviews.\n __classPrivateFieldGet(this, _panelObserver).observe(panel, {\n childList: true,\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 _initNavbar(panel) {\n //\tOnly one navbar per panel.\n if (DOM.children(panel, '.mm-navbar').length) {\n return;\n }\n /** The parent listitem. */\n let parentListitem = null;\n /** The parent panel. */\n let parentPanel = null;\n // The parent listitem and parent panel\n if (panel.dataset.mmParent) {\n parentListitem = DOM.find(this.node.pnls, `#${panel.dataset.mmParent}`)[0];\n parentPanel = parentListitem.closest('.mm-panel');\n while (parentPanel.closest('.mm-listitem--vertical')) {\n parentPanel = parentPanel.parentElement.closest('.mm-panel');\n }\n }\n // No navbar needed for vertical submenus.\n if (parentListitem === null || parentListitem === void 0 ? void 0 : parentListitem.matches('.mm-listitem--vertical')) {\n return;\n }\n //\tInvoke \"before\" hook.\n this.trigger('initNavbar:before', [panel]);\n /** The navbar element. */\n const 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 // Add the back button.\n if (parentPanel) {\n /** The back button. */\n const prev = DOM.create('a.mm-btn.mm-btn--prev.mm-navbar__btn');\n prev.href = `#${parentPanel.id}`;\n prev.setAttribute('aria-label', this.i18n(this.conf.screenReader.closeSubmenu));\n navbar.append(prev);\n }\n /** The anchor that opens the panel. */\n let 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 /** The title */\n const title = DOM.create('a.mm-navbar__title');\n title.tabIndex = -1;\n title.setAttribute('aria-hidden', 'true');\n switch (this.opts.navbar.titleLink) {\n case 'anchor':\n if (opener) {\n title.href = opener.getAttribute('href');\n }\n break;\n case 'parent':\n if (parentPanel) {\n title.href = `#${parentPanel.id}`;\n }\n break;\n }\n /** Text in the title */\n const titleText = DOM.create('span');\n titleText.innerHTML =\n panel.dataset.mmTitle ||\n DOM.childText(opener) ||\n this.i18n(this.opts.navbar.title || 'Menu');\n // Add to DOM\n panel.prepend(navbar);\n navbar.append(title);\n title.append(titleText);\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 _initListview(listview) {\n // Assert UL\n if (!['htmlulistelement', 'htmlolistelement'].includes(type(listview))) {\n return;\n }\n if (listview.matches('.mm-listview')) {\n return;\n }\n DOM.reClass(listview, this.conf.classNames.nolistview, 'mm-nolistview');\n if (listview.matches('.mm-nolistview')) {\n return;\n }\n //\tInvoke \"before\" hook.\n this.trigger('initListview:before', [listview]);\n listview.classList.add('mm-listview');\n // Initiate the listitem(s).\n DOM.children(listview).forEach((listitem) => {\n this._initListitem(listitem);\n });\n // Observe the listview for added listitems.\n __classPrivateFieldGet(this, _listviewObserver).observe(listview, {\n childList: true,\n });\n //\tInvoke \"after\" hook.\n this.trigger('initListview:after', [listview]);\n }\n /**\n * Initialte a listitem.\n * @param {HTMLElement} listitem Listitem to initiate.\n */\n _initListitem(listitem) {\n // Assert LI\n if (!['htmllielement'].includes(type(listitem))) {\n return;\n }\n if (listitem.matches('.mm-listitem')) {\n return;\n }\n DOM.reClass(listitem, this.conf.classNames.divider, 'mm-divider');\n if (listitem.matches('.mm-divider')) {\n return;\n }\n //\tInvoke \"before\" hook.\n this.trigger('initListitem:before', [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((text) => {\n text.classList.add('mm-listitem__text');\n });\n // Initiate the subpanel.\n DOM.children(listitem, this.conf.panelNodetype.join(', ')).forEach((subpanel) => {\n this._initSubPanel(subpanel);\n });\n // Observe the listitem for added listviews.\n __classPrivateFieldGet(this, _listitemObserver).observe(listitem, {\n childList: true,\n });\n //\tInvoke \"after\" hook.\n this.trigger('initListitem:after', [listitem]);\n }\n /**\n * Initiate a subpanel.\n * @param {HTMLElement} subpanel Subpanel to initiate.\n */\n _initSubPanel(subpanel) {\n if (subpanel.matches('.mm-panel')) {\n return;\n }\n /** The parent element for the panel. */\n const listitem = subpanel.parentElement;\n /** Whether or not the listitem expands vertically */\n const vertical = subpanel.matches('.' + this.conf.classNames.vertical) ||\n !this.opts.slidingSubmenus;\n // Make it expand vertically\n if (vertical) {\n listitem.classList.add('mm-listitem--vertical');\n }\n // Force an ID\n listitem.id = listitem.id || uniqueId();\n subpanel.id = subpanel.id || uniqueId();\n // Store parent/child relation\n listitem.dataset.mmChild = subpanel.id;\n subpanel.dataset.mmParent = listitem.id;\n /** The open link. */\n let button = DOM.children(listitem, '.mm-btn')[0];\n // Init item text\n if (!button) {\n button = DOM.create('a.mm-btn.mm-btn--next.mm-listitem__btn');\n DOM.children(listitem, 'a, span').forEach((text) => {\n // If the item has no link,\n // Replace the item with the open link.\n if (text.matches('span')) {\n button.classList.add('mm-listitem__text');\n button.innerHTML = text.innerHTML;\n listitem.insertBefore(button, text.nextElementSibling);\n text.remove();\n }\n // Otherwise, insert the button after the text.\n else {\n listitem.insertBefore(button, text.nextElementSibling);\n }\n });\n button.setAttribute('aria-label', this.i18n(this.conf.screenReader[listitem.matches('.mm-listitem--vertical')\n ? 'toggleSubmenu'\n : 'openSubmenu']));\n }\n button.href = `#${subpanel.id}`;\n this._initPanel(subpanel);\n }\n /**\n * Find and open the correct panel after creating the menu.\n */\n _initOpened() {\n //\tInvoke \"before\" hook.\n this.trigger('initOpened:before');\n /** The selected listitem(s). */\n const listitem = DOM.find(this.node.pnls, '.mm-listitem--selected').pop();\n /**\tThe current opened panel. */\n let panel = DOM.children(this.node.pnls, '.mm-panel')[0];\n if (listitem) {\n this.setSelected(listitem);\n panel = listitem.closest('.mm-panel');\n }\n //\tOpen the current opened panel.\n this.openPanel(panel, false, false);\n //\tInvoke \"after\" hook.\n this.trigger('initOpened:after');\n }\n /**\n * Get the translation for a text.\n * @param {string} text \tText to translate.\n * @return {string}\t\t The translated text.\n */\n i18n(text) {\n return i18n.get(text, this.conf.language);\n }\n /**\n * Get all translations for the given language.\n * @return {object}\tThe translations.\n */\n static i18n(text = {}, language = '') {\n if (text && language) {\n i18n.add(text, language);\n }\n else {\n return i18n.show();\n }\n }\n}\n_panelObserver = new WeakMap(), _listviewObserver = new WeakMap(), _listitemObserver = new WeakMap();\n/**\tAvailable add-ons for the plugin. */\nMmenu.addons = {};\n/**\tGlobally used HTML elements. */\nMmenu.node = {};\n/** Globally used v. */\nMmenu.vars = {};\n","const configs = {\n classNames: {\n divider: 'Divider',\n nolistview: 'NoListview',\n nopanel: 'NoPanel',\n panel: 'Panel',\n selected: 'Selected',\n vertical: 'Vertical'\n },\n language: null,\n panelNodetype: ['ul', 'ol', 'div'],\n screenReader: {\n closeSubmenu: 'Close submenu',\n openSubmenu: 'Open submenu',\n toggleSubmenu: 'Toggle submenu'\n }\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 const extend = (orignl, dfault) => {\n if (type(orignl) != 'object') {\n orignl = {};\n }\n if (type(dfault) != 'object') {\n dfault = {};\n }\n for (let 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 const touchDirection = (surface) => {\n let direction = '';\n let prevPosition = null;\n surface.addEventListener('touchstart', (evnt) => {\n if (evnt.touches.length === 1) {\n direction = '';\n prevPosition = evnt.touches[0].pageY;\n }\n });\n surface.addEventListener('touchend', (evnt) => {\n if (evnt.touches.length === 0) {\n direction = '';\n prevPosition = null;\n }\n });\n surface.addEventListener('touchmove', (evnt) => {\n direction = '';\n if (prevPosition &&\n evnt.touches.length === 1) {\n const currentPosition = evnt.changedTouches[0].pageY;\n if (currentPosition > prevPosition) {\n direction = 'down';\n }\n else if (currentPosition < prevPosition) {\n direction = 'up';\n }\n prevPosition = currentPosition;\n }\n });\n return {\n get: () => 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 const type = (variable) => {\n return {}.toString\n .call(variable)\n .match(/\\s([a-zA-Z]+)/)[1]\n .toLowerCase();\n};\n/**\n * Get a (page wide) unique ID.\n */\nexport const uniqueId = () => {\n return `mm-${__id++}`;\n};\nlet __id = 0;\n/**\n * Get a prefixed ID from a possibly orifinal ID.\n * @param id The possibly original ID.\n */\nexport const cloneId = (id) => {\n if (id.slice(0, 9) == 'mm-clone-') {\n return id;\n }\n return `mm-clone-${id}`;\n};\n/**\n * Get the original ID from a possibly prefixed ID.\n * @param id The possibly prefixed ID.\n */\nexport const originalId = (id) => {\n if (id.slice(0, 9) == 'mm-clone-') {\n return id.slice(9);\n }\n return id;\n};\n","import { extend } from './helpers';\nconst translations = {};\n/**\n * Show all translations.\n * @return {object}\tThe translations.\n */\nexport const show = () => {\n return translations;\n};\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 const 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 const 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 * 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 const create = (selector) => {\n const args = selector.split('.'), elem = document.createElement(args.shift());\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 const find = (element, filter) => {\n return filter.length ? [].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 const children = (element, filter) => {\n const children = Array.prototype.slice.call(element.children);\n return filter\n ? children.filter((child) => child.matches(filter))\n : children;\n};\n/**\n * Find all text from direct child element.\n *\n * @param \t{HTMLElement} \telement Element to search in.\n * @return\t{string}\t\t\t\tThe text.\n */\nexport const childText = (element) => {\n return element\n ? [].slice.call(element.childNodes)\n .filter(node => node.nodeType === Node.TEXT_NODE)\n .map(node => node.nodeValue.trim())\n .join(' ')\n : '';\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 const text = (element) => {\n return [].slice.call(element.childNodes)\n .filter((child) => !child.ariaHidden)\n .map((child) => 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 const parents = (element, filter) => {\n /** Array of preceding elements that match the selector. */\n let parents = [];\n /** Array of preceding elements that match the selector. */\n let parent = element.parentElement;\n while (parent) {\n parents.push(parent);\n parent = parent.parentElement;\n }\n return filter\n ? parents.filter((parent) => 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 const prevAll = (element, filter) => {\n /** Array of previous siblings that match the selector. */\n let previous = [];\n /** Current element in the loop */\n let 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 const 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 const filterLI = (listitems) => {\n return listitems.filter((listitem) => !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 const filterLIA = (listitems) => {\n let anchors = [];\n filterLI(listitems).forEach((listitem) => {\n anchors.push(...children(listitem, 'a.mm-listitem__text'));\n });\n return anchors.filter((anchor) => !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 const reClass = (element, oldClass, newClass) => {\n if (element.matches('.' + oldClass)) {\n element.classList.add(newClass);\n }\n};\n","/** Collection of callback functions for media querys. */\nlet 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 const 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, no });\n};\n/**\n * Initialize the matchMedia listener.\n */\nexport const watch = () => {\n for (let query in listeners) {\n let mqlist = window.matchMedia(query);\n fire(query, mqlist);\n mqlist.onchange = (evnt) => {\n fire(query, mqlist);\n };\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 const fire = (query, mqlist) => {\n var fn = mqlist.matches ? 'yes' : 'no';\n for (let m = 0; m < listeners[query].length; m++) {\n listeners[query][m][fn]();\n }\n};\n","import { add } from '../../../_modules/i18n';\nimport de from './de';\nimport fa from './fa';\nimport nl from './nl';\nimport pt_br from './pt_br';\nimport ru from './ru';\nimport sk from './sk';\nimport uk from './uk';\nexport default function () {\n add(de, 'de');\n add(fa, 'fa');\n add(nl, 'nl');\n add(pt_br, 'pt_br');\n add(ru, 'ru');\n add(sk, 'sk');\n add(uk, 'uk');\n}\n","export default {\n 'Close submenu': 'Untermenü schließen',\n 'Menu': 'Menü',\n 'Open submenu': 'Untermenü öffnen',\n 'Toggle submenu': 'Untermenü wechseln'\n};\n","export default {\n 'Close submenu': 'بستن زیرمنو',\n 'Menu': 'منو',\n 'Open submenu': 'بازکردن زیرمنو',\n 'Toggle submenu': 'سوییچ زیرمنو'\n};\n","export default {\n 'Close submenu': 'Submenu sluiten',\n 'Menu': 'Menu',\n 'Open submenu': 'Submenu openen',\n 'Toggle submenu': 'Submenu wisselen'\n};\n","export default {\n 'Close submenu': 'Fechar submenu',\n 'Menu': 'Menu',\n 'Open submenu': 'Abrir submenu',\n 'Toggle submenu': 'Alternar submenu'\n};\n","export default {\n 'Close submenu': 'Закрыть подменю',\n 'Menu': 'Меню',\n 'Open submenu': 'Открыть подменю',\n 'Toggle submenu': 'Переключить подменю'\n};\n","export default {\n 'Close submenu': 'Zatvoriť submenu',\n 'Menu': 'Menu',\n 'Open submenu': 'Otvoriť submenu',\n 'Toggle submenu': 'Prepnúť submenu'\n};\n","export default {\n 'Close submenu': 'Закрити підменю',\n 'Menu': 'Меню',\n 'Open submenu': 'Відкрити підменю',\n 'Toggle submenu': 'Перемкнути підменю'\n};\n","const options = {\n use: true,\n position: 'left'\n};\nexport default options;\n","const configs = {\n clone: false,\n menu: {\n insertMethod: 'append',\n insertSelector: 'body'\n },\n page: {\n nodetype: 'div',\n selector: null,\n noSelector: []\n },\n screenReader: {\n closeMenu: 'Close menu',\n openMenu: 'Open menu',\n }\n};\nexport default configs;\n","import Mmenu from './../oncanvas/mmenu.oncanvas';\nimport OPTIONS from './options';\nimport CONFIGS from './configs';\nimport * as DOM from '../../_modules/dom';\nimport { extend, uniqueId, cloneId, originalId, } from '../../_modules/helpers';\nconst possiblePositions = [\n 'left',\n 'left-front',\n 'right',\n 'right-front',\n 'top',\n 'bottom'\n];\nexport default function () {\n this.opts.offCanvas = this.opts.offCanvas || {};\n this.conf.offCanvas = this.conf.offCanvas || {};\n //\tExtend options.\n const options = extend(this.opts.offCanvas, OPTIONS);\n const configs = extend(this.conf.offCanvas, CONFIGS);\n if (!options.use) {\n return;\n }\n if (!possiblePositions.includes(options.position)) {\n options.position = possiblePositions[0];\n }\n //\tAdd methods to the API.\n this._api.push('open', 'close', 'setPage', 'position');\n // Clone menu 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 = cloneId(this.node.menu.id);\n }\n DOM.find(this.node.menu, '[id]').forEach((elem) => {\n elem.id = cloneId(elem.id);\n });\n }\n // Prepend the menu to the .\n this.bind('initMenu:before', () => {\n this.node.wrpr = document.querySelector(configs.menu.insertSelector);\n this.node.wrpr[configs.menu.insertMethod](this.node.menu);\n });\n //\tSetup the UI blocker.\n if (!Mmenu.node.blck) {\n this.bind('initMenu:before', () => {\n /** The UI blocker node. */\n const blocker = DOM.create('a.mm-wrapper__blocker.mm-blocker.mm-slideout');\n blocker.id = uniqueId();\n blocker.setAttribute('aria-label', this.i18n(configs.screenReader.closeMenu));\n blocker.setAttribute('inert', 'true');\n //\tAppend the blocker node to the body.\n document.querySelector(configs.menu.insertSelector).append(blocker);\n //\tStore the blocker node.\n Mmenu.node.blck = blocker;\n });\n }\n this.bind('initMenu:after', () => {\n //\tSetup the page.\n this.setPage(Mmenu.node.page);\n //\tSetup the menu.\n this.node.menu.classList.add('mm-menu--offcanvas');\n this.node.menu.setAttribute('inert', 'true');\n if (possiblePositions.includes(options.position)) {\n this.node.wrpr.classList.add(`mm-wrapper--position-${options.position}`);\n this.node.menu.classList.add(`mm-menu--position-${options.position}`);\n }\n //\tOpen if url hash equals menu id (usefull when user clicks the hamburger icon before the menu is created)\n let hash = window.location.hash;\n if (hash) {\n let id = originalId(this.node.menu.id);\n if (id && id == hash.slice(1)) {\n setTimeout(() => {\n this.open();\n }, 1000);\n }\n }\n });\n //\tOpen / close the menu.\n document.addEventListener('click', event => {\n var _a;\n /** THe href attribute for the clicked anchor. */\n const href = (_a = event.target.closest('a')) === null || _a === void 0 ? void 0 : _a.getAttribute('href');\n switch (href) {\n //\tOpen menu if the clicked anchor links to the menu.\n case `#${originalId(this.node.menu.id)}`:\n event.preventDefault();\n this.open();\n break;\n //\tClose menu if the clicked anchor links to the page.\n case `#${originalId(Mmenu.node.page.id)}`:\n event.preventDefault();\n this.close();\n break;\n }\n });\n //\tClose the menu with ESC key.\n document.addEventListener('keyup', (event) => {\n if (event.key == 'Escape') {\n this.close();\n }\n });\n}\n/**\n * Open the menu.\n */\nMmenu.prototype.open = function () {\n if (this.node.menu.matches('.mm-menu--opened')) {\n return;\n }\n //\tInvoke \"before\" hook.\n this.trigger('open:before');\n //\tOpen\n this.node.wrpr.classList.add('mm-wrapper--opened', `mm-wrapper--position-${this.opts.offCanvas.position}`);\n this.node.menu.classList.add('mm-menu--opened');\n this.node.menu.removeAttribute('inert');\n Mmenu.node.blck.removeAttribute('inert');\n Mmenu.node.page.setAttribute('inert', 'true');\n // Store the last focesed element.\n this.node.open = document.activeElement;\n //\tInvoke \"after\" hook.\n this.trigger('open:after');\n};\n/**\n * Close the menu.\n */\nMmenu.prototype.close = function () {\n var _a;\n if (!this.node.menu.matches('.mm-menu--opened')) {\n return;\n }\n //\tInvoke \"before\" hook.\n this.trigger('close:before');\n this.node.wrpr.classList.remove('mm-wrapper--opened', `mm-wrapper--position-${this.opts.offCanvas.position}`);\n this.node.menu.classList.remove('mm-menu--opened');\n this.node.menu.setAttribute('inert', 'true');\n Mmenu.node.blck.setAttribute('inert', 'true');\n Mmenu.node.page.removeAttribute('inert');\n /** Element to focus. */\n const focus = this.node.open || document.querySelector(`[href=\"#${this.node.menu.id}\"]`) || null;\n (_a = focus) === null || _a === void 0 ? void 0 : _a.focus();\n // Prevent html/body from scrolling due to focus.\n document.body.scrollLeft = 0;\n document.documentElement.scrollLeft = 0;\n //\tInvoke \"after\" hook.\n this.trigger('close:after');\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 /** Offcanvas config */\n const 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 let 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((page) => !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((page) => !page.matches(configs.page.noSelector.join(', ')));\n }\n //\tWrap multiple pages in a single element.\n if (pages.length > 1) {\n let wrapper = DOM.create('div');\n pages[0].before(wrapper);\n pages.forEach((page) => {\n wrapper.append(page);\n });\n pages = [wrapper];\n }\n page = pages[0];\n }\n //\tInvoke \"before\" hook.\n this.trigger('setPage:before', [page]);\n // Set the classes\n page.classList.add('mm-page', 'mm-slideout');\n // Set the ID.\n page.id = page.id || uniqueId();\n //\tSync the blocker to target the page.\n Mmenu.node.blck.setAttribute('href', `#${page.id}`);\n //\tStore the page node.\n Mmenu.node.page = page;\n //\tInvoke \"after\" hook.\n this.trigger('setPage:after', [page]);\n};\n","const options = {\n fix: true\n};\nexport default options;\n","/** Whether or not touch gestures are supported by the browser. */\nexport const touch = 'ontouchstart' in window ||\n (navigator.msMaxTouchPoints ? true : false) ||\n false;\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport OPTIONS from './options';\n/** A list of available themes. */\nconst possibleThemes = [\n 'light',\n 'dark',\n 'white',\n 'black',\n 'light-contrast',\n 'dark-contrast',\n 'white-contrast',\n 'black-contrast'\n];\nexport default function () {\n this.opts.theme = this.opts.theme || OPTIONS;\n const theme = this.opts.theme;\n if (!possibleThemes.includes(theme)) {\n this.opts.theme = possibleThemes[0];\n }\n this._api.push('theme');\n this.bind('initMenu:after', () => {\n this.theme(this.opts.theme);\n });\n}\n/**\n * Get or set the theme for the menu.\n *\n * @param {string} [position] The theme for the menu.\n */\nMmenu.prototype.theme = function (theme = null) {\n /** The previously used theme */\n const oldTheme = this.opts.theme;\n if (theme) {\n if (possibleThemes.includes(theme)) {\n this.node.menu.classList.remove(`mm-menu--theme-${oldTheme}`);\n this.node.menu.classList.add(`mm-menu--theme-${theme}`);\n this.opts.theme = theme;\n }\n }\n else {\n return oldTheme;\n }\n};\n","const options = {\n close: false,\n open: false\n};\nexport default options;\n","const options = {\n add: false\n};\nexport default options;\n","const options = {\n use: false,\n top: [],\n bottom: [],\n position: 'left',\n type: 'default'\n};\nexport default options;\n","const options = {\n add: false,\n blockPanel: true,\n visible: 3\n};\nexport default options;\n","const configs = {\n breadcrumbs: {\n separator: '/',\n removeFirst: false\n }\n};\nexport default configs;\n","import CONFIGS from './configs';\nimport { extendShorthandOptions } from './options';\nimport { extend } from '../../_modules/helpers';\nimport * as DOM from '../../_modules/dom';\nimport * as media from '../../_modules/matchmedia';\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';\nimport tabs from './navbar.tabs';\nNavbars.navbarContents = {\n breadcrumbs,\n close,\n prev,\n searchfield,\n title,\n};\nNavbars.navbarTypes = {\n tabs,\n};\nexport default function Navbars() {\n this.opts.navbars = this.opts.navbars || [];\n this.conf.navbars = this.conf.navbars || {};\n //\tExtend options.\n extend(this.conf.navbars, CONFIGS);\n let navs = this.opts.navbars;\n if (typeof navs == 'undefined') {\n return;\n }\n if (!(navs instanceof Array)) {\n navs = [navs];\n }\n if (!navs.length) {\n return;\n }\n var navbars = {};\n navs.forEach((options) => {\n options = extendShorthandOptions(options);\n if (!options.use) {\n return;\n }\n //\tCreate the navbar element.\n const navbar = DOM.create('div.mm-navbar');\n //\tGet the position for the navbar.\n let { position } = options;\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.mm-navbars--' + position);\n }\n navbars[position].append(navbar);\n //\tAdd content to the navbar.\n for (let c = 0, l = options.content.length; c < l; c++) {\n const ctnt = options.content[c];\n //\tThe content is a string.\n if (typeof ctnt == 'string') {\n const 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 let node = DOM.create('span');\n node.innerHTML = ctnt;\n // If there was only a single node, use that.\n const 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 const 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 let enable = () => {\n navbar.classList.remove('mm-hidden');\n };\n let disable = () => {\n navbar.classList.add('mm-hidden');\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 });\n //\tAdd to menu.\n this.bind('initMenu:after', () => {\n for (let position in navbars) {\n this.node.pnls[position == 'bottom' ? 'after' : 'before'](navbars[position]);\n }\n });\n}\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 return options;\n}\n;\n","import * as DOM from '../../_modules/dom';\nexport default function (navbar) {\n //\tAdd content\n var breadcrumbs = DOM.create('div.mm-navbar__breadcrumbs');\n navbar.append(breadcrumbs);\n this.bind('initNavbar:after', (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 let title = DOM.find(current, '.mm-navbar__title span')[0];\n if (title) {\n let text = title.textContent;\n if (text.length) {\n crumbs.unshift(first\n ? `${text}`\n : `${text}`);\n }\n }\n first = false;\n }\n current = DOM.find(this.node.pnls, `#${current.dataset.mmParent}`)[0];\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:before', (panel) => {\n var crumbs = panel.querySelector('.mm-navbar__breadcrumbs');\n breadcrumbs.innerHTML = crumbs ? crumbs.innerHTML : '';\n });\n}\n","import * as DOM from '../../_modules/dom';\nexport default function (navbar) {\n /** The close button. */\n const close = DOM.create('a.mm-btn.mm-btn--close.mm-navbar__btn');\n close.setAttribute('aria-label', this.i18n(this.conf.offCanvas.screenReader.closeMenu));\n //\tAdd the button to the navbar.\n navbar.append(close);\n //\tUpdate to target the page node.\n this.bind('setPage:after', (page) => {\n close.href = `#${page.id}`;\n });\n}\n","import * as DOM from '../../_modules/dom';\nexport default function (navbar) {\n /** The prev button. */\n let prev = DOM.create('a.mm-btn.mm-hidden');\n //\tAdd button to navbar.\n navbar.append(prev);\n // Hide navbar in the panel.\n this.bind('initNavbar:after', (panel) => {\n DOM.children(panel, '.mm-navbar')[0].classList.add('mm-hidden');\n });\n // Update the button href when opening a panel.\n this.bind('openPanel:before', (panel) => {\n if (panel.parentElement.matches('.mm-listitem--vertical')) {\n return;\n }\n prev.classList.add('mm-hidden');\n /** Original button in the panel. */\n const original = panel.querySelector('.mm-navbar__btn.mm-btn--prev');\n if (original) {\n /** Clone of the original button in the panel. */\n const clone = original.cloneNode(true);\n prev.after(clone);\n prev.remove();\n prev = clone;\n }\n });\n}\n","import * as DOM from '../../_modules/dom';\nimport { uniqueId } from '../../_modules/helpers';\nexport default function (navbar) {\n /** Empty wrapper for the searchfield. */\n let wrapper = DOM.create('div.mm-navbar__searchfield');\n wrapper.id = uniqueId();\n //\tAdd button to navbar.\n navbar.append(wrapper);\n this.opts.searchfield = this.opts.searchfield || {};\n this.opts.searchfield.add = true;\n this.opts.searchfield.addTo = `#${wrapper.id}`;\n}\n","import * as DOM from '../../_modules/dom';\nexport default function (navbar) {\n /** The title node in the navbar. */\n let title = DOM.create('a.mm-navbar__title');\n //\tAdd title to the navbar.\n navbar.append(title);\n //\tUpdate the title to the opened panel.\n this.bind('openPanel:before', (panel) => {\n //\tDo nothing in a vertically expanding panel.\n if (panel.parentElement.matches('.mm-listitem--vertical')) {\n return;\n }\n /** Original title in the panel. */\n const original = panel.querySelector('.mm-navbar__title');\n if (original) {\n /** Clone of the original title in the panel. */\n const clone = original.cloneNode(true);\n title.after(clone);\n title.remove();\n title = clone;\n }\n });\n}\n","import * as DOM from '../../_modules/dom';\nexport default function (navbar) {\n navbar.classList.add('mm-navbar--tabs');\n navbar.closest('.mm-navbars').classList.add('mm-navbars--has-tabs');\n DOM.children(navbar, 'a').forEach(anchor => {\n anchor.classList.add('mm-navbar__tab');\n });\n /**\n * Mark a tab as selected.\n * @param {HTMLElement} panel Opened panel.\n */\n function selectTab(panel) {\n /** The tab that links to the opened panel. */\n const anchor = DOM.children(navbar, `.mm-navbar__tab[href=\"#${panel.id}\"]`)[0];\n if (anchor) {\n anchor.classList.add('mm-navbar__tab--selected');\n // @ts-ignore\n anchor.ariaExpanded = 'true';\n }\n else {\n /** The parent listitem. */\n const parent = DOM.find(this.node.pnls, `#${panel.dataset.mmParent}`)[0];\n if (parent) {\n selectTab.call(this, parent.closest('.mm-panel'));\n }\n }\n }\n this.bind('openPanel:before', (panel) => {\n // Remove selected class.\n DOM.children(navbar, 'a').forEach(anchor => {\n anchor.classList.remove('mm-navbar__tab--selected');\n // @ts-ignore\n anchor.ariaExpanded = 'false';\n });\n selectTab.call(this, panel);\n });\n this.bind('initPanels:after', () => {\n //\tAdd animation class to panel.\n navbar.addEventListener('click', event => {\n var _a, _b, _c;\n /** The href for the clicked tab. */\n const href = (_b = (_a = event.target) === null || _a === void 0 ? void 0 : _a.closest('.mm-navbar__tab')) === null || _b === void 0 ? void 0 : _b.getAttribute('href');\n try {\n (_c = DOM.find(this.node.pnls, `${href}.mm-panel`)[0]) === null || _c === void 0 ? void 0 : _c.classList.add('mm-panel--noanimation');\n }\n catch (err) { }\n }, {\n // useCapture to ensure the logical order.\n capture: true\n });\n });\n}\n","const options = {\n scroll: false,\n update: false\n};\nexport default options;\n","const configs = {\n scrollOffset: 0,\n updateOffset: 50\n};\nexport default configs;\n","const options = {\n add: false,\n addTo: 'panels',\n noResults: 'No results found.',\n placeholder: 'Search',\n search: true,\n searchIn: 'panels',\n splash: '',\n title: 'Search',\n};\nexport default options;\n","const configs = {\n cancel: true,\n clear: true,\n form: {},\n input: {},\n panel: {},\n submit: false\n};\nexport default configs;\n","import { add } from '../../../_modules/i18n';\nimport de from './de';\nimport fa from './fa';\nimport nl from './nl';\nimport pt_br from './pt_br';\nimport ru from './ru';\nimport sk from './sk';\nimport uk from './uk';\nexport default function () {\n add(de, 'de');\n add(fa, 'fa');\n add(nl, 'nl');\n add(pt_br, 'pt_br');\n add(ru, 'ru');\n add(sk, 'sk');\n add(uk, 'uk');\n}\n","export default {\n 'cancel': 'abbrechen',\n 'Cancel searching': 'Suche abbrechen',\n 'Clear searchfield': 'Suchfeld löschen',\n 'No results found.': 'Keine Ergebnisse gefunden.',\n 'Search': 'Suche',\n};\n","export default {\n 'cancel': 'انصراف',\n 'Cancel searching': 'لغو جستجو',\n 'Clear searchfield': 'پاک کردن فیلد جستجو',\n 'No results found.': 'نتیجه‌ای یافت نشد.',\n 'Search': 'جستجو',\n};\n","export default {\n 'cancel': 'annuleren',\n 'Cancel searching': 'Zoeken annuleren',\n 'Clear searchfield': 'Zoekveld leeg maken',\n 'No results found.': 'Geen resultaten gevonden.',\n 'Search': 'Zoeken',\n};\n","export default {\n 'cancel': 'cancelar',\n 'Cancel searching': 'Cancelar pesquisa',\n 'Clear searchfield': 'Limpar campo de pesquisa',\n 'No results found.': 'Nenhum resultado encontrado.',\n 'Search': 'Buscar',\n};\n","export default {\n 'cancel': 'отменить',\n 'Cancel searching': 'Отменить поиск',\n 'Clear searchfield': 'Очистить поле поиска',\n 'No results found.': 'Ничего не найдено.',\n 'Search': 'Найти',\n};\n","export default {\n 'cancel': 'zrušiť',\n 'Cancel searching': 'Zrušiť vyhľadávanie',\n 'Clear searchfield': 'Vymazať pole vyhľadávania',\n 'No results found.': 'Neboli nájdené žiadne výsledky.',\n 'Search': 'Vyhľadávanie',\n};\n","export default {\n 'cancel': 'скасувати',\n 'Cancel searching': 'Скасувати пошук',\n 'Clear searchfield': 'Очистити поле пошуку',\n 'No results found.': 'Нічого не знайдено.',\n 'Search': 'Пошук',\n};\n","import OPTIONS from './options';\nimport CONFIGS from './configs';\nimport translate from './translations';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\n// Add the translations.\ntranslate();\nexport default function () {\n this.opts.searchfield = this.opts.searchfield || {};\n this.conf.searchfield = this.conf.searchfield || {};\n //\tExtend options.\n const options = extend(this.opts.searchfield, OPTIONS);\n const configs = extend(this.conf.searchfield, CONFIGS);\n if (!options.add) {\n return;\n }\n switch (options.addTo) {\n case 'panels':\n options.addTo = '.mm-panel';\n break;\n case 'searchpanel':\n options.addTo = '.mm-panel--search';\n break;\n }\n switch (options.searchIn) {\n case 'panels':\n options.searchIn = '.mm-panel';\n break;\n }\n // Add a searchfield to panels matching the \"addTo\" querySelector.\n this.bind('initPanel:after', (panel) => {\n if (panel.matches(options.addTo) &&\n !panel.closest('.mm-listitem--vertical')) {\n initPanel.call(this, panel);\n }\n });\n this.bind('initMenu:after', () => {\n // Create the resultspanel.\n const resultspanel = createResultsPanel.call(this);\n initPanel.call(this, resultspanel);\n // Add a searchfield to anything other than a panel (most likely a navbar).\n DOM.find(this.node.menu, options.addTo).forEach(wrapper => {\n if (!wrapper.matches('.mm-panel')) {\n /** The searchform. */\n const form = createSearchfield.call(this, true);\n // Add the form to the panel.\n wrapper.append(form);\n /** The input node. */\n const input = DOM.find(form, 'input')[0];\n // Bind events for opening and closing the resultspanel.\n // With a splash...\n if (options.splash.length) {\n // Open on focus.\n input.addEventListener('focusin', () => {\n this.openPanel(resultspanel, false, false);\n });\n // Show cancel button if searchpanel is opened.\n this.bind('openPanel:after', (panel) => {\n if (panel.matches('.mm-panel--search')) {\n form.classList.add('mm-searchfield--cancelable');\n }\n else {\n form.classList.remove('mm-searchfield--cancelable');\n }\n });\n // ...without splash.\n }\n else {\n // Open resultspanel when searching.\n this.bind('search:after', () => {\n this.openPanel(resultspanel, false, false);\n });\n // Close resultspanel when resetting.\n input.addEventListener('focusout', () => {\n if (!input.value.length) {\n this.closePanel(resultspanel, false);\n }\n });\n }\n // Initialize searching.\n initSearch.call(this, form);\n }\n });\n });\n //\tBlur searchfield\n this.bind('close:before', () => {\n DOM.find(this.node.menu, '.mm-searchfield input').forEach((input) => {\n input.blur();\n });\n });\n}\n/**\n * Create the searchpanel.\n * @param {Mmenu} this\n */\nconst createResultsPanel = function () {\n /** Options for the searchfield. */\n const options = this.opts.searchfield;\n /** Configs for the searchfield. */\n const configs = this.conf.searchfield;\n /** The panel. */\n let panel = DOM.children(this.node.pnls, '.mm-panel--search')[0];\n //\tOnly once\n if (panel) {\n return panel;\n }\n panel = DOM.create('div.mm-panel--search');\n //\tAdd attributes to the panel. \n _addAttributes(panel, configs.panel);\n // Add a title to the panel.\n if (options.title.length) {\n panel.dataset.mmTitle = this.i18n(options.title);\n }\n // Add a listview to the panel.\n panel.append(DOM.create('ul'));\n this._initPanel(panel);\n return panel;\n};\n/**\n * Add a searchfield, splash message and no-results message to a panel.\n * @param {Mmenu} this\n * @param {HTMLElement} panel The panel to initialise.\n */\nconst initPanel = function (panel) {\n /** Options for the searchfield. */\n const options = this.opts.searchfield;\n //\tCreate the searchfield.\n if (panel.matches(options.addTo)) {\n /** Whether or not the panel is the resultspanel */\n const isResultspanel = panel.matches('.mm-panel--search');\n // Only one per panel.\n if (!DOM.find(panel, '.mm-searchfield').length) {\n /** The searchform. */\n const form = createSearchfield.call(this, isResultspanel);\n if (isResultspanel) {\n form.classList.add('mm-searchfield--cancelable');\n }\n // Add the form to the panel.\n panel.prepend(form);\n // Initialize searching.\n initSearch.call(this, form);\n }\n }\n //\tCreate the splash content.\n if (options.splash.length &&\n panel.matches('.mm-panel--search')) {\n // Only one per panel.\n if (!DOM.find(panel, '.mm-panel__splash').length) {\n /** The splash content node. */\n const splash = DOM.create('div.mm-panel__splash');\n splash.innerHTML = options.splash;\n panel.append(splash);\n }\n }\n // Add no results message.\n if (options.noResults.length) {\n //\tOnly once per panel.\n if (!DOM.find(panel, '.mm-panel__noresults').length) {\n /** The no results message node. */\n const message = DOM.create('div.mm-panel__noresults');\n message.innerHTML = this.i18n(options.noResults);\n panel.append(message);\n }\n }\n};\n/**\n * Create the searchfield.\n * @param {Mmenu} this\n * @param {boolean} [addCancel=false] Whether or not to add the cancel button\n */\nconst createSearchfield = function (addCancel = false) {\n /** Options for the searchfield. */\n const options = this.opts.searchfield;\n /** Configs for the searchfield. */\n const configs = this.conf.searchfield;\n /** The form node. */\n const form = DOM.create('form.mm-searchfield');\n //\tAdd attributes to the form\n _addAttributes(form, configs.form);\n /** The fieldset node. */\n const field = DOM.create('div.mm-searchfield__input');\n form.append(field);\n /** The input node. */\n const input = DOM.create('input');\n field.append(input);\n //\tAdd attributes to the input\n input.type = 'text';\n input.autocomplete = 'off';\n input.placeholder = this.i18n(options.placeholder);\n input.setAttribute('aria-label', this.i18n(options.placeholder));\n _addAttributes(input, configs.input);\n //\tAdd a button to submit to the form.\n if (configs.submit) {\n /** The submit button. */\n const submit = DOM.create('button.mm-btnreset.mm-btn.mm-btn--next.mm-searchfield__btn');\n submit.type = 'submit';\n field.append(submit);\n }\n //\tAdd a button to clear the searchfield.\n else if (configs.clear) {\n /** The reset button. */\n const reset = DOM.create('button.mm-btnreset.mm-btn.mm-btn--close.mm-searchfield__btn');\n reset.type = 'reset';\n reset.setAttribute('aria-label', this.i18n('Clear searchfield'));\n field.append(reset);\n // Apparently, resetting a form doesn't trigger any event on the input,\n // so we manually dispatch the event, one frame later :/\n form.addEventListener('reset', () => {\n window.requestAnimationFrame(() => {\n input.dispatchEvent(new Event('input'));\n });\n });\n }\n // Add a button to close the searchpanel.\n if (configs.cancel && addCancel) {\n /** The cancel button. */\n const cancel = DOM.create('a.mm-searchfield__cancel');\n cancel.href = '#';\n cancel.setAttribute('aria-label', this.i18n('Cancel searching'));\n cancel.textContent = this.i18n('cancel');\n form.append(cancel);\n // Close the search panel.\n cancel.addEventListener('click', event => {\n event.preventDefault();\n this.closePanel(DOM.children(this.node.pnls, '.mm-panel--search')[0], false);\n });\n }\n return form;\n};\n/**\n * Initialize the searching.\n * @param {Mmenu} this\n * @param {HTMLElement} form The searchform.\n */\nconst initSearch = function (form) {\n /** Options for the searchfield. */\n const options = this.opts.searchfield;\n /** The panel the results will be in. */\n const resultspanel = form.closest('.mm-panel') || DOM.find(this.node.pnls, '.mm-panel--search')[0];\n /** The input node. */\n const input = DOM.find(form, 'input')[0];\n /** Where to search. */\n let searchIn = resultspanel.matches('.mm-panel--search')\n ? DOM.children(this.node.pnls, options.searchIn)\n : [resultspanel];\n // Filter out the resultspanel\n searchIn = searchIn.filter(panel => !panel.matches('.mm-panel--search'));\n /** Search */\n const search = () => {\n /** The searchquery */\n const query = input.value.toLowerCase().trim();\n if (query.length) {\n form.classList.add('mm-searchfield--searching');\n }\n else {\n form.classList.remove('mm-searchfield--searching');\n }\n if (!options.search) {\n return;\n }\n /** All listitems */\n const listitems = [];\n searchIn.forEach(panel => {\n // Scroll all panels to top.\n panel.scrollTop = 0;\n // Find listitems.\n listitems.push(...DOM.find(panel, '.mm-listitem'));\n });\n //\tSearch\n if (query.length) {\n // Trigger event.\n this.trigger('search:before');\n resultspanel.classList.add('mm-panel--searching');\n //\tAdd data attribute to the matching listitems.\n listitems.forEach((listitem) => {\n const text = DOM.children(listitem, '.mm-listitem__text')[0];\n if (!text || DOM.text(text).toLowerCase().indexOf(query) > -1) {\n listitem.dataset.mmSearchresult = query;\n }\n });\n /** The number of matching results. */\n let count = 0;\n // Resultspanel: Copy results to resultspanel.\n if (resultspanel.matches('.mm-panel--search')) {\n count = _searchResultsPanel(resultspanel, query, searchIn);\n // Search per panel: Hide the non-matching listitems.\n }\n else {\n count = _searchPerPanel(query, searchIn);\n }\n resultspanel.classList[count == 0 ? 'add' : 'remove']('mm-panel--noresults');\n // Trigger event.\n this.trigger('search:after');\n // Don't search, reset all.\n }\n else {\n // Trigger event.\n this.trigger('clear:before');\n resultspanel.classList.remove('mm-panel--searching', 'mm-panel--noresults');\n // Resultspanel.\n if (resultspanel.matches('.mm-panel--search')) {\n _resetResultsPanel(resultspanel);\n if (!options.splash) {\n this.closePanel(resultspanel, false, false);\n }\n // Search per panel: Show all listitems and dividers.\n }\n else {\n _resetPerPanel(searchIn);\n }\n // Trigger event.\n this.trigger('clear:after');\n }\n };\n input.addEventListener('input', search);\n search();\n};\nconst _searchResultsPanel = (resultspanel, query, searchIn) => {\n /** The listview for the results/ */\n const listview = DOM.find(resultspanel, '.mm-listview')[0];\n // Clear listview.\n listview.innerHTML = '';\n /** Amount of resutls found. */\n let count = 0;\n searchIn.forEach(panel => {\n /** The results in this panel. */\n const results = DOM.find(panel, `[data-mm-searchresult=\"${query}\"]`);\n count += results.length;\n if (results.length) {\n /** Title for the panel. */\n const title = DOM.find(panel, '.mm-navbar__title')[0];\n // Add a divider to indicate in what panel the results are.\n if (title) {\n const divider = DOM.create('li.mm-divider');\n divider.innerHTML = title.innerHTML;\n listview.append(divider);\n }\n // Add the results\n results.forEach((result) => {\n const clone = result.cloneNode(true);\n listview.append(clone);\n });\n }\n });\n // Remove inline subpanels.\n DOM.find(listview, '.mm-panel').forEach(panel => {\n panel.remove();\n });\n // Remove ID's and data-attributes\n ['id', 'data-mm-parent', 'data-mm-child'].forEach(attr => {\n DOM.find(listview, `[${attr}]`).forEach(elem => {\n elem.removeAttribute(attr);\n });\n });\n // Remove \"opened\" class\n DOM.find(listview, '.mm-listitem--opened').forEach(listitem => {\n listitem.classList.remove('mm-listitem--opened');\n });\n return count;\n};\nconst _resetResultsPanel = (resultspanel) => {\n /** The listview for the results. */\n const listview = DOM.find(resultspanel, '.mm-listview')[0];\n // Clear listview.\n listview.innerHTML = '';\n};\nconst _searchPerPanel = (query, searchIn) => {\n /** Amount of resutls found. */\n let count = 0;\n searchIn.forEach(panel => {\n /** The results in this panel. */\n const results = DOM.find(panel, `[data-mm-searchresult=\"${query}\"]`);\n count += results.length;\n if (results.length) {\n // Add first preceeding divider to the results.\n results.forEach(result => {\n const divider = DOM.prevAll(result, '.mm-divider')[0];\n if (divider) {\n divider.dataset.mmSearchresult = query;\n }\n });\n }\n DOM.find(panel, '.mm-listitem, .mm-divider').forEach(item => {\n // Hide all\n item.classList.add('mm-hidden');\n // Show matching + its parents.\n if (item.dataset.mmSearchresult === query) {\n [item, ...DOM.parents(item, '.mm-listitem')].forEach(item2 => {\n item2.classList.remove('mm-hidden');\n });\n }\n });\n });\n return count;\n};\nconst _resetPerPanel = (searchIn) => {\n searchIn.forEach((panel) => {\n DOM.find(panel, '.mm-listitem, .mm-divider').forEach(item => {\n item.classList.remove('mm-hidden');\n });\n });\n};\n/**\n * Add array of attributes to an element.\n * @param {HTMLEement} element The element to add the attributes to.\n * @param {Object} attributes The attributes to add.\n */\nconst _addAttributes = (element, attributes) => {\n if (attributes) {\n Object.keys(attributes).forEach(a => {\n element[a] = attributes[a];\n });\n }\n};\n","const options = {\n add: false,\n addTo: 'panels'\n};\nexport default options;\n","const options = {\n current: true,\n hover: false,\n parent: false\n};\nexport default options;\n","const options = {\n collapsed: {\n use: false,\n },\n expanded: {\n use: false,\n initial: 'open'\n }\n};\nexport default options;\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 scrollBugFix from '../dist/core/scrollbugfix/mmenu.scrollbugfix';\nimport theme from '../dist/core/theme/mmenu.theme';\n\n//\tAdd-ons\nimport backButton from '../dist/addons/backbutton/mmenu.backbutton';\nimport counters from '../dist/addons/counters/mmenu.counters';\nimport iconbar from '../dist/addons/iconbar/mmenu.iconbar';\nimport iconPanels from '../dist/addons/iconpanels/mmenu.iconpanels';\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';\n\n\nMmenu.addons = {\n //\tCore add-ons\n offcanvas,\n scrollBugFix,\n theme,\n\n //\tAdd-ons\n backButton,\n counters,\n iconbar,\n iconPanels,\n navbars,\n pageScroll,\n searchfield,\n sectionIndexer,\n setSelected,\n sidebar\n};\n\n// Export module\nexport default Mmenu;\n\n//\tGlobal namespace\nif (window) {\n window.Mmenu = Mmenu;\n}","import OPTIONS from './options';\nimport * as DOM from '../../_modules/dom';\nimport * as support from '../../_modules/support';\nimport { extend, touchDirection } from '../../_modules/helpers';\nexport default function () {\n //\tThe scrollBugFix add-on fixes a scrolling bug\n //\t\t1) on touch devices\n //\t\t2) in an off-canvas menu\n if (!support.touch || // 1\n !this.opts.offCanvas.use // 2\n ) {\n return;\n }\n this.opts.scrollBugFix = this.opts.scrollBugFix || {};\n //\tExtend options.\n const options = extend(this.opts.scrollBugFix, OPTIONS);\n if (!options.fix) {\n return;\n }\n /** The touch-direction instance. */\n const touchDir = touchDirection(this.node.menu);\n // Prevent the page from scrolling when scrolling in the menu.\n this.node.menu.addEventListener('scroll', evnt => {\n evnt.preventDefault();\n evnt.stopPropagation();\n }, {\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', evnt => {\n let 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/iconbar,\n // we can simply stopPropagation.\n if (wrapper.scrollHeight === wrapper.offsetHeight) {\n evnt.stopPropagation();\n }\n // When dragging a scrollable panel/iconbar,\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 evnt.stopPropagation();\n }\n // When dragging anything other than a panel/iconbar.\n }\n else {\n evnt.stopPropagation();\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:after', () => {\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', (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","const options = 'light';\nexport default options;\n","import OPTIONS from './options';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\nexport default function () {\n this.opts.backButton = this.opts.backButton || {};\n if (!this.opts.offCanvas.use) {\n return;\n }\n //\tExtend options.\n const options = extend(this.opts.backButton, OPTIONS);\n const _menu = `#${this.node.menu.id}`;\n //\tClose menu\n if (options.close) {\n let states = [];\n const setStates = () => {\n states = [_menu];\n DOM.children(this.node.pnls, '.mm-panel--opened, .mm-panel--parent').forEach((panel) => {\n states.push('#' + panel.id);\n });\n };\n this.bind('open:after', () => {\n history.pushState(null, '', location.pathname + location.search + _menu);\n });\n this.bind('open:after', setStates);\n this.bind('openPanel:after', setStates);\n this.bind('close:after', () => {\n states = [];\n history.back();\n history.pushState(null, '', location.pathname + location.search);\n });\n window.addEventListener('popstate', () => {\n if (this.node.menu.matches('.mm-menu--opened')) {\n if (states.length) {\n states = states.slice(0, -1);\n const 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, '', location.pathname + location.search + _menu);\n }\n }\n }\n });\n }\n if (options.open) {\n window.addEventListener('popstate', (evnt) => {\n if (!this.node.menu.matches('.mm-menu--opened') && location.hash == _menu) {\n this.open();\n }\n });\n }\n}\n","import OPTIONS from './options';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\nexport default function () {\n this.opts.counters = this.opts.counters || {};\n //\tExtend options.\n const options = extend(this.opts.counters, OPTIONS);\n if (!options.add) {\n return;\n }\n /**\n * Counting the visible listitems and setting it to the counter element.\n * @param {HTMLElement} panel Panel to count LIs in.\n */\n const count = (panel) => {\n /** Parent panel for the mutated listitem. */\n const parent = this.node.pnls.querySelector(`#${panel.dataset.mmParent}`);\n if (!parent) {\n return;\n }\n /** The counter for the listitem. */\n const counter = parent.querySelector('.mm-counter');\n if (!counter) {\n return;\n }\n /** The listitems */\n const listitems = [];\n DOM.children(panel, '.mm-listview').forEach((listview) => {\n listitems.push(...DOM.children(listview, '.mm-listitem'));\n });\n counter.innerHTML = DOM.filterLI(listitems).length.toString();\n };\n /** Mutation observer the the listitems. */\n const listitemObserver = new MutationObserver((mutationsList) => {\n mutationsList.forEach((mutation) => {\n if (mutation.attributeName == 'class') {\n count(mutation.target.closest('.mm-panel'));\n }\n });\n });\n //\tAdd the counters after a listview is initiated.\n this.bind('initListview:after', (listview) => {\n /** The panel where the listview is in. */\n const panel = listview.closest('.mm-panel');\n /** The parent LI for the panel */\n const parent = this.node.pnls.querySelector(`#${panel.dataset.mmParent}`);\n if (!parent) {\n return;\n }\n /** The button inside the parent LI */\n const button = DOM.children(parent, '.mm-btn')[0];\n if (!button) {\n return;\n }\n //\tCheck if no counter already excists.\n if (!DOM.children(button, '.mm-counter').length) {\n /** The counter for the listitem. */\n const counter = DOM.create('span.mm-counter');\n counter.setAttribute('aria-hidden', 'true');\n button.prepend(counter);\n }\n // Count immediately.\n count(panel);\n });\n // Count when LI classname changes.\n this.bind('initListitem:after', (listitem) => {\n /** The panel where the listitem is in. */\n const panel = listitem.closest('.mm-panel');\n if (!panel) {\n return;\n }\n /** The parent LI for the panel. */\n const parent = this.node.pnls.querySelector(`#${panel.dataset.mmParent}`);\n if (!parent) {\n return;\n }\n listitemObserver.observe(listitem, {\n attributes: true\n });\n });\n}\n","import OPTIONS from './options';\nimport * as DOM from '../../_modules/dom';\nimport * as media from '../../_modules/matchmedia';\nimport { type, extend } from '../../_modules/helpers';\nexport default function () {\n this.opts.iconbar = this.opts.iconbar || {};\n //\tExtend options.\n const options = extend(this.opts.iconbar, OPTIONS);\n if (!options.use) {\n return;\n }\n let iconbar;\n ['top', 'bottom'].forEach((position, n) => {\n let ctnt = options[position];\n //\tExtend shorthand options\n if (type(ctnt) != 'array') {\n ctnt = [ctnt];\n }\n //\tCreate node\n const part = DOM.create('div.mm-iconbar__' + position);\n //\tAdd content\n for (let 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', () => {\n this.node.menu.prepend(iconbar);\n });\n //\tEn-/disable the iconbar.\n let classname = 'mm-menu--iconbar-' + options.position;\n let enable = () => {\n this.node.menu.classList.add(classname);\n };\n let disable = () => {\n this.node.menu.classList.remove(classname);\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', (evnt) => {\n const anchor = evnt.target.closest('.mm-iconbar__tab');\n if (!anchor) {\n return;\n }\n if (anchor.matches('.mm-iconbar__tab--selected')) {\n evnt.stopImmediatePropagation();\n return;\n }\n try {\n const panel = DOM.find(this.node.menu, `${anchor.getAttribute('href')}.mm-panel`)[0];\n if (panel) {\n evnt.preventDefault();\n evnt.stopImmediatePropagation();\n this.openPanel(panel, false);\n }\n }\n catch (err) { }\n });\n const selectTab = (panel) => {\n DOM.find(iconbar, 'a').forEach((anchor) => {\n anchor.classList.remove('mm-iconbar__tab--selected');\n });\n const anchor = DOM.find(iconbar, '[href=\"#' + panel.id + '\"]')[0];\n if (anchor) {\n anchor.classList.add('mm-iconbar__tab--selected');\n }\n else {\n const parent = DOM.find(this.node.pnls, `#${panel.dataset.mmParent}`)[0];\n if (parent) {\n selectTab(parent.closest('.mm-panel'));\n }\n }\n };\n this.bind('openPanel:before', selectTab);\n }\n }\n}\n","import OPTIONS from './_options';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\nexport default function () {\n this.opts.iconPanels = this.opts.iconPanels || {};\n //\tExtend options.\n const options = extend(this.opts.iconPanels, OPTIONS);\n let 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', () => {\n this.node.menu.classList.add('mm-menu--iconpanel');\n });\n /** The classnames that can be set to a panel */\n const classnames = [\n 'mm-panel--iconpanel-0',\n 'mm-panel--iconpanel-1',\n 'mm-panel--iconpanel-2',\n 'mm-panel--iconpanel-3'\n ];\n // Show only the main panel.\n if (keepFirst) {\n this.bind('initMenu:after', () => {\n var _a;\n (_a = DOM.children(this.node.pnls, '.mm-panel')[0]) === null || _a === void 0 ? void 0 : _a.classList.add('mm-panel--iconpanel-first');\n });\n // Show parent panel(s).\n }\n else {\n this.bind('openPanel:after', (panel) => {\n // Do nothing when opening a vertical submenu\n if (panel.closest('.mm-listitem--vertical')) {\n return;\n }\n let panels = DOM.children(this.node.pnls, '.mm-panel');\n //\tFilter out panels that are not opened.\n panels = panels.filter((panel) => panel.matches('.mm-panel--parent'));\n //\tAdd the current panel to the list.\n panels.push(panel);\n //\tSlice the opened panels to the max visible amount.\n panels = panels.slice(-options.visible);\n //\tAdd the \"iconpanel\" classnames.\n panels.forEach((panel, p) => {\n panel.classList.remove('mm-panel--iconpanel-first', ...classnames);\n panel.classList.add(`mm-panel--iconpanel-${p}`);\n });\n });\n }\n // this.bind('initPanel:after', (panel: HTMLElement) => {\n // if (!panel.closest('.mm-listitem--vertical') &&\n // !DOM.children(panel, '.mm-panel__blocker')[0]\n // ) {\n // const blocker = DOM.create('div.mm-blocker.mm-panel__blocker') as HTMLElement;\n // panel.prepend(blocker);\n // }\n // });\n }\n}\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport OPTIONS from './options';\nimport CONFIGS from './configs';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\nexport default function () {\n this.opts.pageScroll = this.opts.pageScroll || {};\n this.conf.pageScroll = this.conf.pageScroll || {};\n //\tExtend options.\n const options = extend(this.opts.pageScroll, OPTIONS);\n const configs = extend(this.conf.pageScroll, CONFIGS);\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.slice(0, 1) == '#') {\n return DOM.find(Mmenu.node.page, href)[0];\n }\n }\n catch (err) { }\n return null;\n }\n if (this.opts.offCanvas.use && options.scroll) {\n //\tScroll to section after clicking menu item.\n this.bind('close:after', () => {\n scrollTo();\n });\n this.node.menu.addEventListener('click', event => {\n var _a, _b;\n const href = ((_b = (_a = event.target) === null || _a === void 0 ? void 0 : _a.closest('a[href]')) === null || _b === void 0 ? void 0 : _b.getAttribute('href')) || '';\n section = anchorInPage(href);\n if (section) {\n event.preventDefault();\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 this.close();\n }\n }\n });\n }\n //\tUpdate selected menu item after scrolling.\n if (options.update) {\n let scts = [];\n this.bind('initListview:after', (listview) => {\n const listitems = DOM.children(listview, '.mm-listitem');\n DOM.filterLIA(listitems).forEach(anchor => {\n const section = anchorInPage(anchor.getAttribute('href'));\n if (section) {\n scts.unshift(section);\n }\n });\n });\n let _selected = -1;\n window.addEventListener('scroll', evnt => {\n const scrollTop = window.scrollY;\n for (var s = 0; s < scts.length; s++) {\n if (scts[s].offsetTop < scrollTop + configs.updateOffset) {\n if (_selected !== s) {\n _selected = s;\n let panel = DOM.children(this.node.pnls, '.mm-panel--opened')[0];\n let listitems = DOM.find(panel, '.mm-listitem');\n let anchors = DOM.filterLIA(listitems);\n anchors = anchors.filter(anchor => anchor.matches('[href=\"#' + scts[s].id + '\"]'));\n if (anchors.length) {\n this.setSelected(anchors[0].parentElement);\n }\n }\n break;\n }\n }\n }, {\n passive: true\n });\n }\n}\n","import OPTIONS from './options';\nimport * as DOM from '../../_modules/dom';\nimport * as support from '../../_modules/support';\nimport { extend } from '../../_modules/helpers';\nexport default function () {\n this.opts.sectionIndexer = this.opts.sectionIndexer || {};\n //\tExtend options.\n const options = extend(this.opts.sectionIndexer, OPTIONS);\n if (!options.add) {\n return;\n }\n this.bind('initPanels:after', () => {\n //\tAdd the indexer, only if it does not allready excists\n if (!this.node.indx) {\n let buttons = '';\n 'abcdefghijklmnopqrstuvwxyz'.split('').forEach(letter => {\n buttons += '' + letter + '';\n });\n let indexer = DOM.create('div.mm-sectionindexer');\n indexer.innerHTML = buttons;\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', evnt => {\n const anchor = evnt.target;\n if (anchor.matches('a')) {\n evnt.preventDefault();\n }\n });\n //\tScroll onMouseOver / onTouchStart\n let mouseOverEvent = evnt => {\n if (!evnt.target.matches('a')) {\n return;\n }\n const letter = evnt.target.textContent;\n const panel = DOM.children(this.node.pnls, '.mm-panel--opened')[0];\n let newTop = -1, oldTop = panel.scrollTop;\n panel.scrollTop = 0;\n DOM.find(panel, '.mm-divider')\n .filter(divider => !divider.matches('.mm-hidden'))\n .forEach(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:before', (panel) => {\n const active = DOM.find(panel, '.mm-divider').filter(divider => !divider.matches('.mm-hidden')).length;\n this.node.indx.classList[active ? 'add' : 'remove']('mm-sectionindexer--active');\n });\n });\n}\n","import OPTIONS from './options';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\nexport default function () {\n this.opts.setSelected = this.opts.setSelected || {};\n //\tExtend options.\n const options = extend(this.opts.setSelected, OPTIONS);\n //\tFind current by URL\n if (options.current == 'detect') {\n const findCurrent = (url) => {\n url = url.split('?')[0].split('#')[0];\n const anchor = this.node.menu.querySelector('a[href=\"' + url + '\"], a[href=\"' + url + '/\"]');\n if (anchor) {\n this.setSelected(anchor.parentElement);\n }\n else {\n const arr = url.split('/').slice(0, -1);\n if (arr.length) {\n findCurrent(arr.join('/'));\n }\n }\n };\n this.bind('initMenu:after', () => {\n findCurrent.call(this, window.location.href);\n });\n //\tRemove current selected item\n }\n else if (!options.current) {\n this.bind('initListview:after', (listview) => {\n DOM.children(listview, '.mm-listitem--selected').forEach((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', () => {\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:after', (panel) => {\n //\tRemove all\n DOM.find(this.node.pnls, '.mm-listitem--selected-parent').forEach((listitem) => {\n listitem.classList.remove('mm-listitem--selected-parent');\n });\n //\tMove up the DOM tree\n let current = panel;\n while (current) {\n let li = DOM.find(this.node.pnls, `#${current.dataset.mmParent}`)[0];\n current = li === null || li === void 0 ? void 0 : li.closest('.mm-panel');\n if (li && !li.matches('.mm-listitem--vertical')) {\n li.classList.add('mm-listitem--selected-parent');\n }\n }\n });\n this.bind('initMenu:after', () => {\n this.node.menu.classList.add('mm-menu--selected-parent');\n });\n }\n}\n","import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport OPTIONS from './options';\nimport * as media from '../../_modules/matchmedia';\nimport { extend } from '../../_modules/helpers';\nexport default function () {\n // Only for off-canvas menus.\n if (!this.opts.offCanvas.use) {\n return;\n }\n this.opts.sidebar = this.opts.sidebar || {};\n //\tExtend options.\n const options = extend(this.opts.sidebar, OPTIONS);\n //\tCollapsed\n if (options.collapsed.use) {\n //\tMake the menu collapsable.\n this.bind('initMenu:after', () => {\n this.node.menu.classList.add('mm-menu--sidebar-collapsed');\n });\n /** Enable the collapsed sidebar */\n let enable = () => {\n this.node.wrpr.classList.add('mm-wrapper--sidebar-collapsed');\n };\n /** Disable the collapsed sidebar */\n let disable = () => {\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', () => {\n this.node.menu.classList.add('mm-menu--sidebar-expanded');\n });\n let expandedEnabled = false;\n /** Enable the expanded sidebar */\n let enable = () => {\n expandedEnabled = true;\n this.node.wrpr.classList.add('mm-wrapper--sidebar-expanded');\n this.node.menu.removeAttribute('aria-modal');\n this.open();\n Mmenu.node.page.removeAttribute('inert');\n };\n /** Disable the expanded sidebar */\n let disable = () => {\n expandedEnabled = false;\n this.node.wrpr.classList.remove('mm-wrapper--sidebar-expanded');\n this.node.menu.setAttribute('aria-modal', 'true');\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 // Store exanded state when opening and closing the menu.\n this.bind('close:after', () => {\n if (expandedEnabled) {\n window.sessionStorage.setItem('mmenuExpandedState', 'closed');\n }\n });\n this.bind('open:after', () => {\n if (expandedEnabled) {\n window.sessionStorage.setItem('mmenuExpandedState', 'open');\n Mmenu.node.page.removeAttribute('inert');\n }\n });\n // Set the initial state\n let initialState = options.expanded.initial;\n const state = window.sessionStorage.getItem('mmenuExpandedState');\n switch (state) {\n case 'open':\n case 'closed':\n initialState = state;\n break;\n }\n if (initialState === 'closed') {\n this.bind('init:after', () => {\n this.close();\n });\n }\n }\n}\n","import Mmenu from 'mmenu-js';\r\n\r\nconst MenuMobile = {\r\n init: function() {\r\n\r\n const mmenu = new Mmenu('#menu-mobile',\r\n {\r\n // slidingSubmenus: false,\r\n extensions: ['pagedim-black', 'position-front'],\r\n navbar: {\r\n add: true,\r\n },\r\n },\r\n {\r\n offCanvas: {\r\n pageSelector: '#wrapper',\r\n },\r\n }\r\n )\r\n\r\n // document.querySelector('#menu-mobile').style.display = 'unset';\r\n \r\n $('[data-action=\"open-menu-mobile\"]').on('click', function (event) {\r\n event.preventDefault();\r\n \r\n if ($('#menu-mobile').hasClass('mm-menu--opened')) {\r\n mmenu.close();\r\n } else {\r\n mmenu.open();\r\n }\r\n });\r\n }\r\n};\r\n\r\nexport default MenuMobile\r\n","import { setCartDrawer } from \"../components/vndaComponents\";\r\n\r\nconst HeaderCart = {\r\n button: document.querySelector('[data-toggle-cart]'),\r\n selector: '[data-cart-count]',\r\n attr: '[data-cart-count-attr]',\r\n text: '[data-cart-item-text]',\r\n\r\n getCartItens: async function() {\r\n try {\r\n const itens = await $.ajax({\r\n url: '/carrinho/itens',\r\n type: 'GET',\r\n dataType: 'text',\r\n })\r\n\r\n return itens;\r\n\r\n } catch (error) {\r\n console.error('Erro ao buscar a quantidade de produtos do carrinho');\r\n console.error(error);\r\n }\r\n },\r\n\r\n updateCartCount: async function(_itemsCount = null) {\r\n let items = _itemsCount;\r\n if (_itemsCount == null) {\r\n items = await this.getCartItens();\r\n }\r\n\r\n $(this.attr).data('cart-count-attr', items);\r\n $(this.attr).attr('data-cart-count-attr', items);\r\n\r\n $(this.attr).html(items);\r\n $(this.text).html(items);\r\n },\r\n \r\n show: function () {\r\n return window.componentCartDrawer.open()\r\n },\r\n\r\n init: function() {\r\n setCartDrawer();\r\n\r\n this.updateCartCount();\r\n }\r\n};\r\n\r\nexport default HeaderCart;\r\n","const Footer = {\r\n handleFooterCategories: function () {\r\n if ($('body').width() < 1024) {\r\n $('.menu-footer').each((i, element) => {\r\n $(element).find('.title-tab').on('click', function (e) {\r\n e.preventDefault();\r\n console.log(element)\r\n console.log($(element).find('.content'))\r\n $(element).find('.content').toggleClass('open')\r\n $(this).toggleClass('open')\r\n })\r\n })\r\n }\r\n },\r\n\r\n init: function () {\r\n this.handleFooterCategories();\r\n },\r\n};\r\n\r\nexport default Footer;\r\n","const Popup = {\r\n closePopup: function (_popup) {\r\n $('[data-popup=\"' + _popup + '\"]').removeClass('active');\r\n },\r\n togglePopup: function (_popup) {\r\n $('.active[data-popup]').removeClass('active');\r\n\r\n if (_popup != '') {\r\n if ($('.active[data-popup]').length > 0) {\r\n setTimeout(function () {\r\n $('[data-popup=\"' + _popup + '\"]').addClass('active');\r\n }, 350);\r\n } else {\r\n $('[data-popup=\"' + _popup + '\"]').addClass('active');\r\n }\r\n }\r\n },\r\n init: function () {\r\n var _this = this;\r\n $(document).on('click', '[data-action=\"open-popup\"]', function (event) {\r\n event.preventDefault();\r\n //console.info('event open-opopup');\r\n var popup = $(this).data('popup');\r\n _this.togglePopup(popup);\r\n });\r\n\r\n $(document).on('click', '[data-action=\"close-popup\"]', function (event) {\r\n event.preventDefault();\r\n //console.info('event close-opopup');\r\n var popup = $(this).data('popup');\r\n _this.closePopup(popup);\r\n });\r\n },\r\n};\r\n\r\nexport default Popup\r\n","const FixedHeader = {\r\n setHeaderPosition: function() {\r\n if ($(window).scrollTop() > 25) {\r\n $('.page-home header').addClass('fixed');\r\n $('.page-home header').removeClass('not-fixed');\r\n } else {\r\n $('.page-home header').removeClass('fixed');\r\n $('.page-home header').addClass('not-fixed');\r\n }\r\n },\r\n init: function() {\r\n var _this = this;\r\n\r\n $(window).scroll(function (event) {\r\n _this.setHeaderPosition();\r\n });\r\n\r\n $(window).on('load', _this.setHeaderPosition)\r\n }\r\n}\r\n\r\nexport default FixedHeader;\r\n","const Webforms = {\r\n submitForm: function(_$form) {\r\n _$form.find('[name=\"reply_to\"]').val(_$form.find('[name=\"email\"]').val());\r\n\r\n if (!_$form.hasClass('sending')) {\r\n $.ajax({\r\n url: '/webform',\r\n type: 'POST',\r\n data: _$form.serialize(),\r\n beforeSend: function () {\r\n _$form.addClass('sending');\r\n },\r\n })\r\n .done(function () {\r\n // console.info('foi');\r\n _$form.find('[data-msg-retorno] [data-msg-success]').addClass('visible');\r\n _$form.find('[data-msg-retorno] [data-msg-error]').removeClass('visible');\r\n _$form[0].reset();\r\n setTimeout(() => {\r\n _$form.find('[data-msg-retorno] [data-msg-success]').removeClass('visible');\r\n }, 3500)\r\n })\r\n .fail(function () {\r\n // console.info('foi, mas deu ruim');\r\n _$form.find('[data-msg-retorno] [data-msg-success]').removeClass('visible');\r\n _$form.find('[data-msg-retorno] [data-msg-error]').addClass('visible');\r\n setTimeout(() => {\r\n _$form.find('[data-msg-retorno] [data-msg-error]').removeClass('visible');\r\n }, 3500)\r\n })\r\n .always(function () {\r\n console.log('complete');\r\n _$form.removeClass('sending');\r\n });\r\n }\r\n },\r\n\r\n init: function() {\r\n\r\n const _this = this;\r\n\r\n $('[data-webform]').on('submit', function (event) {\r\n event.preventDefault();\r\n var $form = $(this);\r\n var vnda = $(this).find('[name=\"vnda\"]');\r\n \r\n if (vnda.length > 0) {\r\n if (vnda.val() != '') {\r\n //console.info('ROBOT DETECTED');\r\n return false;\r\n }\r\n }\r\n \r\n _this.submitForm($form);\r\n });\r\n }\r\n}\r\n\r\nexport default Webforms;\r\n","const Search = {\r\n init: function() {\r\n var $openSearch = $('#open-search');\r\n var $closeSearch = $('#close-search');\r\n var $searchContainer = $('.search-container');\r\n\r\n $openSearch.click(function (e) {\r\n e.preventDefault();\r\n\r\n $searchContainer.addClass('active');\r\n });\r\n\r\n $closeSearch.click(function (e) {\r\n e.preventDefault();\r\n\r\n $searchContainer.removeClass('active');\r\n });\r\n\r\n }\r\n}\r\n\r\nexport default Search;\r\n","import MenuMobile from './common/menuMobile';\nimport HeaderCart from './common/headerCart';\nimport Footer from './common/footerTabs';\nimport Popup from './components/popup';\nimport FixedHeader from './common/fixedHeader';\nimport Webforms from './common/webforms';\nimport Search from './common/search';\n\nimport { getPriceProd } from './components/utilities';\nimport { setNewsletterPopup } from './components/vndaComponents';\n\nconst page = document.querySelector('body').getAttribute('data-page');\n\n// ==========================================\n// Inicialização\n// ==========================================\nconsole.log('%cVnda - Tecnologia em Ecommerce', 'color: #f88d5b; font-size: 15px; font-family: \"Verdana\", sans-serif; font-weight: bold;');\n\nwindow.addEventListener('DOMContentLoaded', () => {\n\n MenuMobile.init();\n HeaderCart.init();\n getPriceProd();\n FixedHeader.init();\n Footer.init();\n Popup.init();\n Webforms.init();\n Search.init();\n setNewsletterPopup();\n\n if (page == 'home') {\n import('./pages/home')\n .then(({ default: Home }) => { Home.init() })\n .catch(error => { console.error(error) })\n }\n \n // if (page == 'product') {\n // import('./pages/product')\n // .then(({ default: Product }) => { Product.init() })\n // .catch(error => { console.error(error) })\n // }\n\n if (page == 'tag') {\n import('./pages/tag')\n .then(({ default: Tag }) => { Tag.init() })\n .catch(error => { console.error(error) })\n }\n \n if (page == 'login') {\n import('./pages/loginPage')\n .then(({ default: LoginPage }) => { LoginPage.init() })\n .catch(error => { console.error(error) })\n }\n\n if (page == 'page') {\n import('./pages/page')\n .then(({ default: Page }) => { Page.init() })\n .catch(error => { console.error(error) })\n }\n \n});\n"],"names":["inProgress","dataWebpackPrefix","installedChunks","webpackJsonpCallback","chunkLoadingGlobal","getPriceProd","attr","processedAttr","products","document","querySelectorAll","length","forEach","processed","product","getAttribute","prodId","url","$","ajax","type","done","resp","innerHTML","setAttribute","fail","pageLoading","lettersList","window","addEventListener","funcLoading","i","removeClass","addClass","setTimeout","setCartDrawer","root","querySelector","free_shipping_value","componentCartDrawer","Vnda","Component","CartDrawer","anchor","display","startOpen","titleCart","disableShippingCalculation","freeShipping","render","open","toggle","setNewsletterPopup","maxWidth","data_popup","imageUrl","title","description","subdomain","successMessage","success","componentNewsletterPopup","NewsletterPopup","maxHeight","imagePosition","popupPosition","textBtnSubmit","classBtnSubmit","formKey","hasNameField","hasLastNameField","hasDateOfBirthField","hasPhoneField","delay","frequency","language","setFilters","propertiesList","tags","aggregations","types","categoria","style","options","property1","properties","property","colorsProps","showTitle","showColor","push","sizesOrder","newSizes","sizes","property2","sort","optionA","optionB","indexOf","value","toLowerCase","gridProps","columns","property3","componentFilters","ProductsFilter","mode","hasSort","filterOnClick","resetMode","price","min_price","max_price","setLogin","facebook_connect_url","componentLogin","Login","formProps","login","buttons","facebook","link","hasFacebook","register","module","exports","Swiper","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","m","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","f","e","chunkId","Promise","all","keys","reduce","promises","u","g","globalThis","obj","prop","prototype","hasOwnProperty","call","l","script","needAttach","scripts","getElementsByTagName","s","createElement","charset","timeout","nc","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","fn","bind","target","head","appendChild","r","Symbol","toStringTag","importScripts","scriptUrl","location","currentScript","replace","p","j","installedChunkData","promise","resolve","reject","error","errorType","realSrc","message","name","request","parentChunkLoadingFunction","data","chunkIds","moreModules","runtime","some","id","self","_panelObserver","_listviewObserver","_listitemObserver","hooks","navbar","add","titleLink","slidingSubmenus","classNames","divider","nolistview","nopanel","panel","selected","vertical","panelNodetype","screenReader","closeSubmenu","openSubmenu","toggleSubmenu","extend","orignl","dfault","k","touchDirection","direction","prevPosition","surface","evnt","touches","pageY","currentPosition","changedTouches","toString","variable","match","uniqueId","__id","cloneId","slice","originalId","translations","show","text","create","args","selector","split","elem","shift","classList","find","element","filter","children","Array","child","matches","childText","childNodes","node","nodeType","Node","TEXT_NODE","map","nodeValue","trim","join","ariaHidden","textContent","parents","parent","parentElement","prevAll","previous","current","previousElementSibling","filterLI","listitems","listitem","filterLIA","anchors","reClass","oldClass","newClass","listeners","query","yes","no","watch","mqlist","matchMedia","fire","onchange","__classPrivateFieldSet","receiver","privateMap","has","set","__classPrivateFieldGet","Mmenu","constructor","menu","configs","opts","conf","_api","hook","_deprecatedWarnings","trigger","_initObservers","_initAddons","_initHooks","_initAPI","_initMenu","_initPanels","_initOpened","openPanel","animation","setfocus","closest","pnls","remove","pnl","removeAttribute","dataset","mmParent","closePanel","lastPanel","pop","firstPanel","togglePanel","setSelected","li","func","h","apply","MutationObserver","mutationsList","mutation","addedNodes","listview","_initListview","_initListitem","subpanel","_initSubPanel","that","API","arguments","addon","addons","wrpr","i18n","panels","append","_initPanel","_a","_b","href","preventDefault","err","capture","wrapper","classname","before","_initNavbar","observe","childList","parentListitem","parentPanel","opener","tabIndex","titleText","mmTitle","prepend","includes","mmChild","button","insertBefore","nextElementSibling","WeakMap","vars","use","position","clone","insertMethod","insertSelector","page","nodetype","noSelector","closeMenu","openMenu","possiblePositions","offCanvas","blck","activeElement","close","focus","body","scrollLeft","documentElement","setPage","pages","fix","touch","navigator","msMaxTouchPoints","possibleThemes","theme","oldTheme","top","bottom","blockPanel","visible","breadcrumbs","separator","removeFirst","Navbars","navbars","navs","content","c","ctnt","navbarContents","navbarTypes","enable","crumbs","first","unshift","original","cloneNode","after","searchfield","addTo","tabs","selectTab","ariaExpanded","_c","scroll","update","scrollOffset","updateOffset","noResults","placeholder","search","searchIn","splash","cancel","clear","form","input","submit","createResultsPanel","_addAttributes","initPanel","isResultspanel","createSearchfield","initSearch","addCancel","field","autocomplete","reset","requestAnimationFrame","dispatchEvent","Event","resultspanel","scrollTop","mmSearchresult","count","_searchResultsPanel","_searchPerPanel","_resetResultsPanel","_resetPerPanel","results","result","item","item2","attributes","hover","collapsed","expanded","initial","offcanvas","blocker","hash","scrollBugFix","touchDir","stopPropagation","passive","scrollHeight","offsetHeight","backButton","_menu","states","setStates","history","pushState","pathname","back","counters","counter","listitemObserver","attributeName","iconbar","part","stopImmediatePropagation","iconPanels","keepFirst","Math","min","max","classnames","pageScroll","section","scrollTo","getBoundingClientRect","scrollingElement","behavior","anchorInPage","scts","_selected","scrollY","offsetTop","blur","sectionIndexer","indx","letter","indexer","mouseOverEvent","newTop","oldTop","active","findCurrent","arr","sidebar","expandedEnabled","sessionStorage","setItem","initialState","state","getItem","mmenu","extensions","pageSelector","on","hasClass","HeaderCart","getCartItens","dataType","console","updateCartCount","_itemsCount","items","html","init","handleFooterCategories","width","each","log","toggleClass","closePopup","_popup","togglePopup","_this","popup","setHeaderPosition","submitForm","_$form","val","serialize","beforeSend","always","$form","vnda","$openSearch","$closeSearch","$searchContainer","click","then","default","Home","catch","Tag","LoginPage","Page"],"sourceRoot":""}