{"version":3,"file":"/js/scripts.js","mappings":"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","sources":["webpack://iqeq/webpack/runtime/chunk loaded","webpack://iqeq/./assets/js/global/lozadInitiator.js","webpack://iqeq/./assets/js/global/helpers.js","webpack://iqeq/./assets/js/global/animations.js","webpack://iqeq/./assets/js/global/megaMenu.js","webpack://iqeq/./assets/js/utils.js","webpack://iqeq/./assets/js/global/mobileMenu.js","webpack://iqeq/./assets/js/global/travelTo.js","webpack://iqeq/./assets/js/global/modals.js","webpack://iqeq/./assets/js/global/selects.js","webpack://iqeq/./assets/js/global/accordions.js","webpack://iqeq/./assets/js/global/headerSearch.js","webpack://iqeq/./node_modules/ssr-window/ssr-window.esm.js","webpack://iqeq/./node_modules/swiper/shared/utils.js","webpack://iqeq/./node_modules/swiper/shared/get-support.js","webpack://iqeq/./node_modules/swiper/shared/get-device.js","webpack://iqeq/./node_modules/swiper/shared/get-browser.js","webpack://iqeq/./node_modules/swiper/core/modules/resize/resize.js","webpack://iqeq/./node_modules/swiper/core/modules/observer/observer.js","webpack://iqeq/./node_modules/swiper/core/events-emitter.js","webpack://iqeq/./node_modules/swiper/core/update/updateSize.js","webpack://iqeq/./node_modules/swiper/core/update/updateSlides.js","webpack://iqeq/./node_modules/swiper/core/update/updateAutoHeight.js","webpack://iqeq/./node_modules/swiper/core/update/updateSlidesOffset.js","webpack://iqeq/./node_modules/swiper/core/update/updateSlidesProgress.js","webpack://iqeq/./node_modules/swiper/core/update/updateProgress.js","webpack://iqeq/./node_modules/swiper/core/update/updateSlidesClasses.js","webpack://iqeq/./node_modules/swiper/core/update/updateActiveIndex.js","webpack://iqeq/./node_modules/swiper/core/update/updateClickedSlide.js","webpack://iqeq/./node_modules/swiper/core/update/index.js","webpack://iqeq/./node_modules/swiper/core/translate/getTranslate.js","webpack://iqeq/./node_modules/swiper/core/translate/setTranslate.js","webpack://iqeq/./node_modules/swiper/core/translate/minTranslate.js","webpack://iqeq/./node_modules/swiper/core/translate/maxTranslate.js","webpack://iqeq/./node_modules/swiper/core/translate/translateTo.js","webpack://iqeq/./node_modules/swiper/core/translate/index.js","webpack://iqeq/./node_modules/swiper/core/transition/setTransition.js","webpack://iqeq/./node_modules/swiper/core/transition/transitionEmit.js","webpack://iqeq/./node_modules/swiper/core/transition/transitionStart.js","webpack://iqeq/./node_modules/swiper/core/transition/transitionEnd.js","webpack://iqeq/./node_modules/swiper/core/transition/index.js","webpack://iqeq/./node_modules/swiper/core/slide/slideTo.js","webpack://iqeq/./node_modules/swiper/core/slide/slideToLoop.js","webpack://iqeq/./node_modules/swiper/core/slide/slideNext.js","webpack://iqeq/./node_modules/swiper/core/slide/slidePrev.js","webpack://iqeq/./node_modules/swiper/core/slide/slideReset.js","webpack://iqeq/./node_modules/swiper/core/slide/slideToClosest.js","webpack://iqeq/./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack://iqeq/./node_modules/swiper/core/slide/index.js","webpack://iqeq/./node_modules/swiper/core/loop/loopCreate.js","webpack://iqeq/./node_modules/swiper/core/loop/loopFix.js","webpack://iqeq/./node_modules/swiper/core/loop/loopDestroy.js","webpack://iqeq/./node_modules/swiper/core/loop/index.js","webpack://iqeq/./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack://iqeq/./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack://iqeq/./node_modules/swiper/core/grab-cursor/index.js","webpack://iqeq/./node_modules/swiper/core/events/onTouchStart.js","webpack://iqeq/./node_modules/swiper/core/events/onTouchMove.js","webpack://iqeq/./node_modules/swiper/core/events/onTouchEnd.js","webpack://iqeq/./node_modules/swiper/core/events/onResize.js","webpack://iqeq/./node_modules/swiper/core/events/onClick.js","webpack://iqeq/./node_modules/swiper/core/events/onScroll.js","webpack://iqeq/./node_modules/swiper/shared/process-lazy-preloader.js","webpack://iqeq/./node_modules/swiper/core/events/onLoad.js","webpack://iqeq/./node_modules/swiper/core/events/index.js","webpack://iqeq/./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack://iqeq/./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack://iqeq/./node_modules/swiper/core/breakpoints/index.js","webpack://iqeq/./node_modules/swiper/core/classes/addClasses.js","webpack://iqeq/./node_modules/swiper/core/classes/removeClasses.js","webpack://iqeq/./node_modules/swiper/core/classes/index.js","webpack://iqeq/./node_modules/swiper/core/check-overflow/index.js","webpack://iqeq/./node_modules/swiper/core/defaults.js","webpack://iqeq/./node_modules/swiper/core/moduleExtendParams.js","webpack://iqeq/./node_modules/swiper/core/core.js","webpack://iqeq/./node_modules/swiper/shared/create-element-if-not-defined.js","webpack://iqeq/./node_modules/swiper/modules/navigation/navigation.js","webpack://iqeq/./node_modules/swiper/shared/classes-to-selector.js","webpack://iqeq/./node_modules/swiper/modules/pagination/pagination.js","webpack://iqeq/./assets/js/global/sliders.js","webpack://iqeq/./assets/js/global/dropdown.js","webpack://iqeq/./assets/js/global/geolocation.js","webpack://iqeq/./assets/js/scripts.js","webpack://iqeq/./node_modules/choices.js/public/assets/scripts/choices.js","webpack://iqeq/./node_modules/lozad/dist/lozad.min.js","webpack://iqeq/webpack/bootstrap","webpack://iqeq/webpack/runtime/compat get default export","webpack://iqeq/webpack/runtime/define property getters","webpack://iqeq/webpack/runtime/hasOwnProperty shorthand","webpack://iqeq/webpack/runtime/jsonp chunk loading","webpack://iqeq/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import lozad from 'lozad';\n\nconst lozadInitiator = {\n init() {\n var observer = lozad('.lozad');\n observer.observe();\n\n let bgImgs = document.querySelectorAll('.bg-img');\n\n processBackgrounds(bgImgs);\n\n if (typeof wp !== 'undefined' && typeof wp.blocks !== 'undefined') {\n console.log('log');\n // This is to initialise the bg imgs in the editor, otherwise they won't show\n window.setInterval(function () {\n let bgImgs = document.querySelectorAll('.bg-img');\n processBackgrounds(bgImgs, false);\n }, 500);\n }\n\n function processBackgrounds(bgImgs, lozad = true)\n {\n bgImgs.forEach(function(bgImg) {\n const picture = bgImg.querySelector('picture');\n let img_src = null;\n\n if (picture != null && picture.length < 1 && window.innerWidth < 400) {\n img_src = picture.querySelector('source').getAttribute('srcset');\n }\n\n if (!img_src || img_src.length === 0) {\n const img = bgImg.querySelector('img');\n\n if (img != null && img.toString().length > 1) {\n img_src = img.getAttribute('data-src');\n }\n\n if (img_src === null && img !== null) {\n img_src = img.src;\n }\n }\n\n if (img_src) {\n if (bgImg.classList.contains('lozad') && lozad) {\n bgImg.setAttribute('data-background-image', img_src);\n } else {\n bgImg.style.backgroundImage = 'url(' + img_src + ')';\n }\n }\n });\n }\n }\n}\n\nexport default lozadInitiator","export function offset (elt) {\n var rect = elt.getBoundingClientRect();\n\n return {\n top: rect.top + window.scrollY,\n left: rect.left + window.scrollX,\n }\n}\n\nexport function scrollDownWithUser(el, topMargin = 140, maxScroll = 0, height = false) {\n if(! el) {\n return;\n }\n\n let originalHeight = el.offsetHeight;\n\n function setScrollTop() {\n let originalY = offset(el).top;\n\n var scrollTop = window.scrollY,\n top = scrollTop < originalY\n ? 0\n : scrollTop - originalY + topMargin;\n\n if (maxScroll) {\n top = maxScroll < top ? maxScroll : top;\n }\n\n if (top > 0) {\n el.classList.add('active');\n } else {\n el.classList.remove('active');\n }\n\n if (height) {\n el.style.height = (top + originalHeight) + 'px';\n } else {\n el.style.top = top + 'px';\n }\n }\n\n setScrollTop();\n\n window.addEventListener('scroll', function() {\n setScrollTop();\n });\n}\n\nexport function hasClass(el, cls) {\n if (el.className.match('(?:^|\\\\s)'+cls+'(?!\\\\S)')) { return true; }\n}\n\nexport function addClass(el, cls) {\n if (!el.className.match('(?:^|\\\\s)'+cls+'(?!\\\\S)')) { el.className += ' '+cls; }\n}\n\nexport function throttle(fn, ms) { // Ryan Taylor comment - https://remysharp.com/2010/07/21/throttling-function-calls\n var time, last = 0;\n return function() {\n var a = arguments, t = this, now = +(new Date), exe = function() { last = now; fn.apply(t, a); };\n clearTimeout(time);\n (now >= last + ms) ? exe() : time = setTimeout(exe, ms);\n }\n}","import {addClass, hasClass, throttle} from \"./helpers\";\n\nconst animations = {\n init() {\n function animateValue(obj, start, end, duration) {\n let startTimestamp = null;\n const step = (timestamp) => {\n if (!startTimestamp) startTimestamp = timestamp;\n const progress = Math.min((timestamp - startTimestamp) / duration, 1);\n obj.innerHTML = Math.floor(progress * (end - start) + start);\n if (progress < 1) {\n window.requestAnimationFrame(step);\n }\n };\n window.requestAnimationFrame(step);\n }\n\n function elementFromTop(elem, classToAdd, distanceFromTop, unit, delay) {\n var winY = window.innerHeight || document.documentElement.clientHeight,\n elemLength = elem.length, distTop, distPercent, distPixels, distUnit, i;\n\n for (let i = 0; i < elemLength; ++i) {\n distTop = elem[i].getBoundingClientRect().top;\n distPercent = Math.round((distTop / winY) * 100);\n distPixels = Math.round(distTop);\n distUnit = unit == 'percent' ? distPercent : distPixels;\n if (distUnit <= distanceFromTop) {\n if (classToAdd === 'count-up') {\n animateValue(elem[i], 0, elem[i].innerText, 1000)\n } else {\n if (!hasClass(elem[i], classToAdd)) {\n if (delay) {\n setTimeout(function() {\n addClass(elem[i], classToAdd);\n }, delay * i);\n } else {\n addClass(elem[i], classToAdd);\n }\n }\n }\n }\n }\n }\n\n const animationClasses = document.querySelectorAll('.fade-in, .slide-in-left, .slide-in-right');\n elementFromTop(animationClasses, 'active', 90, 'percent'); // as top of element hits top of viewport\n\n const countUp = document.querySelectorAll('.count-up');\n elementFromTop(countUp, 'count-up', 90, 'percent'); // as top of element hits top of viewport\n\n window.addEventListener('scroll', throttle(function() {\n elementFromTop(animationClasses, 'active', 90, 'percent'); // as top of element hits top of viewport\n }, 100), false);\n\n const rowLoad = document.querySelectorAll('.row-load');\n\n function sliceIntoChunks(arr, chunkSize) {\n const res = [];\n for (let i = 0; i < arr.length; i += chunkSize) {\n const chunk = arr.slice(i, i + chunkSize);\n res.push(chunk);\n }\n return res;\n }\n\n for (let i = 0; i < rowLoad.length; i++) {\n // calc computed style\n const gridComputedStyle = window.getComputedStyle(rowLoad[i]);\n\n // items per row\n const perChunk = gridComputedStyle.getPropertyValue('grid-template-columns').split(' ').length;\n\n // Convert htmlcollection to array\n var inputArray = [].slice.call(rowLoad[i].children);\n\n // Slice cols into rendered rows\n const rows = sliceIntoChunks(inputArray, perChunk);\n\n // loop the rows\n for (let r = 0; r < rows.length; r++) {\n elementFromTop(rows[r], 'active', 90, 'percent', 200);\n\n window.addEventListener('scroll', throttle(function() {\n elementFromTop(rows[r], 'active', 90, 'percent', 200);\n }, 100), false);\n }\n }\n }\n}\n\nexport default animations","const megaMenu = {\n init() {\n const page = document.querySelector('#page');\n const mmopens = document.querySelectorAll('.mm-open');\n const megamenus = document.querySelectorAll('.mega-menu');\n const openMenuClass = 'open';\n\n mmopens.forEach(function(mmopen) {\n const targetMM = document.querySelector('#' + mmopen.getAttribute('data-mm'));\n targetMM.querySelector('.inner').style.left = mmopen.getBoundingClientRect().left + 'px';\n\n window.addEventListener('resize', function(event) {\n targetMM.querySelector('.inner').style.left = mmopen.getBoundingClientRect().left + 'px';\n }, true);\n\n mmopen.addEventListener('click', (e) => {\n e.preventDefault();\n \n targetMM.querySelector('.inner').style.left = mmopen.getBoundingClientRect().left + 'px';\n\n if (mmopen.classList.contains(openMenuClass)) {\n mmopen.classList.remove(openMenuClass);\n targetMM.classList.remove(openMenuClass);\n page.classList.remove('mega-menu-open');\n } else {\n mmopens.forEach(function (mmopenClass) {\n mmopenClass.classList.remove(openMenuClass);\n });\n megamenus.forEach(function (megamenu) {\n megamenu.classList.remove(openMenuClass);\n });\n mmopen.classList.add(openMenuClass);\n targetMM.classList.add(openMenuClass);\n page.classList.add('mega-menu-open');\n }\n });\n });\n\n megamenus.forEach(function(megamenu) {\n const MMClose = megamenu.querySelector('.close');\n\n MMClose.addEventListener('click', () => {\n mmopens.forEach(function(mmopen) {\n mmopen.classList.remove(openMenuClass);\n });\n page.classList.remove('mega-menu-open');\n megamenu.classList.remove(openMenuClass);\n });\n });\n }\n}\n\nexport default megaMenu","/**\n * Throttle to prevent function overload\n * @param {fn} fn - Function\n * @param {ms} ms - Milliseconds\n */\nconst throttle = (fn, ms) => {\n let time;\n let last = 0;\n return () => {\n const a = arguments;\n const t = this;\n const now = +new Date();\n const exe = () => {\n last = now;\n fn.apply(t, a);\n };\n clearTimeout(time);\n now >= last + ms ? exe() : (time = setTimeout(exe, ms));\n };\n};\n\nexport {\n throttle,\n};\n","import { throttle } from '../utils';\n\nconst mobileMenu = {\n init() {\n const header = document.querySelector('header');\n const mmToggle = document.querySelector('header .mm-toggle');\n const mobileMenu = document.querySelector('#mobile-menu');\n const openMenuClass = 'mobile-menu-open';\n\n if (mmToggle !== null) {\n mmToggle.addEventListener('click', () => {\n toggleNav(!mmToggle.classList.contains(openMenuClass), header, mmToggle, mobileMenu, openMenuClass);\n });\n }\n\n window.addEventListener(\n 'resize',\n throttle(() => {\n toggleNav(false, header, mmToggle, mobileMenu, openMenuClass);\n }, 100),\n false,\n );\n\n document.querySelectorAll('.menu-item-has-children .menu-arrow').forEach(function(arrow) {\n arrow.onclick = function(){\n arrow.parentNode.classList.toggle('open');\n arrow.classList.toggle('open');\n };\n });\n }\n}\n\nexport default mobileMenu\n\nconst toggleNav = (open, header, toggle, menu, openClass) => {\n const body = document.body;\n\n if (open) {\n const scrollY = window.scrollY;\n\n body.style.position = 'fixed';\n body.style.top = '-' + scrollY + 'px';\n body.classList.add(openClass);\n header.classList.add(openClass);\n menu.classList.add(openClass);\n toggle.classList.add(openClass);\n } else {\n const scrollY = body.style.top;\n\n body.style.position = '';\n body.style.top = '';\n window.scrollTo(0, parseInt(scrollY || '0') * -1);\n body.classList.remove(openClass);\n header.classList.remove(openClass);\n menu.classList.remove(openClass);\n toggle.classList.remove(openClass);\n }\n\n}","import {addClass, hasClass} from \"./helpers\";\n\nconst travelTo = {\n init() {\n const anchorsWrappers = document.querySelectorAll('.travel-to-wrapper');\n\n if (anchorsWrappers) {\n anchorsWrappers.forEach(function (anchorsWrapper) {\n const autoUpdate = anchorsWrapper.getAttribute('data-auto-update');\n const anchors = document.querySelectorAll('.travel-to');\n let blocks = [];\n\n anchors.forEach(function(anchor) {\n const id = anchor.getAttribute('data-id');\n const block = document.getElementById(id);\n blocks.push(block);\n\n anchor.addEventListener('click', (e) => {\n e.preventDefault();\n let position = block.getBoundingClientRect();\n let blockTop = position.top + window.scrollY;\n\n if (hasClass(anchor, 'nav-tab')) {\n const tabSectionHeight = anchor.parentNode.parentNode.offsetHeight;\n blockTop = blockTop - tabSectionHeight;\n }\n\n window.scrollTo({\n top: blockTop,\n left: position.left,\n behavior: 'smooth'\n });\n });\n });\n\n function isElementInViewport (el) {\n var rect = el.getBoundingClientRect();\n\n return (rect.bottom >= 0 && rect.right >= 0 && rect.top <= (window.innerHeight || document.documentElement.clientHeight) && rect.left <= (window.innerWidth || document.documentElement.clientWidth));\n }\n\n function setAnchorAsActive (block) {\n const id = block.id;\n const activeAnchors = document.querySelectorAll('[data-id=\"'+id+'\"]');\n activeAnchors.forEach(function (activeAnchor) {\n if (! hasClass(activeAnchor, 'active')) {\n activeAnchor.parentNode.querySelectorAll('a').forEach(function (anchor) {\n anchor.classList.remove('active');\n });\n\n addClass(activeAnchor, 'active');\n }\n });\n }\n\n if (autoUpdate === 'true') {\n window.addEventListener('scroll', function() {\n let visibleBlocks = [];\n\n blocks.forEach(function(block) {\n if (isElementInViewport(block)) {\n const top = block.getBoundingClientRect().top;\n visibleBlocks.push({\n block: block,\n top: top,\n });\n }\n });\n\n if (visibleBlocks.length !== 0) {\n if (visibleBlocks.length > 1) {\n if (Math.abs(visibleBlocks[0].top) > visibleBlocks[1].top) {\n setAnchorAsActive(visibleBlocks[1].block)\n } else {\n setAnchorAsActive(visibleBlocks[0].block)\n }\n } else {\n setAnchorAsActive(visibleBlocks[0].block)\n }\n }\n }, false);\n }\n });\n }\n }\n}\n\nexport default travelTo","const modals = {\n init() {\n document.querySelectorAll('a[href*=\"#subscribe\"]').forEach((subscribeAnchor) => {\n subscribeAnchor.onclick = (e) => {\n e.preventDefault();\n document.getElementById('subscribe').classList.add('active');\n };\n });\n\n document.querySelectorAll('a[href*=\"#contact-person\"]').forEach((subscribeAnchor) => {\n subscribeAnchor.onclick = (e) => {\n e.preventDefault();\n const modal = document.getElementById('contact-person');\n\n const card = subscribeAnchor.parentNode.parentNode;\n\n if (card.classList.contains('person-card')) {\n const name = card.querySelector('h3').innerText;\n const profileImage = card.querySelector('.bg-img.normal').style.backgroundImage;\n\n modal.querySelector('h2 span').innerText = name;\n modal.querySelector('input[name=website_email___person_s_name]').value = name;\n modal.querySelector('.profile-image').style.backgroundImage = profileImage;\n } else {\n const name = document.querySelector('h1').innerText;\n const profileImage = document.querySelector('.page-banner--people').style.backgroundImage;\n\n modal.querySelector('h2 span').innerText = name;\n modal.querySelector('input[name=website_email___person_s_name]').value = name;\n modal.querySelector('.profile-image').style.backgroundImage = profileImage;\n }\n\n modal.classList.add('active');\n };\n });\n\n const needHelpModal = document.getElementById('need-help');\n\n if (needHelpModal) {\n const question1 = needHelpModal.querySelector('#question-1');\n const question1Buttons = question1.querySelectorAll('button');\n const question2 = needHelpModal.querySelector('#question-2');\n const question2Buttons = question2.querySelectorAll('button');\n const question3 = needHelpModal.querySelector('#question-3');\n const question4 = needHelpModal.querySelector('#question-4');\n const needHelpClose = needHelpModal.getElementsByClassName('close')[0];\n const needHelpReset = needHelpModal.getElementsByClassName('js-reset')[0];\n\n document.querySelectorAll('a[href*=\"#need-help\"]').forEach((subscribeAnchor) => {\n subscribeAnchor.onclick = (e) => {\n e.preventDefault();\n needHelpModal.classList.add('active');\n };\n });\n\n [needHelpReset, needHelpClose].forEach((item) => {\n item.addEventListener('click', () => {\n resetQuestions({ initial: question1, questions: [question2, question3, question4], buttons: [question3, question4], asset_owners: [question2], reset: needHelpReset});\n buttonAbility(question2Buttons, false);\n });\n })\n \n question1Buttons.forEach((question1Button) => {\n question1Button.addEventListener('click', () => {\n const expertiseID = question1Button.getAttribute('data-expertise');\n\n question1.classList.remove('active');\n needHelpReset.classList.add('active');\n question2.classList.add('active');\n question2.querySelector('.asset-owners[data-expertise=\"' + expertiseID + '\"]').classList.add('active');\n });\n });\n\n question2Buttons.forEach((question2Button) => {\n question2Button.addEventListener('click', () => {\n const expertiseID = question2Button.getAttribute('data-expertise');\n\n buttonAbility(question2Buttons, true);\n\n fetch(cdScriptsObj.ajax_url, {\n method: 'POST',\n credentials: 'same-origin',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Cache-Control': 'no-cache',\n },\n body: new URLSearchParams({\n action: 'needHelpQuery',\n expertiseID: JSON.stringify(expertiseID),\n }),\n }).then((response) => {\n response.json().then((results) => {\n question2.classList.remove('active');\n question3.classList.add('active');\n\n question3.querySelector('.buttons').innerHTML = results.buttons;\n\n questionButtons(needHelpModal, '#question-3', question3, question4);\n });\n }).catch((err) => console.error(err));\n });\n });\n }\n\n document.querySelectorAll('.modal .close').forEach((modalClose) => {\n modalClose.onclick = (e) => {\n e.preventDefault();\n modalClose.parentNode.parentNode.classList.remove('active');\n };\n });\n }\n}\n\nexport default modals\n\nconst buttonAbility = (buttons, disabled) => {\n buttons?.forEach((button) => {\n button.disabled = disabled;\n });\n}\n\nconst resetQuestions = ({ initial, questions, buttons, asset_owners, reset }) => {\n initial?.classList.add('active');\n reset.classList.remove('active');\n\n questions?.forEach((question) => {\n question.classList.remove('active');\n });\n\n buttons?.forEach((button) => {\n button.getElementsByClassName('buttons')[0].innerHTML = '';\n });\n\n asset_owners?.forEach((owner) => {\n Array.from(owner.getElementsByClassName('asset-owners')).forEach((el) => {\n el.classList.remove('active');\n });\n });\n}\n\nconst questionButtons = (modal, question, currentQuestion, nextQuestion) => {\n const questionButtons = modal?.querySelectorAll(`${question} button`);\n\n questionButtons?.forEach((questionButton) => {\n questionButton.onclick = () => {\n const expertiseID = questionButton.getAttribute('data-expertise');\n const serviceCatID = questionButton.getAttribute('data-service-cat');\n\n buttonAbility(questionButtons, true);\n\n fetch(cdScriptsObj.ajax_url, {\n method: 'POST',\n credentials: 'same-origin',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Cache-Control': 'no-cache',\n },\n body: new URLSearchParams({\n action: 'needHelpQuery',\n expertiseID: JSON.stringify(expertiseID),\n serviceCatID: JSON.stringify(serviceCatID),\n }),\n }).then((response) => {\n response.json().then((results) => {\n currentQuestion.classList.remove('active');\n nextQuestion.classList.add('active');\n\n nextQuestion.querySelector('.buttons').innerHTML = results.buttons;\n });\n }).catch((err) => console.error(err));\n };\n });\n}\n","import Choices from \"choices.js\";\n\nconst selects = {\n init() {\n const selects = document.querySelectorAll('.select-filter');\n\n selects.forEach(function(select) {\n //copy full select node with values\n let choicesTagsBefore = select.cloneNode(true);\n //convert to array\n choicesTagsBefore = Array.from(choicesTagsBefore.options);\n\n const choicesTagsObj = new Choices(select, {\n shouldSort: false,\n itemSelectText: ''\n });\n\n //fill again after form reset (Choices.js bug workaround)\n // https://github.com/Choices-js/Choices/issues/1023\n const filtersForm = document.getElementById('filters-form');\n if (filtersForm !== null) {\n filtersForm.addEventListener('reset', (ev) => {\n choicesTagsObj.setChoices(async () => {\n return choicesTagsBefore.map(({ value, label }) => ({\n value,\n label,\n selected: false,\n disabled: !value,\n }));\n });\n })\n }\n });\n }\n}\n\nexport default selects","const accordions = {\n init() {\n document.querySelectorAll('.accordion-item').forEach(function(accordionItem) {\n const toggle = accordionItem.querySelector('.title');\n\n if (accordionItem.classList.contains('open')) {\n const expanded = accordionItem.querySelector('.expanded');\n expanded.style.height = expanded.scrollHeight + \"px\";\n }\n\n toggle.onclick = function(){\n accordionItem.classList.toggle('open');\n\n const expanded = accordionItem.querySelector('.expanded');\n\n if (expanded.clientHeight) {\n expanded.style.height = 0;\n } else {\n expanded.style.height = expanded.scrollHeight + \"px\";\n }\n };\n });\n }\n}\n\nexport default accordions","const headerSearch = {\n init() {\n const search = document.querySelector('.search-form .search');\n\n if (search !== null) {\n search.onclick = function(e) {\n e.preventDefault();\n const form = document.querySelector('.search-form form');\n\n if (form.classList.contains('active')) {\n form.classList.remove('active');\n } else {\n form.classList.add('active');\n }\n };\n }\n }\n}\n\nexport default headerSearch","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","import { getWindow, getDocument } from 'ssr-window';\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowEl && slideEl.shadowEl.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction findElementsInElements(elements = [], selector = '') {\n const found = [];\n elements.forEach(el => {\n found.push(...el.querySelectorAll(selector));\n });\n return found;\n}\nfunction elementChildren(element, selector = '') {\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction createElement(tag, classes = []) {\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : [classes]));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty, getSlideTransformEl,\n// dom\nfindElementsInElements, createElement, elementChildren, elementOffset, elementPrevAll, elementNextAll, elementStyle, elementIndex, elementParents, elementTransitionEnd, elementOuterSize };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n return {\n isSafari: needPerspectiveFix || isSafari(),\n needPerspectiveFix,\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\nexport { getBrowser };","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nimport { elementParents } from '../../../shared/utils.js';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.el);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.el, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","/* eslint-disable no-underscore-dangle */\n\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};","import { elementStyle } from '../../shared/utils.js';\nexport default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { elementChildren, elementOuterSize, elementStyle, setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + params.spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + params.spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}","export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset;\n }\n}","export default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}","import { elementIndex } from '../../shared/utils.js';\nexport default function updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = elementIndex(swiper.slides.filter(el => el.getAttribute('data-swiper-slide-index') === '0')[0]);\n const lastSlideIndex = elementIndex(swiper.slides.filter(el => el.getAttribute('data-swiper-slide-index') * 1 === swiper.slides.length - 1)[0]);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}","import { elementChildren, elementNextAll, elementPrevAll } from '../../shared/utils.js';\nexport default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n let activeSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n activeSlide = slides[activeIndex];\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n\n // Next Slide\n let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}","export function getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nexport default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n }\n return;\n }\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (swiper.slides[activeIndex]) {\n realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","export default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = e.closest(`.${params.slideClass}, swiper-slide`);\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n }\n swiper.emit('setTransition', duration, byController);\n}","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}","import { elementIndex } from '../../shared/utils.js';\nexport default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n newIndex = elementIndex(swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === newIndex)[0]);\n }\n }\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import { elementChildren, elementIndex, nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = elementIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = elementIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { elementChildren } from '../../shared/utils.js';\nexport default function loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}","import { elementIndex } from '../../shared/utils.js';\nexport default function loopFix({\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n} = {}) {\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n let loopedSlides = params.loopedSlides || slidesPerView;\n if (loopedSlides % params.slidesPerGroup !== 0) {\n loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n }\n swiper.loopedSlides = loopedSlides;\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = elementIndex(swiper.slides.filter(el => el.classList.contains('swiper-slide-active'))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n // prepend last slides before start\n if (activeSlideIndex < loopedSlides) {\n slidesPrepended = loopedSlides - activeSlideIndex;\n for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n prependSlidesIndexes.push(slides.length - index - 1);\n }\n } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n slidesAppended = activeSlideIndex - (swiper.slides.length - loopedSlides * 2);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlidesIndexes.push(index);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slidesEl.prepend(swiper.slides[index]);\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slidesEl.append(swiper.slides[index]);\n });\n }\n swiper.recalcSlides();\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n }\n }\n } else {\n if (setTranslate) {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n }\n }\n } else {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n slideTo: false,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (c.params.loop) c.loopFix(loopParams);\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix(loopParams);\n }\n }\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","import { getWindow, getDocument } from 'ssr-window';\nimport { now } from '../../shared/utils.js';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n data.evCache.push(event);\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n prevX: swiper.touches.currentX,\n prevY: swiper.touches.currentY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n if (!data.isMoved) {\n if (isLoop) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && Math.abs(diff) >= 1) {\n // need another loop fix\n swiper.loopFix({\n direction: swiper.swipeDirection,\n setTranslate: true\n });\n loopFixed = true;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);\n if (pointerIndex >= 0) {\n data.evCache.splice(pointerIndex, 1);\n }\n if (['pointercancel', 'pointerout', 'pointerleave'].includes(event.type)) return;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","let timeout;\nexport default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n swiper.autoplay.resume();\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}","export const processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n const lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n};","import { processLazyPreloader } from '../../shared/process-lazy-preloader.js';\nexport default function onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n swiper.update();\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nimport onLoad from './onLoad.js';\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n }\n swiper.emit('breakpoint', breakpointParams);\n}","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nexport default {\n checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopedSlides: null,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { extend, now, deleteProps, createElement, elementChildren, elementStyle } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nimport { processLazyPreloader } from '../shared/process-lazy-preloader.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n evCache: []\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.shadowEl) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement ? el : wrapperEl,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","import { createElement, elementChildren } from './utils.js';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n const makeElementsArray = el => {\n if (!Array.isArray(el)) el = [el].filter(e => !!e);\n return el;\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.shadowRoot.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","export default function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport { elementIndex, elementOuterSize, elementParents } from '../../shared/utils.js';\nexport default function Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n const makeElementsArray = el => {\n if (!Array.isArray(el)) el = [el].filter(e => !!e);\n return el;\n };\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n bulletEl.classList.remove(...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`));\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets[i].classList.add(`${params.bulletActiveClass}-main`);\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets = [...subEl.querySelectorAll(classesToSelector(params.bulletClass))];\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.shadowRoot.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(params.clickableClass);\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(params.bulletActiveClass));\n }\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n let {\n el\n } = swiper.pagination;\n if (!Array.isArray(el)) el = [el].filter(element => !!element);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}","import Swiper, { Navigation, Pagination } from 'swiper';\n\nSwiper.use([Navigation, Pagination]);\n\nconst options = {\n whoWeHelpClass: '.swiper.who-we-help-slider',\n imageClass: '.swiper.image-carousel-wrapper',\n testimonialClass: '.swiper.testimonial-slider-wrapper',\n twoColumnClass: '.swiper.two-column-slider-wrapper',\n logosClass: '.swiper.logos-slider',\n insightsClass: '.swiper.insights-slider',\n}\n\nconst sliders = {\n init() {\n const whoWeHelpSlider = document.querySelectorAll(options.whoWeHelpClass);\n const imageSlider = document.querySelectorAll(options.imageClass);\n const testimonialSlider = document.querySelectorAll(options.testimonialClass);\n const twoColumnSlider = document.querySelectorAll(options.twoColumnClass);\n const logosSlider = document.querySelectorAll(options.logosClass);\n const insightsSlider = document.querySelectorAll(options.insightsClass);\n\n whoWeHelpSlider.forEach((item, index) => {\n const instanceClass = `swiper-${index}`;\n\n item.classList.add(instanceClass);\n swiperInit(`${options.whoWeHelpClass}.${instanceClass}`, {\n loop: true,\n pagination: pagination(),\n navigation: navigation(),\n });\n });\n\n imageSlider.forEach((item, index) => {\n const instanceClass = `swiper-${index}`;\n\n item.classList.add(instanceClass);\n swiperInit(`${options.imageClass}.${instanceClass}`, {\n loop: true,\n autoHeight: true,\n navigation: navigation(),\n });\n });\n\n testimonialSlider.forEach((item, index) => {\n const instanceClass = `swiper-${index}`;\n\n item.classList.add(instanceClass);\n swiperInit(`${options.testimonialClass}.${instanceClass}`, {\n loop: true,\n navigation: navigation(),\n });\n });\n\n twoColumnSlider.forEach((item, index) => {\n const instanceClass = `swiper-${index}`;\n\n item.classList.add(instanceClass);\n swiperInit(`${options.twoColumnClass}.${instanceClass}`, {\n loop: true,\n navigation: navigation(),\n });\n });\n\n logosSlider.forEach((item, index) => {\n const instanceClass = `swiper-${index}`;\n\n item.classList.add(instanceClass);\n swiperInit(`${options.logosClass}.${instanceClass}`, {\n slidesPerView: 'auto',\n pagination: pagination(),\n });\n });\n\n insightsSlider.forEach((item, index) => {\n const instanceClass = `swiper-${index}`;\n\n item.classList.add(instanceClass);\n swiperInit(`${options.insightsClass}.${instanceClass}`, {\n loop: true,\n slidesPerView: 'auto',\n spaceBetween: 30,\n navigation: navigation(),\n });\n });\n }\n}\n\nexport default sliders\n\nconst swiperInit = (slider, args) => {\n const eventArgs = {\n on: {\n afterInit: (carousel) => {\n slideCount(carousel);\n }\n }\n }\n\n if ('navigation' in args) {\n args['navigation']['nextEl'] = `${slider} ${args['navigation']['nextEl']}`;\n args['navigation']['prevEl'] = `${slider} ${args['navigation']['prevEl']}`;\n }\n\n if ('pagination' in args) {\n args['pagination']['el'] = `${slider} ${args['pagination']['el']}`;\n }\n\n new Swiper(slider, { ...args, ...eventArgs });\n}\n\nconst navigation = () => {\n return {\n nextEl: '.next',\n prevEl: '.prev',\n }\n}\n\nconst pagination = () => {\n return {\n el: '.pagination',\n clickable: true\n }\n}\n\nconst slideCount = (carousel) => {\n if (carousel.slides.length <= 1) {\n carousel.el.classList.add('hide-controls');\n }\n}","const dropdown = {\n init() {\n\n const langSelector = document.getElementsByClassName('js-language-selector');\n const langGlobal = document.querySelector('.language-global');\n const langMenuSelect = document.querySelector('.lang-menu-select');\n\n if (langSelector.length > 0) {\n Array.from(langSelector).forEach((el) => {\n const root = document.documentElement;\n const elWidth = el.offsetWidth;\n\n root.style.setProperty('--language-drop-width', `${elWidth}px`);\n });\n }\n\n langGlobal.addEventListener('click', function(event) {\n event.stopPropagation();\n langMenuSelect.style.display = langMenuSelect.style.display === 'block' ? 'none' : 'block';\n });\n\n document.addEventListener('click', function() {\n langMenuSelect.style.display = 'none';\n });\n\n langMenuSelect.addEventListener('click', function(event) {\n event.stopPropagation();\n });\n }\n}\n\nexport default dropdown","const options = {\n item: 'js-geo-modal',\n close: 'js-close',\n link: 'js-link',\n session: 'iqeq_geo_popup',\n dialog: 'js-geo-modal__dialog',\n}\n\nconst geolocation = {\n init() {\n const item = document.getElementsByClassName(options.item);\n const modals = [...item];\n\n modals.forEach((modal) => {\n const dialog = modal.getElementsByClassName(options.dialog);\n const linkBtn = modal.getElementsByClassName(options.link);\n const linkBtns = [...linkBtn];\n const closeBtn = modal.getElementsByClassName(options.close);\n const closeBtns = [...closeBtn];\n\n dialog[0].setAttribute('open', true);\n\n if (!sessionStorage.getItem(options.session)) {\n modal.classList.add('active');\n }\n\n linkBtns.forEach((link) => {\n link.addEventListener('click', (e) => {\n e.preventDefault();\n\n const target = e.target;\n\n if (!sessionStorage.getItem(options.session)) {\n sessionStorage.setItem(options.session, 'true');\n }\n\n window.location.href = target.href;\n });\n });\n\n closeBtns.forEach((close) => {\n close.addEventListener('click', (e) => {\n const target = e.target;\n\n if (!sessionStorage.getItem(options.session)) {\n sessionStorage.setItem(options.session, 'true');\n }\n\n target.closest(`.${options.item}`).classList.remove('active');\n });\n });\n });\n\n }\n}\n\nexport default geolocation;\n","/**\n * Main Script File\n */\n\nimport lozadInitiator from \"./global/lozadInitiator\";\nimport animations from \"./global/animations\";\nimport megaMenu from \"./global/megaMenu\";\nimport mobileMenu from \"./global/mobileMenu\";\nimport travelTo from \"./global/travelTo\";\nimport modals from \"./global/modals\";\nimport selects from \"./global/selects\";\nimport accordions from \"./global/accordions\";\nimport headerSearch from \"./global/headerSearch\";\nimport sliders from \"./global/sliders\";\nimport dropdown from \"./global/dropdown\";\nimport geolocation from \"./global/geolocation\";\n\nlozadInitiator.init();\nanimations.init();\nmegaMenu.init();\nmobileMenu.init();\ntravelTo.init();\nmodals.init();\nselects.init();\naccordions.init();\nheaderSearch.init();\nsliders.init();\ndropdown.init();\ngeolocation.init();\n","/*! choices.js v10.2.0 | © 2022 Josh Johnson | https://github.com/jshjohnson/Choices#readme */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Choices\"] = factory();\n\telse\n\t\troot[\"Choices\"] = factory();\n})(window, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 282:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.clearChoices = exports.activateChoices = exports.filterChoices = exports.addChoice = void 0;\nvar constants_1 = __webpack_require__(883);\nvar addChoice = function (_a) {\n var value = _a.value,\n label = _a.label,\n id = _a.id,\n groupId = _a.groupId,\n disabled = _a.disabled,\n elementId = _a.elementId,\n customProperties = _a.customProperties,\n placeholder = _a.placeholder,\n keyCode = _a.keyCode;\n return {\n type: constants_1.ACTION_TYPES.ADD_CHOICE,\n value: value,\n label: label,\n id: id,\n groupId: groupId,\n disabled: disabled,\n elementId: elementId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n };\n};\nexports.addChoice = addChoice;\nvar filterChoices = function (results) {\n return {\n type: constants_1.ACTION_TYPES.FILTER_CHOICES,\n results: results\n };\n};\nexports.filterChoices = filterChoices;\nvar activateChoices = function (active) {\n if (active === void 0) {\n active = true;\n }\n return {\n type: constants_1.ACTION_TYPES.ACTIVATE_CHOICES,\n active: active\n };\n};\nexports.activateChoices = activateChoices;\nvar clearChoices = function () {\n return {\n type: constants_1.ACTION_TYPES.CLEAR_CHOICES\n };\n};\nexports.clearChoices = clearChoices;\n\n/***/ }),\n\n/***/ 783:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.addGroup = void 0;\nvar constants_1 = __webpack_require__(883);\nvar addGroup = function (_a) {\n var value = _a.value,\n id = _a.id,\n active = _a.active,\n disabled = _a.disabled;\n return {\n type: constants_1.ACTION_TYPES.ADD_GROUP,\n value: value,\n id: id,\n active: active,\n disabled: disabled\n };\n};\nexports.addGroup = addGroup;\n\n/***/ }),\n\n/***/ 464:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.highlightItem = exports.removeItem = exports.addItem = void 0;\nvar constants_1 = __webpack_require__(883);\nvar addItem = function (_a) {\n var value = _a.value,\n label = _a.label,\n id = _a.id,\n choiceId = _a.choiceId,\n groupId = _a.groupId,\n customProperties = _a.customProperties,\n placeholder = _a.placeholder,\n keyCode = _a.keyCode;\n return {\n type: constants_1.ACTION_TYPES.ADD_ITEM,\n value: value,\n label: label,\n id: id,\n choiceId: choiceId,\n groupId: groupId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n };\n};\nexports.addItem = addItem;\nvar removeItem = function (id, choiceId) {\n return {\n type: constants_1.ACTION_TYPES.REMOVE_ITEM,\n id: id,\n choiceId: choiceId\n };\n};\nexports.removeItem = removeItem;\nvar highlightItem = function (id, highlighted) {\n return {\n type: constants_1.ACTION_TYPES.HIGHLIGHT_ITEM,\n id: id,\n highlighted: highlighted\n };\n};\nexports.highlightItem = highlightItem;\n\n/***/ }),\n\n/***/ 137:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.setIsLoading = exports.resetTo = exports.clearAll = void 0;\nvar constants_1 = __webpack_require__(883);\nvar clearAll = function () {\n return {\n type: constants_1.ACTION_TYPES.CLEAR_ALL\n };\n};\nexports.clearAll = clearAll;\nvar resetTo = function (state) {\n return {\n type: constants_1.ACTION_TYPES.RESET_TO,\n state: state\n };\n};\nexports.resetTo = resetTo;\nvar setIsLoading = function (isLoading) {\n return {\n type: constants_1.ACTION_TYPES.SET_IS_LOADING,\n isLoading: isLoading\n };\n};\nexports.setIsLoading = setIsLoading;\n\n/***/ }),\n\n/***/ 373:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar deepmerge_1 = __importDefault(__webpack_require__(996));\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar fuse_js_1 = __importDefault(__webpack_require__(221));\nvar choices_1 = __webpack_require__(282);\nvar groups_1 = __webpack_require__(783);\nvar items_1 = __webpack_require__(464);\nvar misc_1 = __webpack_require__(137);\nvar components_1 = __webpack_require__(520);\nvar constants_1 = __webpack_require__(883);\nvar defaults_1 = __webpack_require__(789);\nvar utils_1 = __webpack_require__(799);\nvar reducers_1 = __webpack_require__(655);\nvar store_1 = __importDefault(__webpack_require__(744));\nvar templates_1 = __importDefault(__webpack_require__(686));\n/** @see {@link http://browserhacks.com/#hack-acea075d0ac6954f275a70023906050c} */\nvar IS_IE11 = '-ms-scroll-limit' in document.documentElement.style && '-ms-ime-align' in document.documentElement.style;\nvar USER_DEFAULTS = {};\n/**\n * Choices\n * @author Josh Johnson\n */\nvar Choices = /** @class */function () {\n function Choices(element, userConfig) {\n if (element === void 0) {\n element = '[data-choice]';\n }\n if (userConfig === void 0) {\n userConfig = {};\n }\n var _this = this;\n if (userConfig.allowHTML === undefined) {\n console.warn('Deprecation warning: allowHTML will default to false in a future release. To render HTML in Choices, you will need to set it to true. Setting allowHTML will suppress this message.');\n }\n this.config = deepmerge_1.default.all([defaults_1.DEFAULT_CONFIG, Choices.defaults.options, userConfig],\n // When merging array configs, replace with a copy of the userConfig array,\n // instead of concatenating with the default array\n {\n arrayMerge: function (_, sourceArray) {\n return __spreadArray([], sourceArray, true);\n }\n });\n var invalidConfigOptions = (0, utils_1.diff)(this.config, defaults_1.DEFAULT_CONFIG);\n if (invalidConfigOptions.length) {\n console.warn('Unknown config option(s) passed', invalidConfigOptions.join(', '));\n }\n var passedElement = typeof element === 'string' ? document.querySelector(element) : element;\n if (!(passedElement instanceof HTMLInputElement || passedElement instanceof HTMLSelectElement)) {\n throw TypeError('Expected one of the following types text|select-one|select-multiple');\n }\n this._isTextElement = passedElement.type === constants_1.TEXT_TYPE;\n this._isSelectOneElement = passedElement.type === constants_1.SELECT_ONE_TYPE;\n this._isSelectMultipleElement = passedElement.type === constants_1.SELECT_MULTIPLE_TYPE;\n this._isSelectElement = this._isSelectOneElement || this._isSelectMultipleElement;\n this.config.searchEnabled = this._isSelectMultipleElement || this.config.searchEnabled;\n if (!['auto', 'always'].includes(\"\".concat(this.config.renderSelectedChoices))) {\n this.config.renderSelectedChoices = 'auto';\n }\n if (userConfig.addItemFilter && typeof userConfig.addItemFilter !== 'function') {\n var re = userConfig.addItemFilter instanceof RegExp ? userConfig.addItemFilter : new RegExp(userConfig.addItemFilter);\n this.config.addItemFilter = re.test.bind(re);\n }\n if (this._isTextElement) {\n this.passedElement = new components_1.WrappedInput({\n element: passedElement,\n classNames: this.config.classNames,\n delimiter: this.config.delimiter\n });\n } else {\n this.passedElement = new components_1.WrappedSelect({\n element: passedElement,\n classNames: this.config.classNames,\n template: function (data) {\n return _this._templates.option(data);\n }\n });\n }\n this.initialised = false;\n this._store = new store_1.default();\n this._initialState = reducers_1.defaultState;\n this._currentState = reducers_1.defaultState;\n this._prevState = reducers_1.defaultState;\n this._currentValue = '';\n this._canSearch = !!this.config.searchEnabled;\n this._isScrollingOnIe = false;\n this._highlightPosition = 0;\n this._wasTap = true;\n this._placeholderValue = this._generatePlaceholderValue();\n this._baseId = (0, utils_1.generateId)(this.passedElement.element, 'choices-');\n /**\n * setting direction in cases where it's explicitly set on passedElement\n * or when calculated direction is different from the document\n */\n this._direction = this.passedElement.dir;\n if (!this._direction) {\n var elementDirection = window.getComputedStyle(this.passedElement.element).direction;\n var documentDirection = window.getComputedStyle(document.documentElement).direction;\n if (elementDirection !== documentDirection) {\n this._direction = elementDirection;\n }\n }\n this._idNames = {\n itemChoice: 'item-choice'\n };\n if (this._isSelectElement) {\n // Assign preset groups from passed element\n this._presetGroups = this.passedElement.optionGroups;\n // Assign preset options from passed element\n this._presetOptions = this.passedElement.options;\n }\n // Assign preset choices from passed object\n this._presetChoices = this.config.choices;\n // Assign preset items from passed object first\n this._presetItems = this.config.items;\n // Add any values passed from attribute\n if (this.passedElement.value && this._isTextElement) {\n var splitValues = this.passedElement.value.split(this.config.delimiter);\n this._presetItems = this._presetItems.concat(splitValues);\n }\n // Create array of choices from option elements\n if (this.passedElement.options) {\n this.passedElement.options.forEach(function (option) {\n _this._presetChoices.push({\n value: option.value,\n label: option.innerHTML,\n selected: !!option.selected,\n disabled: option.disabled || option.parentNode.disabled,\n placeholder: option.value === '' || option.hasAttribute('placeholder'),\n customProperties: (0, utils_1.parseCustomProperties)(option.dataset.customProperties)\n });\n });\n }\n this._render = this._render.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n this._onKeyUp = this._onKeyUp.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onTouchMove = this._onTouchMove.bind(this);\n this._onTouchEnd = this._onTouchEnd.bind(this);\n this._onMouseDown = this._onMouseDown.bind(this);\n this._onMouseOver = this._onMouseOver.bind(this);\n this._onFormReset = this._onFormReset.bind(this);\n this._onSelectKey = this._onSelectKey.bind(this);\n this._onEnterKey = this._onEnterKey.bind(this);\n this._onEscapeKey = this._onEscapeKey.bind(this);\n this._onDirectionKey = this._onDirectionKey.bind(this);\n this._onDeleteKey = this._onDeleteKey.bind(this);\n // If element has already been initialised with Choices, fail silently\n if (this.passedElement.isActive) {\n if (!this.config.silent) {\n console.warn('Trying to initialise Choices on element already initialised', {\n element: element\n });\n }\n this.initialised = true;\n return;\n }\n // Let's go\n this.init();\n }\n Object.defineProperty(Choices, \"defaults\", {\n get: function () {\n return Object.preventExtensions({\n get options() {\n return USER_DEFAULTS;\n },\n get templates() {\n return templates_1.default;\n }\n });\n },\n enumerable: false,\n configurable: true\n });\n Choices.prototype.init = function () {\n if (this.initialised) {\n return;\n }\n this._createTemplates();\n this._createElements();\n this._createStructure();\n this._store.subscribe(this._render);\n this._render();\n this._addEventListeners();\n var shouldDisable = !this.config.addItems || this.passedElement.element.hasAttribute('disabled');\n if (shouldDisable) {\n this.disable();\n }\n this.initialised = true;\n var callbackOnInit = this.config.callbackOnInit;\n // Run callback if it is a function\n if (callbackOnInit && typeof callbackOnInit === 'function') {\n callbackOnInit.call(this);\n }\n };\n Choices.prototype.destroy = function () {\n if (!this.initialised) {\n return;\n }\n this._removeEventListeners();\n this.passedElement.reveal();\n this.containerOuter.unwrap(this.passedElement.element);\n this.clearStore();\n if (this._isSelectElement) {\n this.passedElement.options = this._presetOptions;\n }\n this._templates = templates_1.default;\n this.initialised = false;\n };\n Choices.prototype.enable = function () {\n if (this.passedElement.isDisabled) {\n this.passedElement.enable();\n }\n if (this.containerOuter.isDisabled) {\n this._addEventListeners();\n this.input.enable();\n this.containerOuter.enable();\n }\n return this;\n };\n Choices.prototype.disable = function () {\n if (!this.passedElement.isDisabled) {\n this.passedElement.disable();\n }\n if (!this.containerOuter.isDisabled) {\n this._removeEventListeners();\n this.input.disable();\n this.containerOuter.disable();\n }\n return this;\n };\n Choices.prototype.highlightItem = function (item, runEvent) {\n if (runEvent === void 0) {\n runEvent = true;\n }\n if (!item || !item.id) {\n return this;\n }\n var id = item.id,\n _a = item.groupId,\n groupId = _a === void 0 ? -1 : _a,\n _b = item.value,\n value = _b === void 0 ? '' : _b,\n _c = item.label,\n label = _c === void 0 ? '' : _c;\n var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n this._store.dispatch((0, items_1.highlightItem)(id, true));\n if (runEvent) {\n this.passedElement.triggerEvent(constants_1.EVENTS.highlightItem, {\n id: id,\n value: value,\n label: label,\n groupValue: group && group.value ? group.value : null\n });\n }\n return this;\n };\n Choices.prototype.unhighlightItem = function (item) {\n if (!item || !item.id) {\n return this;\n }\n var id = item.id,\n _a = item.groupId,\n groupId = _a === void 0 ? -1 : _a,\n _b = item.value,\n value = _b === void 0 ? '' : _b,\n _c = item.label,\n label = _c === void 0 ? '' : _c;\n var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n this._store.dispatch((0, items_1.highlightItem)(id, false));\n this.passedElement.triggerEvent(constants_1.EVENTS.highlightItem, {\n id: id,\n value: value,\n label: label,\n groupValue: group && group.value ? group.value : null\n });\n return this;\n };\n Choices.prototype.highlightAll = function () {\n var _this = this;\n this._store.items.forEach(function (item) {\n return _this.highlightItem(item);\n });\n return this;\n };\n Choices.prototype.unhighlightAll = function () {\n var _this = this;\n this._store.items.forEach(function (item) {\n return _this.unhighlightItem(item);\n });\n return this;\n };\n Choices.prototype.removeActiveItemsByValue = function (value) {\n var _this = this;\n this._store.activeItems.filter(function (item) {\n return item.value === value;\n }).forEach(function (item) {\n return _this._removeItem(item);\n });\n return this;\n };\n Choices.prototype.removeActiveItems = function (excludedId) {\n var _this = this;\n this._store.activeItems.filter(function (_a) {\n var id = _a.id;\n return id !== excludedId;\n }).forEach(function (item) {\n return _this._removeItem(item);\n });\n return this;\n };\n Choices.prototype.removeHighlightedItems = function (runEvent) {\n var _this = this;\n if (runEvent === void 0) {\n runEvent = false;\n }\n this._store.highlightedActiveItems.forEach(function (item) {\n _this._removeItem(item);\n // If this action was performed by the user\n // trigger the event\n if (runEvent) {\n _this._triggerChange(item.value);\n }\n });\n return this;\n };\n Choices.prototype.showDropdown = function (preventInputFocus) {\n var _this = this;\n if (this.dropdown.isActive) {\n return this;\n }\n requestAnimationFrame(function () {\n _this.dropdown.show();\n _this.containerOuter.open(_this.dropdown.distanceFromTopWindow);\n if (!preventInputFocus && _this._canSearch) {\n _this.input.focus();\n }\n _this.passedElement.triggerEvent(constants_1.EVENTS.showDropdown, {});\n });\n return this;\n };\n Choices.prototype.hideDropdown = function (preventInputBlur) {\n var _this = this;\n if (!this.dropdown.isActive) {\n return this;\n }\n requestAnimationFrame(function () {\n _this.dropdown.hide();\n _this.containerOuter.close();\n if (!preventInputBlur && _this._canSearch) {\n _this.input.removeActiveDescendant();\n _this.input.blur();\n }\n _this.passedElement.triggerEvent(constants_1.EVENTS.hideDropdown, {});\n });\n return this;\n };\n Choices.prototype.getValue = function (valueOnly) {\n if (valueOnly === void 0) {\n valueOnly = false;\n }\n var values = this._store.activeItems.reduce(function (selectedItems, item) {\n var itemValue = valueOnly ? item.value : item;\n selectedItems.push(itemValue);\n return selectedItems;\n }, []);\n return this._isSelectOneElement ? values[0] : values;\n };\n Choices.prototype.setValue = function (items) {\n var _this = this;\n if (!this.initialised) {\n return this;\n }\n items.forEach(function (value) {\n return _this._setChoiceOrItem(value);\n });\n return this;\n };\n Choices.prototype.setChoiceByValue = function (value) {\n var _this = this;\n if (!this.initialised || this._isTextElement) {\n return this;\n }\n // If only one value has been passed, convert to array\n var choiceValue = Array.isArray(value) ? value : [value];\n // Loop through each value and\n choiceValue.forEach(function (val) {\n return _this._findAndSelectChoiceByValue(val);\n });\n return this;\n };\n /**\n * Set choices of select input via an array of objects (or function that returns array of object or promise of it),\n * a value field name and a label field name.\n * This behaves the same as passing items via the choices option but can be called after initialising Choices.\n * This can also be used to add groups of choices (see example 2); Optionally pass a true `replaceChoices` value to remove any existing choices.\n * Optionally pass a `customProperties` object to add additional data to your choices (useful when searching/filtering etc).\n *\n * **Input types affected:** select-one, select-multiple\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices([\n * {value: 'One', label: 'Label One', disabled: true},\n * {value: 'Two', label: 'Label Two', selected: true},\n * {value: 'Three', label: 'Label Three'},\n * ], 'value', 'label', false);\n * ```\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices(async () => {\n * try {\n * const items = await fetch('/items');\n * return items.json()\n * } catch(err) {\n * console.error(err)\n * }\n * });\n * ```\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices([{\n * label: 'Group one',\n * id: 1,\n * disabled: false,\n * choices: [\n * {value: 'Child One', label: 'Child One', selected: true},\n * {value: 'Child Two', label: 'Child Two', disabled: true},\n * {value: 'Child Three', label: 'Child Three'},\n * ]\n * },\n * {\n * label: 'Group two',\n * id: 2,\n * disabled: false,\n * choices: [\n * {value: 'Child Four', label: 'Child Four', disabled: true},\n * {value: 'Child Five', label: 'Child Five'},\n * {value: 'Child Six', label: 'Child Six', customProperties: {\n * description: 'Custom description about child six',\n * random: 'Another random custom property'\n * }},\n * ]\n * }], 'value', 'label', false);\n * ```\n */\n Choices.prototype.setChoices = function (choicesArrayOrFetcher, value, label, replaceChoices) {\n var _this = this;\n if (choicesArrayOrFetcher === void 0) {\n choicesArrayOrFetcher = [];\n }\n if (value === void 0) {\n value = 'value';\n }\n if (label === void 0) {\n label = 'label';\n }\n if (replaceChoices === void 0) {\n replaceChoices = false;\n }\n if (!this.initialised) {\n throw new ReferenceError(\"setChoices was called on a non-initialized instance of Choices\");\n }\n if (!this._isSelectElement) {\n throw new TypeError(\"setChoices can't be used with INPUT based Choices\");\n }\n if (typeof value !== 'string' || !value) {\n throw new TypeError(\"value parameter must be a name of 'value' field in passed objects\");\n }\n // Clear choices if needed\n if (replaceChoices) {\n this.clearChoices();\n }\n if (typeof choicesArrayOrFetcher === 'function') {\n // it's a choices fetcher function\n var fetcher_1 = choicesArrayOrFetcher(this);\n if (typeof Promise === 'function' && fetcher_1 instanceof Promise) {\n // that's a promise\n // eslint-disable-next-line no-promise-executor-return\n return new Promise(function (resolve) {\n return requestAnimationFrame(resolve);\n }).then(function () {\n return _this._handleLoadingState(true);\n }).then(function () {\n return fetcher_1;\n }).then(function (data) {\n return _this.setChoices(data, value, label, replaceChoices);\n }).catch(function (err) {\n if (!_this.config.silent) {\n console.error(err);\n }\n }).then(function () {\n return _this._handleLoadingState(false);\n }).then(function () {\n return _this;\n });\n }\n // function returned something else than promise, let's check if it's an array of choices\n if (!Array.isArray(fetcher_1)) {\n throw new TypeError(\".setChoices first argument function must return either array of choices or Promise, got: \".concat(typeof fetcher_1));\n }\n // recursion with results, it's sync and choices were cleared already\n return this.setChoices(fetcher_1, value, label, false);\n }\n if (!Array.isArray(choicesArrayOrFetcher)) {\n throw new TypeError(\".setChoices must be called either with array of choices with a function resulting into Promise of array of choices\");\n }\n this.containerOuter.removeLoadingState();\n this._startLoading();\n choicesArrayOrFetcher.forEach(function (groupOrChoice) {\n if (groupOrChoice.choices) {\n _this._addGroup({\n id: groupOrChoice.id ? parseInt(\"\".concat(groupOrChoice.id), 10) : null,\n group: groupOrChoice,\n valueKey: value,\n labelKey: label\n });\n } else {\n var choice = groupOrChoice;\n _this._addChoice({\n value: choice[value],\n label: choice[label],\n isSelected: !!choice.selected,\n isDisabled: !!choice.disabled,\n placeholder: !!choice.placeholder,\n customProperties: choice.customProperties\n });\n }\n });\n this._stopLoading();\n return this;\n };\n Choices.prototype.clearChoices = function () {\n this._store.dispatch((0, choices_1.clearChoices)());\n return this;\n };\n Choices.prototype.clearStore = function () {\n this._store.dispatch((0, misc_1.clearAll)());\n return this;\n };\n Choices.prototype.clearInput = function () {\n var shouldSetInputWidth = !this._isSelectOneElement;\n this.input.clear(shouldSetInputWidth);\n if (!this._isTextElement && this._canSearch) {\n this._isSearching = false;\n this._store.dispatch((0, choices_1.activateChoices)(true));\n }\n return this;\n };\n Choices.prototype._render = function () {\n if (this._store.isLoading()) {\n return;\n }\n this._currentState = this._store.state;\n var stateChanged = this._currentState.choices !== this._prevState.choices || this._currentState.groups !== this._prevState.groups || this._currentState.items !== this._prevState.items;\n var shouldRenderChoices = this._isSelectElement;\n var shouldRenderItems = this._currentState.items !== this._prevState.items;\n if (!stateChanged) {\n return;\n }\n if (shouldRenderChoices) {\n this._renderChoices();\n }\n if (shouldRenderItems) {\n this._renderItems();\n }\n this._prevState = this._currentState;\n };\n Choices.prototype._renderChoices = function () {\n var _this = this;\n var _a = this._store,\n activeGroups = _a.activeGroups,\n activeChoices = _a.activeChoices;\n var choiceListFragment = document.createDocumentFragment();\n this.choiceList.clear();\n if (this.config.resetScrollPosition) {\n requestAnimationFrame(function () {\n return _this.choiceList.scrollToTop();\n });\n }\n // If we have grouped options\n if (activeGroups.length >= 1 && !this._isSearching) {\n // If we have a placeholder choice along with groups\n var activePlaceholders = activeChoices.filter(function (activeChoice) {\n return activeChoice.placeholder === true && activeChoice.groupId === -1;\n });\n if (activePlaceholders.length >= 1) {\n choiceListFragment = this._createChoicesFragment(activePlaceholders, choiceListFragment);\n }\n choiceListFragment = this._createGroupsFragment(activeGroups, activeChoices, choiceListFragment);\n } else if (activeChoices.length >= 1) {\n choiceListFragment = this._createChoicesFragment(activeChoices, choiceListFragment);\n }\n // If we have choices to show\n if (choiceListFragment.childNodes && choiceListFragment.childNodes.length > 0) {\n var activeItems = this._store.activeItems;\n var canAddItem = this._canAddItem(activeItems, this.input.value);\n // ...and we can select them\n if (canAddItem.response) {\n // ...append them and highlight the first choice\n this.choiceList.append(choiceListFragment);\n this._highlightChoice();\n } else {\n var notice = this._getTemplate('notice', canAddItem.notice);\n this.choiceList.append(notice);\n }\n } else {\n // Otherwise show a notice\n var dropdownItem = void 0;\n var notice = void 0;\n if (this._isSearching) {\n notice = typeof this.config.noResultsText === 'function' ? this.config.noResultsText() : this.config.noResultsText;\n dropdownItem = this._getTemplate('notice', notice, 'no-results');\n } else {\n notice = typeof this.config.noChoicesText === 'function' ? this.config.noChoicesText() : this.config.noChoicesText;\n dropdownItem = this._getTemplate('notice', notice, 'no-choices');\n }\n this.choiceList.append(dropdownItem);\n }\n };\n Choices.prototype._renderItems = function () {\n var activeItems = this._store.activeItems || [];\n this.itemList.clear();\n // Create a fragment to store our list items\n // (so we don't have to update the DOM for each item)\n var itemListFragment = this._createItemsFragment(activeItems);\n // If we have items to add, append them\n if (itemListFragment.childNodes) {\n this.itemList.append(itemListFragment);\n }\n };\n Choices.prototype._createGroupsFragment = function (groups, choices, fragment) {\n var _this = this;\n if (fragment === void 0) {\n fragment = document.createDocumentFragment();\n }\n var getGroupChoices = function (group) {\n return choices.filter(function (choice) {\n if (_this._isSelectOneElement) {\n return choice.groupId === group.id;\n }\n return choice.groupId === group.id && (_this.config.renderSelectedChoices === 'always' || !choice.selected);\n });\n };\n // If sorting is enabled, filter groups\n if (this.config.shouldSort) {\n groups.sort(this.config.sorter);\n }\n groups.forEach(function (group) {\n var groupChoices = getGroupChoices(group);\n if (groupChoices.length >= 1) {\n var dropdownGroup = _this._getTemplate('choiceGroup', group);\n fragment.appendChild(dropdownGroup);\n _this._createChoicesFragment(groupChoices, fragment, true);\n }\n });\n return fragment;\n };\n Choices.prototype._createChoicesFragment = function (choices, fragment, withinGroup) {\n var _this = this;\n if (fragment === void 0) {\n fragment = document.createDocumentFragment();\n }\n if (withinGroup === void 0) {\n withinGroup = false;\n }\n // Create a fragment to store our list items (so we don't have to update the DOM for each item)\n var _a = this.config,\n renderSelectedChoices = _a.renderSelectedChoices,\n searchResultLimit = _a.searchResultLimit,\n renderChoiceLimit = _a.renderChoiceLimit;\n var filter = this._isSearching ? utils_1.sortByScore : this.config.sorter;\n var appendChoice = function (choice) {\n var shouldRender = renderSelectedChoices === 'auto' ? _this._isSelectOneElement || !choice.selected : true;\n if (shouldRender) {\n var dropdownItem = _this._getTemplate('choice', choice, _this.config.itemSelectText);\n fragment.appendChild(dropdownItem);\n }\n };\n var rendererableChoices = choices;\n if (renderSelectedChoices === 'auto' && !this._isSelectOneElement) {\n rendererableChoices = choices.filter(function (choice) {\n return !choice.selected;\n });\n }\n // Split array into placeholders and \"normal\" choices\n var _b = rendererableChoices.reduce(function (acc, choice) {\n if (choice.placeholder) {\n acc.placeholderChoices.push(choice);\n } else {\n acc.normalChoices.push(choice);\n }\n return acc;\n }, {\n placeholderChoices: [],\n normalChoices: []\n }),\n placeholderChoices = _b.placeholderChoices,\n normalChoices = _b.normalChoices;\n // If sorting is enabled or the user is searching, filter choices\n if (this.config.shouldSort || this._isSearching) {\n normalChoices.sort(filter);\n }\n var choiceLimit = rendererableChoices.length;\n // Prepend placeholeder\n var sortedChoices = this._isSelectOneElement ? __spreadArray(__spreadArray([], placeholderChoices, true), normalChoices, true) : normalChoices;\n if (this._isSearching) {\n choiceLimit = searchResultLimit;\n } else if (renderChoiceLimit && renderChoiceLimit > 0 && !withinGroup) {\n choiceLimit = renderChoiceLimit;\n }\n // Add each choice to dropdown within range\n for (var i = 0; i < choiceLimit; i += 1) {\n if (sortedChoices[i]) {\n appendChoice(sortedChoices[i]);\n }\n }\n return fragment;\n };\n Choices.prototype._createItemsFragment = function (items, fragment) {\n var _this = this;\n if (fragment === void 0) {\n fragment = document.createDocumentFragment();\n }\n // Create fragment to add elements to\n var _a = this.config,\n shouldSortItems = _a.shouldSortItems,\n sorter = _a.sorter,\n removeItemButton = _a.removeItemButton;\n // If sorting is enabled, filter items\n if (shouldSortItems && !this._isSelectOneElement) {\n items.sort(sorter);\n }\n if (this._isTextElement) {\n // Update the value of the hidden input\n this.passedElement.value = items.map(function (_a) {\n var value = _a.value;\n return value;\n }).join(this.config.delimiter);\n } else {\n // Update the options of the hidden input\n this.passedElement.options = items;\n }\n var addItemToFragment = function (item) {\n // Create new list element\n var listItem = _this._getTemplate('item', item, removeItemButton);\n // Append it to list\n fragment.appendChild(listItem);\n };\n // Add each list item to list\n items.forEach(addItemToFragment);\n return fragment;\n };\n Choices.prototype._triggerChange = function (value) {\n if (value === undefined || value === null) {\n return;\n }\n this.passedElement.triggerEvent(constants_1.EVENTS.change, {\n value: value\n });\n };\n Choices.prototype._selectPlaceholderChoice = function (placeholderChoice) {\n this._addItem({\n value: placeholderChoice.value,\n label: placeholderChoice.label,\n choiceId: placeholderChoice.id,\n groupId: placeholderChoice.groupId,\n placeholder: placeholderChoice.placeholder\n });\n this._triggerChange(placeholderChoice.value);\n };\n Choices.prototype._handleButtonAction = function (activeItems, element) {\n if (!activeItems || !element || !this.config.removeItems || !this.config.removeItemButton) {\n return;\n }\n var itemId = element.parentNode && element.parentNode.dataset.id;\n var itemToRemove = itemId && activeItems.find(function (item) {\n return item.id === parseInt(itemId, 10);\n });\n if (!itemToRemove) {\n return;\n }\n // Remove item associated with button\n this._removeItem(itemToRemove);\n this._triggerChange(itemToRemove.value);\n if (this._isSelectOneElement && this._store.placeholderChoice) {\n this._selectPlaceholderChoice(this._store.placeholderChoice);\n }\n };\n Choices.prototype._handleItemAction = function (activeItems, element, hasShiftKey) {\n var _this = this;\n if (hasShiftKey === void 0) {\n hasShiftKey = false;\n }\n if (!activeItems || !element || !this.config.removeItems || this._isSelectOneElement) {\n return;\n }\n var passedId = element.dataset.id;\n // We only want to select one item with a click\n // so we deselect any items that aren't the target\n // unless shift is being pressed\n activeItems.forEach(function (item) {\n if (item.id === parseInt(\"\".concat(passedId), 10) && !item.highlighted) {\n _this.highlightItem(item);\n } else if (!hasShiftKey && item.highlighted) {\n _this.unhighlightItem(item);\n }\n });\n // Focus input as without focus, a user cannot do anything with a\n // highlighted item\n this.input.focus();\n };\n Choices.prototype._handleChoiceAction = function (activeItems, element) {\n if (!activeItems || !element) {\n return;\n }\n // If we are clicking on an option\n var id = element.dataset.id;\n var choice = id && this._store.getChoiceById(id);\n if (!choice) {\n return;\n }\n var passedKeyCode = activeItems[0] && activeItems[0].keyCode ? activeItems[0].keyCode : undefined;\n var hasActiveDropdown = this.dropdown.isActive;\n // Update choice keyCode\n choice.keyCode = passedKeyCode;\n this.passedElement.triggerEvent(constants_1.EVENTS.choice, {\n choice: choice\n });\n if (!choice.selected && !choice.disabled) {\n var canAddItem = this._canAddItem(activeItems, choice.value);\n if (canAddItem.response) {\n this._addItem({\n value: choice.value,\n label: choice.label,\n choiceId: choice.id,\n groupId: choice.groupId,\n customProperties: choice.customProperties,\n placeholder: choice.placeholder,\n keyCode: choice.keyCode\n });\n this._triggerChange(choice.value);\n }\n }\n this.clearInput();\n // We want to close the dropdown if we are dealing with a single select box\n if (hasActiveDropdown && this._isSelectOneElement) {\n this.hideDropdown(true);\n this.containerOuter.focus();\n }\n };\n Choices.prototype._handleBackspace = function (activeItems) {\n if (!this.config.removeItems || !activeItems) {\n return;\n }\n var lastItem = activeItems[activeItems.length - 1];\n var hasHighlightedItems = activeItems.some(function (item) {\n return item.highlighted;\n });\n // If editing the last item is allowed and there are not other selected items,\n // we can edit the item value. Otherwise if we can remove items, remove all selected items\n if (this.config.editItems && !hasHighlightedItems && lastItem) {\n this.input.value = lastItem.value;\n this.input.setWidth();\n this._removeItem(lastItem);\n this._triggerChange(lastItem.value);\n } else {\n if (!hasHighlightedItems) {\n // Highlight last item if none already highlighted\n this.highlightItem(lastItem, false);\n }\n this.removeHighlightedItems(true);\n }\n };\n Choices.prototype._startLoading = function () {\n this._store.dispatch((0, misc_1.setIsLoading)(true));\n };\n Choices.prototype._stopLoading = function () {\n this._store.dispatch((0, misc_1.setIsLoading)(false));\n };\n Choices.prototype._handleLoadingState = function (setLoading) {\n if (setLoading === void 0) {\n setLoading = true;\n }\n var placeholderItem = this.itemList.getChild(\".\".concat(this.config.classNames.placeholder));\n if (setLoading) {\n this.disable();\n this.containerOuter.addLoadingState();\n if (this._isSelectOneElement) {\n if (!placeholderItem) {\n placeholderItem = this._getTemplate('placeholder', this.config.loadingText);\n if (placeholderItem) {\n this.itemList.append(placeholderItem);\n }\n } else {\n placeholderItem.innerHTML = this.config.loadingText;\n }\n } else {\n this.input.placeholder = this.config.loadingText;\n }\n } else {\n this.enable();\n this.containerOuter.removeLoadingState();\n if (this._isSelectOneElement) {\n if (placeholderItem) {\n placeholderItem.innerHTML = this._placeholderValue || '';\n }\n } else {\n this.input.placeholder = this._placeholderValue || '';\n }\n }\n };\n Choices.prototype._handleSearch = function (value) {\n if (!this.input.isFocussed) {\n return;\n }\n var choices = this._store.choices;\n var _a = this.config,\n searchFloor = _a.searchFloor,\n searchChoices = _a.searchChoices;\n var hasUnactiveChoices = choices.some(function (option) {\n return !option.active;\n });\n // Check that we have a value to search and the input was an alphanumeric character\n if (value !== null && typeof value !== 'undefined' && value.length >= searchFloor) {\n var resultCount = searchChoices ? this._searchChoices(value) : 0;\n // Trigger search event\n this.passedElement.triggerEvent(constants_1.EVENTS.search, {\n value: value,\n resultCount: resultCount\n });\n } else if (hasUnactiveChoices) {\n // Otherwise reset choices to active\n this._isSearching = false;\n this._store.dispatch((0, choices_1.activateChoices)(true));\n }\n };\n Choices.prototype._canAddItem = function (activeItems, value) {\n var canAddItem = true;\n var notice = typeof this.config.addItemText === 'function' ? this.config.addItemText(value) : this.config.addItemText;\n if (!this._isSelectOneElement) {\n var isDuplicateValue = (0, utils_1.existsInArray)(activeItems, value);\n if (this.config.maxItemCount > 0 && this.config.maxItemCount <= activeItems.length) {\n // If there is a max entry limit and we have reached that limit\n // don't update\n canAddItem = false;\n notice = typeof this.config.maxItemText === 'function' ? this.config.maxItemText(this.config.maxItemCount) : this.config.maxItemText;\n }\n if (!this.config.duplicateItemsAllowed && isDuplicateValue && canAddItem) {\n canAddItem = false;\n notice = typeof this.config.uniqueItemText === 'function' ? this.config.uniqueItemText(value) : this.config.uniqueItemText;\n }\n if (this._isTextElement && this.config.addItems && canAddItem && typeof this.config.addItemFilter === 'function' && !this.config.addItemFilter(value)) {\n canAddItem = false;\n notice = typeof this.config.customAddItemText === 'function' ? this.config.customAddItemText(value) : this.config.customAddItemText;\n }\n }\n return {\n response: canAddItem,\n notice: notice\n };\n };\n Choices.prototype._searchChoices = function (value) {\n var newValue = typeof value === 'string' ? value.trim() : value;\n var currentValue = typeof this._currentValue === 'string' ? this._currentValue.trim() : this._currentValue;\n if (newValue.length < 1 && newValue === \"\".concat(currentValue, \" \")) {\n return 0;\n }\n // If new value matches the desired length and is not the same as the current value with a space\n var haystack = this._store.searchableChoices;\n var needle = newValue;\n var options = Object.assign(this.config.fuseOptions, {\n keys: __spreadArray([], this.config.searchFields, true),\n includeMatches: true\n });\n var fuse = new fuse_js_1.default(haystack, options);\n var results = fuse.search(needle); // see https://github.com/krisk/Fuse/issues/303\n this._currentValue = newValue;\n this._highlightPosition = 0;\n this._isSearching = true;\n this._store.dispatch((0, choices_1.filterChoices)(results));\n return results.length;\n };\n Choices.prototype._addEventListeners = function () {\n var documentElement = document.documentElement;\n // capture events - can cancel event processing or propagation\n documentElement.addEventListener('touchend', this._onTouchEnd, true);\n this.containerOuter.element.addEventListener('keydown', this._onKeyDown, true);\n this.containerOuter.element.addEventListener('mousedown', this._onMouseDown, true);\n // passive events - doesn't call `preventDefault` or `stopPropagation`\n documentElement.addEventListener('click', this._onClick, {\n passive: true\n });\n documentElement.addEventListener('touchmove', this._onTouchMove, {\n passive: true\n });\n this.dropdown.element.addEventListener('mouseover', this._onMouseOver, {\n passive: true\n });\n if (this._isSelectOneElement) {\n this.containerOuter.element.addEventListener('focus', this._onFocus, {\n passive: true\n });\n this.containerOuter.element.addEventListener('blur', this._onBlur, {\n passive: true\n });\n }\n this.input.element.addEventListener('keyup', this._onKeyUp, {\n passive: true\n });\n this.input.element.addEventListener('focus', this._onFocus, {\n passive: true\n });\n this.input.element.addEventListener('blur', this._onBlur, {\n passive: true\n });\n if (this.input.element.form) {\n this.input.element.form.addEventListener('reset', this._onFormReset, {\n passive: true\n });\n }\n this.input.addEventListeners();\n };\n Choices.prototype._removeEventListeners = function () {\n var documentElement = document.documentElement;\n documentElement.removeEventListener('touchend', this._onTouchEnd, true);\n this.containerOuter.element.removeEventListener('keydown', this._onKeyDown, true);\n this.containerOuter.element.removeEventListener('mousedown', this._onMouseDown, true);\n documentElement.removeEventListener('click', this._onClick);\n documentElement.removeEventListener('touchmove', this._onTouchMove);\n this.dropdown.element.removeEventListener('mouseover', this._onMouseOver);\n if (this._isSelectOneElement) {\n this.containerOuter.element.removeEventListener('focus', this._onFocus);\n this.containerOuter.element.removeEventListener('blur', this._onBlur);\n }\n this.input.element.removeEventListener('keyup', this._onKeyUp);\n this.input.element.removeEventListener('focus', this._onFocus);\n this.input.element.removeEventListener('blur', this._onBlur);\n if (this.input.element.form) {\n this.input.element.form.removeEventListener('reset', this._onFormReset);\n }\n this.input.removeEventListeners();\n };\n Choices.prototype._onKeyDown = function (event) {\n var keyCode = event.keyCode;\n var activeItems = this._store.activeItems;\n var hasFocusedInput = this.input.isFocussed;\n var hasActiveDropdown = this.dropdown.isActive;\n var hasItems = this.itemList.hasChildren();\n var keyString = String.fromCharCode(keyCode);\n // eslint-disable-next-line no-control-regex\n var wasPrintableChar = /[^\\x00-\\x1F]/.test(keyString);\n var BACK_KEY = constants_1.KEY_CODES.BACK_KEY,\n DELETE_KEY = constants_1.KEY_CODES.DELETE_KEY,\n ENTER_KEY = constants_1.KEY_CODES.ENTER_KEY,\n A_KEY = constants_1.KEY_CODES.A_KEY,\n ESC_KEY = constants_1.KEY_CODES.ESC_KEY,\n UP_KEY = constants_1.KEY_CODES.UP_KEY,\n DOWN_KEY = constants_1.KEY_CODES.DOWN_KEY,\n PAGE_UP_KEY = constants_1.KEY_CODES.PAGE_UP_KEY,\n PAGE_DOWN_KEY = constants_1.KEY_CODES.PAGE_DOWN_KEY;\n if (!this._isTextElement && !hasActiveDropdown && wasPrintableChar) {\n this.showDropdown();\n if (!this.input.isFocussed) {\n /*\n We update the input value with the pressed key as\n the input was not focussed at the time of key press\n therefore does not have the value of the key.\n */\n this.input.value += event.key.toLowerCase();\n }\n }\n switch (keyCode) {\n case A_KEY:\n return this._onSelectKey(event, hasItems);\n case ENTER_KEY:\n return this._onEnterKey(event, activeItems, hasActiveDropdown);\n case ESC_KEY:\n return this._onEscapeKey(hasActiveDropdown);\n case UP_KEY:\n case PAGE_UP_KEY:\n case DOWN_KEY:\n case PAGE_DOWN_KEY:\n return this._onDirectionKey(event, hasActiveDropdown);\n case DELETE_KEY:\n case BACK_KEY:\n return this._onDeleteKey(event, activeItems, hasFocusedInput);\n default:\n }\n };\n Choices.prototype._onKeyUp = function (_a) {\n var target = _a.target,\n keyCode = _a.keyCode;\n var value = this.input.value;\n var activeItems = this._store.activeItems;\n var canAddItem = this._canAddItem(activeItems, value);\n var backKey = constants_1.KEY_CODES.BACK_KEY,\n deleteKey = constants_1.KEY_CODES.DELETE_KEY;\n // We are typing into a text input and have a value, we want to show a dropdown\n // notice. Otherwise hide the dropdown\n if (this._isTextElement) {\n var canShowDropdownNotice = canAddItem.notice && value;\n if (canShowDropdownNotice) {\n var dropdownItem = this._getTemplate('notice', canAddItem.notice);\n this.dropdown.element.innerHTML = dropdownItem.outerHTML;\n this.showDropdown(true);\n } else {\n this.hideDropdown(true);\n }\n } else {\n var wasRemovalKeyCode = keyCode === backKey || keyCode === deleteKey;\n var userHasRemovedValue = wasRemovalKeyCode && target && !target.value;\n var canReactivateChoices = !this._isTextElement && this._isSearching;\n var canSearch = this._canSearch && canAddItem.response;\n if (userHasRemovedValue && canReactivateChoices) {\n this._isSearching = false;\n this._store.dispatch((0, choices_1.activateChoices)(true));\n } else if (canSearch) {\n this._handleSearch(this.input.rawValue);\n }\n }\n this._canSearch = this.config.searchEnabled;\n };\n Choices.prototype._onSelectKey = function (event, hasItems) {\n var ctrlKey = event.ctrlKey,\n metaKey = event.metaKey;\n var hasCtrlDownKeyPressed = ctrlKey || metaKey;\n // If CTRL + A or CMD + A have been pressed and there are items to select\n if (hasCtrlDownKeyPressed && hasItems) {\n this._canSearch = false;\n var shouldHightlightAll = this.config.removeItems && !this.input.value && this.input.element === document.activeElement;\n if (shouldHightlightAll) {\n this.highlightAll();\n }\n }\n };\n Choices.prototype._onEnterKey = function (event, activeItems, hasActiveDropdown) {\n var target = event.target;\n var enterKey = constants_1.KEY_CODES.ENTER_KEY;\n var targetWasButton = target && target.hasAttribute('data-button');\n if (this._isTextElement && target && target.value) {\n var value = this.input.value;\n var canAddItem = this._canAddItem(activeItems, value);\n if (canAddItem.response) {\n this.hideDropdown(true);\n this._addItem({\n value: value\n });\n this._triggerChange(value);\n this.clearInput();\n }\n }\n if (targetWasButton) {\n this._handleButtonAction(activeItems, target);\n event.preventDefault();\n }\n if (hasActiveDropdown) {\n var highlightedChoice = this.dropdown.getChild(\".\".concat(this.config.classNames.highlightedState));\n if (highlightedChoice) {\n // add enter keyCode value\n if (activeItems[0]) {\n activeItems[0].keyCode = enterKey; // eslint-disable-line no-param-reassign\n }\n\n this._handleChoiceAction(activeItems, highlightedChoice);\n }\n event.preventDefault();\n } else if (this._isSelectOneElement) {\n this.showDropdown();\n event.preventDefault();\n }\n };\n Choices.prototype._onEscapeKey = function (hasActiveDropdown) {\n if (hasActiveDropdown) {\n this.hideDropdown(true);\n this.containerOuter.focus();\n }\n };\n Choices.prototype._onDirectionKey = function (event, hasActiveDropdown) {\n var keyCode = event.keyCode,\n metaKey = event.metaKey;\n var downKey = constants_1.KEY_CODES.DOWN_KEY,\n pageUpKey = constants_1.KEY_CODES.PAGE_UP_KEY,\n pageDownKey = constants_1.KEY_CODES.PAGE_DOWN_KEY;\n // If up or down key is pressed, traverse through options\n if (hasActiveDropdown || this._isSelectOneElement) {\n this.showDropdown();\n this._canSearch = false;\n var directionInt = keyCode === downKey || keyCode === pageDownKey ? 1 : -1;\n var skipKey = metaKey || keyCode === pageDownKey || keyCode === pageUpKey;\n var selectableChoiceIdentifier = '[data-choice-selectable]';\n var nextEl = void 0;\n if (skipKey) {\n if (directionInt > 0) {\n nextEl = this.dropdown.element.querySelector(\"\".concat(selectableChoiceIdentifier, \":last-of-type\"));\n } else {\n nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);\n }\n } else {\n var currentEl = this.dropdown.element.querySelector(\".\".concat(this.config.classNames.highlightedState));\n if (currentEl) {\n nextEl = (0, utils_1.getAdjacentEl)(currentEl, selectableChoiceIdentifier, directionInt);\n } else {\n nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);\n }\n }\n if (nextEl) {\n // We prevent default to stop the cursor moving\n // when pressing the arrow\n if (!(0, utils_1.isScrolledIntoView)(nextEl, this.choiceList.element, directionInt)) {\n this.choiceList.scrollToChildElement(nextEl, directionInt);\n }\n this._highlightChoice(nextEl);\n }\n // Prevent default to maintain cursor position whilst\n // traversing dropdown options\n event.preventDefault();\n }\n };\n Choices.prototype._onDeleteKey = function (event, activeItems, hasFocusedInput) {\n var target = event.target;\n // If backspace or delete key is pressed and the input has no value\n if (!this._isSelectOneElement && !target.value && hasFocusedInput) {\n this._handleBackspace(activeItems);\n event.preventDefault();\n }\n };\n Choices.prototype._onTouchMove = function () {\n if (this._wasTap) {\n this._wasTap = false;\n }\n };\n Choices.prototype._onTouchEnd = function (event) {\n var target = (event || event.touches[0]).target;\n var touchWasWithinContainer = this._wasTap && this.containerOuter.element.contains(target);\n if (touchWasWithinContainer) {\n var containerWasExactTarget = target === this.containerOuter.element || target === this.containerInner.element;\n if (containerWasExactTarget) {\n if (this._isTextElement) {\n this.input.focus();\n } else if (this._isSelectMultipleElement) {\n this.showDropdown();\n }\n }\n // Prevents focus event firing\n event.stopPropagation();\n }\n this._wasTap = true;\n };\n /**\n * Handles mousedown event in capture mode for containetOuter.element\n */\n Choices.prototype._onMouseDown = function (event) {\n var target = event.target;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n // If we have our mouse down on the scrollbar and are on IE11...\n if (IS_IE11 && this.choiceList.element.contains(target)) {\n // check if click was on a scrollbar area\n var firstChoice = this.choiceList.element.firstElementChild;\n var isOnScrollbar = this._direction === 'ltr' ? event.offsetX >= firstChoice.offsetWidth : event.offsetX < firstChoice.offsetLeft;\n this._isScrollingOnIe = isOnScrollbar;\n }\n if (target === this.input.element) {\n return;\n }\n var item = target.closest('[data-button],[data-item],[data-choice]');\n if (item instanceof HTMLElement) {\n var hasShiftKey = event.shiftKey;\n var activeItems = this._store.activeItems;\n var dataset = item.dataset;\n if ('button' in dataset) {\n this._handleButtonAction(activeItems, item);\n } else if ('item' in dataset) {\n this._handleItemAction(activeItems, item, hasShiftKey);\n } else if ('choice' in dataset) {\n this._handleChoiceAction(activeItems, item);\n }\n }\n event.preventDefault();\n };\n /**\n * Handles mouseover event over this.dropdown\n * @param {MouseEvent} event\n */\n Choices.prototype._onMouseOver = function (_a) {\n var target = _a.target;\n if (target instanceof HTMLElement && 'choice' in target.dataset) {\n this._highlightChoice(target);\n }\n };\n Choices.prototype._onClick = function (_a) {\n var target = _a.target;\n var clickWasWithinContainer = this.containerOuter.element.contains(target);\n if (clickWasWithinContainer) {\n if (!this.dropdown.isActive && !this.containerOuter.isDisabled) {\n if (this._isTextElement) {\n if (document.activeElement !== this.input.element) {\n this.input.focus();\n }\n } else {\n this.showDropdown();\n this.containerOuter.focus();\n }\n } else if (this._isSelectOneElement && target !== this.input.element && !this.dropdown.element.contains(target)) {\n this.hideDropdown();\n }\n } else {\n var hasHighlightedItems = this._store.highlightedActiveItems.length > 0;\n if (hasHighlightedItems) {\n this.unhighlightAll();\n }\n this.containerOuter.removeFocusState();\n this.hideDropdown(true);\n }\n };\n Choices.prototype._onFocus = function (_a) {\n var _b;\n var _this = this;\n var target = _a.target;\n var focusWasWithinContainer = target && this.containerOuter.element.contains(target);\n if (!focusWasWithinContainer) {\n return;\n }\n var focusActions = (_b = {}, _b[constants_1.TEXT_TYPE] = function () {\n if (target === _this.input.element) {\n _this.containerOuter.addFocusState();\n }\n }, _b[constants_1.SELECT_ONE_TYPE] = function () {\n _this.containerOuter.addFocusState();\n if (target === _this.input.element) {\n _this.showDropdown(true);\n }\n }, _b[constants_1.SELECT_MULTIPLE_TYPE] = function () {\n if (target === _this.input.element) {\n _this.showDropdown(true);\n // If element is a select box, the focused element is the container and the dropdown\n // isn't already open, focus and show dropdown\n _this.containerOuter.addFocusState();\n }\n }, _b);\n focusActions[this.passedElement.element.type]();\n };\n Choices.prototype._onBlur = function (_a) {\n var _b;\n var _this = this;\n var target = _a.target;\n var blurWasWithinContainer = target && this.containerOuter.element.contains(target);\n if (blurWasWithinContainer && !this._isScrollingOnIe) {\n var activeItems = this._store.activeItems;\n var hasHighlightedItems_1 = activeItems.some(function (item) {\n return item.highlighted;\n });\n var blurActions = (_b = {}, _b[constants_1.TEXT_TYPE] = function () {\n if (target === _this.input.element) {\n _this.containerOuter.removeFocusState();\n if (hasHighlightedItems_1) {\n _this.unhighlightAll();\n }\n _this.hideDropdown(true);\n }\n }, _b[constants_1.SELECT_ONE_TYPE] = function () {\n _this.containerOuter.removeFocusState();\n if (target === _this.input.element || target === _this.containerOuter.element && !_this._canSearch) {\n _this.hideDropdown(true);\n }\n }, _b[constants_1.SELECT_MULTIPLE_TYPE] = function () {\n if (target === _this.input.element) {\n _this.containerOuter.removeFocusState();\n _this.hideDropdown(true);\n if (hasHighlightedItems_1) {\n _this.unhighlightAll();\n }\n }\n }, _b);\n blurActions[this.passedElement.element.type]();\n } else {\n // On IE11, clicking the scollbar blurs our input and thus\n // closes the dropdown. To stop this, we refocus our input\n // if we know we are on IE *and* are scrolling.\n this._isScrollingOnIe = false;\n this.input.element.focus();\n }\n };\n Choices.prototype._onFormReset = function () {\n this._store.dispatch((0, misc_1.resetTo)(this._initialState));\n };\n Choices.prototype._highlightChoice = function (el) {\n var _this = this;\n if (el === void 0) {\n el = null;\n }\n var choices = Array.from(this.dropdown.element.querySelectorAll('[data-choice-selectable]'));\n if (!choices.length) {\n return;\n }\n var passedEl = el;\n var highlightedChoices = Array.from(this.dropdown.element.querySelectorAll(\".\".concat(this.config.classNames.highlightedState)));\n // Remove any highlighted choices\n highlightedChoices.forEach(function (choice) {\n choice.classList.remove(_this.config.classNames.highlightedState);\n choice.setAttribute('aria-selected', 'false');\n });\n if (passedEl) {\n this._highlightPosition = choices.indexOf(passedEl);\n } else {\n // Highlight choice based on last known highlight location\n if (choices.length > this._highlightPosition) {\n // If we have an option to highlight\n passedEl = choices[this._highlightPosition];\n } else {\n // Otherwise highlight the option before\n passedEl = choices[choices.length - 1];\n }\n if (!passedEl) {\n passedEl = choices[0];\n }\n }\n passedEl.classList.add(this.config.classNames.highlightedState);\n passedEl.setAttribute('aria-selected', 'true');\n this.passedElement.triggerEvent(constants_1.EVENTS.highlightChoice, {\n el: passedEl\n });\n if (this.dropdown.isActive) {\n // IE11 ignores aria-label and blocks virtual keyboard\n // if aria-activedescendant is set without a dropdown\n this.input.setActiveDescendant(passedEl.id);\n this.containerOuter.setActiveDescendant(passedEl.id);\n }\n };\n Choices.prototype._addItem = function (_a) {\n var value = _a.value,\n _b = _a.label,\n label = _b === void 0 ? null : _b,\n _c = _a.choiceId,\n choiceId = _c === void 0 ? -1 : _c,\n _d = _a.groupId,\n groupId = _d === void 0 ? -1 : _d,\n _e = _a.customProperties,\n customProperties = _e === void 0 ? {} : _e,\n _f = _a.placeholder,\n placeholder = _f === void 0 ? false : _f,\n _g = _a.keyCode,\n keyCode = _g === void 0 ? -1 : _g;\n var passedValue = typeof value === 'string' ? value.trim() : value;\n var items = this._store.items;\n var passedLabel = label || passedValue;\n var passedOptionId = choiceId || -1;\n var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n var id = items ? items.length + 1 : 1;\n // If a prepended value has been passed, prepend it\n if (this.config.prependValue) {\n passedValue = this.config.prependValue + passedValue.toString();\n }\n // If an appended value has been passed, append it\n if (this.config.appendValue) {\n passedValue += this.config.appendValue.toString();\n }\n this._store.dispatch((0, items_1.addItem)({\n value: passedValue,\n label: passedLabel,\n id: id,\n choiceId: passedOptionId,\n groupId: groupId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n }));\n if (this._isSelectOneElement) {\n this.removeActiveItems(id);\n }\n // Trigger change event\n this.passedElement.triggerEvent(constants_1.EVENTS.addItem, {\n id: id,\n value: passedValue,\n label: passedLabel,\n customProperties: customProperties,\n groupValue: group && group.value ? group.value : null,\n keyCode: keyCode\n });\n };\n Choices.prototype._removeItem = function (item) {\n var id = item.id,\n value = item.value,\n label = item.label,\n customProperties = item.customProperties,\n choiceId = item.choiceId,\n groupId = item.groupId;\n var group = groupId && groupId >= 0 ? this._store.getGroupById(groupId) : null;\n if (!id || !choiceId) {\n return;\n }\n this._store.dispatch((0, items_1.removeItem)(id, choiceId));\n this.passedElement.triggerEvent(constants_1.EVENTS.removeItem, {\n id: id,\n value: value,\n label: label,\n customProperties: customProperties,\n groupValue: group && group.value ? group.value : null\n });\n };\n Choices.prototype._addChoice = function (_a) {\n var value = _a.value,\n _b = _a.label,\n label = _b === void 0 ? null : _b,\n _c = _a.isSelected,\n isSelected = _c === void 0 ? false : _c,\n _d = _a.isDisabled,\n isDisabled = _d === void 0 ? false : _d,\n _e = _a.groupId,\n groupId = _e === void 0 ? -1 : _e,\n _f = _a.customProperties,\n customProperties = _f === void 0 ? {} : _f,\n _g = _a.placeholder,\n placeholder = _g === void 0 ? false : _g,\n _h = _a.keyCode,\n keyCode = _h === void 0 ? -1 : _h;\n if (typeof value === 'undefined' || value === null) {\n return;\n }\n // Generate unique id\n var choices = this._store.choices;\n var choiceLabel = label || value;\n var choiceId = choices ? choices.length + 1 : 1;\n var choiceElementId = \"\".concat(this._baseId, \"-\").concat(this._idNames.itemChoice, \"-\").concat(choiceId);\n this._store.dispatch((0, choices_1.addChoice)({\n id: choiceId,\n groupId: groupId,\n elementId: choiceElementId,\n value: value,\n label: choiceLabel,\n disabled: isDisabled,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n }));\n if (isSelected) {\n this._addItem({\n value: value,\n label: choiceLabel,\n choiceId: choiceId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n });\n }\n };\n Choices.prototype._addGroup = function (_a) {\n var _this = this;\n var group = _a.group,\n id = _a.id,\n _b = _a.valueKey,\n valueKey = _b === void 0 ? 'value' : _b,\n _c = _a.labelKey,\n labelKey = _c === void 0 ? 'label' : _c;\n var groupChoices = (0, utils_1.isType)('Object', group) ? group.choices : Array.from(group.getElementsByTagName('OPTION'));\n var groupId = id || Math.floor(new Date().valueOf() * Math.random());\n var isDisabled = group.disabled ? group.disabled : false;\n if (groupChoices) {\n this._store.dispatch((0, groups_1.addGroup)({\n value: group.label,\n id: groupId,\n active: true,\n disabled: isDisabled\n }));\n var addGroupChoices = function (choice) {\n var isOptDisabled = choice.disabled || choice.parentNode && choice.parentNode.disabled;\n _this._addChoice({\n value: choice[valueKey],\n label: (0, utils_1.isType)('Object', choice) ? choice[labelKey] : choice.innerHTML,\n isSelected: choice.selected,\n isDisabled: isOptDisabled,\n groupId: groupId,\n customProperties: choice.customProperties,\n placeholder: choice.placeholder\n });\n };\n groupChoices.forEach(addGroupChoices);\n } else {\n this._store.dispatch((0, groups_1.addGroup)({\n value: group.label,\n id: group.id,\n active: false,\n disabled: group.disabled\n }));\n }\n };\n Choices.prototype._getTemplate = function (template) {\n var _a;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return (_a = this._templates[template]).call.apply(_a, __spreadArray([this, this.config], args, false));\n };\n Choices.prototype._createTemplates = function () {\n var callbackOnCreateTemplates = this.config.callbackOnCreateTemplates;\n var userTemplates = {};\n if (callbackOnCreateTemplates && typeof callbackOnCreateTemplates === 'function') {\n userTemplates = callbackOnCreateTemplates.call(this, utils_1.strToEl);\n }\n this._templates = (0, deepmerge_1.default)(templates_1.default, userTemplates);\n };\n Choices.prototype._createElements = function () {\n this.containerOuter = new components_1.Container({\n element: this._getTemplate('containerOuter', this._direction, this._isSelectElement, this._isSelectOneElement, this.config.searchEnabled, this.passedElement.element.type, this.config.labelId),\n classNames: this.config.classNames,\n type: this.passedElement.element.type,\n position: this.config.position\n });\n this.containerInner = new components_1.Container({\n element: this._getTemplate('containerInner'),\n classNames: this.config.classNames,\n type: this.passedElement.element.type,\n position: this.config.position\n });\n this.input = new components_1.Input({\n element: this._getTemplate('input', this._placeholderValue),\n classNames: this.config.classNames,\n type: this.passedElement.element.type,\n preventPaste: !this.config.paste\n });\n this.choiceList = new components_1.List({\n element: this._getTemplate('choiceList', this._isSelectOneElement)\n });\n this.itemList = new components_1.List({\n element: this._getTemplate('itemList', this._isSelectOneElement)\n });\n this.dropdown = new components_1.Dropdown({\n element: this._getTemplate('dropdown'),\n classNames: this.config.classNames,\n type: this.passedElement.element.type\n });\n };\n Choices.prototype._createStructure = function () {\n // Hide original element\n this.passedElement.conceal();\n // Wrap input in container preserving DOM ordering\n this.containerInner.wrap(this.passedElement.element);\n // Wrapper inner container with outer container\n this.containerOuter.wrap(this.containerInner.element);\n if (this._isSelectOneElement) {\n this.input.placeholder = this.config.searchPlaceholderValue || '';\n } else if (this._placeholderValue) {\n this.input.placeholder = this._placeholderValue;\n this.input.setWidth();\n }\n this.containerOuter.element.appendChild(this.containerInner.element);\n this.containerOuter.element.appendChild(this.dropdown.element);\n this.containerInner.element.appendChild(this.itemList.element);\n if (!this._isTextElement) {\n this.dropdown.element.appendChild(this.choiceList.element);\n }\n if (!this._isSelectOneElement) {\n this.containerInner.element.appendChild(this.input.element);\n } else if (this.config.searchEnabled) {\n this.dropdown.element.insertBefore(this.input.element, this.dropdown.element.firstChild);\n }\n if (this._isSelectElement) {\n this._highlightPosition = 0;\n this._isSearching = false;\n this._startLoading();\n if (this._presetGroups.length) {\n this._addPredefinedGroups(this._presetGroups);\n } else {\n this._addPredefinedChoices(this._presetChoices);\n }\n this._stopLoading();\n }\n if (this._isTextElement) {\n this._addPredefinedItems(this._presetItems);\n }\n };\n Choices.prototype._addPredefinedGroups = function (groups) {\n var _this = this;\n // If we have a placeholder option\n var placeholderChoice = this.passedElement.placeholderOption;\n if (placeholderChoice && placeholderChoice.parentNode && placeholderChoice.parentNode.tagName === 'SELECT') {\n this._addChoice({\n value: placeholderChoice.value,\n label: placeholderChoice.innerHTML,\n isSelected: placeholderChoice.selected,\n isDisabled: placeholderChoice.disabled,\n placeholder: true\n });\n }\n groups.forEach(function (group) {\n return _this._addGroup({\n group: group,\n id: group.id || null\n });\n });\n };\n Choices.prototype._addPredefinedChoices = function (choices) {\n var _this = this;\n // If sorting is enabled or the user is searching, filter choices\n if (this.config.shouldSort) {\n choices.sort(this.config.sorter);\n }\n var hasSelectedChoice = choices.some(function (choice) {\n return choice.selected;\n });\n var firstEnabledChoiceIndex = choices.findIndex(function (choice) {\n return choice.disabled === undefined || !choice.disabled;\n });\n choices.forEach(function (choice, index) {\n var _a = choice.value,\n value = _a === void 0 ? '' : _a,\n label = choice.label,\n customProperties = choice.customProperties,\n placeholder = choice.placeholder;\n if (_this._isSelectElement) {\n // If the choice is actually a group\n if (choice.choices) {\n _this._addGroup({\n group: choice,\n id: choice.id || null\n });\n } else {\n /**\n * If there is a selected choice already or the choice is not the first in\n * the array, add each choice normally.\n *\n * Otherwise we pre-select the first enabled choice in the array (\"select-one\" only)\n */\n var shouldPreselect = _this._isSelectOneElement && !hasSelectedChoice && index === firstEnabledChoiceIndex;\n var isSelected = shouldPreselect ? true : choice.selected;\n var isDisabled = choice.disabled;\n _this._addChoice({\n value: value,\n label: label,\n isSelected: !!isSelected,\n isDisabled: !!isDisabled,\n placeholder: !!placeholder,\n customProperties: customProperties\n });\n }\n } else {\n _this._addChoice({\n value: value,\n label: label,\n isSelected: !!choice.selected,\n isDisabled: !!choice.disabled,\n placeholder: !!choice.placeholder,\n customProperties: customProperties\n });\n }\n });\n };\n Choices.prototype._addPredefinedItems = function (items) {\n var _this = this;\n items.forEach(function (item) {\n if (typeof item === 'object' && item.value) {\n _this._addItem({\n value: item.value,\n label: item.label,\n choiceId: item.id,\n customProperties: item.customProperties,\n placeholder: item.placeholder\n });\n }\n if (typeof item === 'string') {\n _this._addItem({\n value: item\n });\n }\n });\n };\n Choices.prototype._setChoiceOrItem = function (item) {\n var _this = this;\n var itemType = (0, utils_1.getType)(item).toLowerCase();\n var handleType = {\n object: function () {\n if (!item.value) {\n return;\n }\n // If we are dealing with a select input, we need to create an option first\n // that is then selected. For text inputs we can just add items normally.\n if (!_this._isTextElement) {\n _this._addChoice({\n value: item.value,\n label: item.label,\n isSelected: true,\n isDisabled: false,\n customProperties: item.customProperties,\n placeholder: item.placeholder\n });\n } else {\n _this._addItem({\n value: item.value,\n label: item.label,\n choiceId: item.id,\n customProperties: item.customProperties,\n placeholder: item.placeholder\n });\n }\n },\n string: function () {\n if (!_this._isTextElement) {\n _this._addChoice({\n value: item,\n label: item,\n isSelected: true,\n isDisabled: false\n });\n } else {\n _this._addItem({\n value: item\n });\n }\n }\n };\n handleType[itemType]();\n };\n Choices.prototype._findAndSelectChoiceByValue = function (value) {\n var _this = this;\n var choices = this._store.choices;\n // Check 'value' property exists and the choice isn't already selected\n var foundChoice = choices.find(function (choice) {\n return _this.config.valueComparer(choice.value, value);\n });\n if (foundChoice && !foundChoice.selected) {\n this._addItem({\n value: foundChoice.value,\n label: foundChoice.label,\n choiceId: foundChoice.id,\n groupId: foundChoice.groupId,\n customProperties: foundChoice.customProperties,\n placeholder: foundChoice.placeholder,\n keyCode: foundChoice.keyCode\n });\n }\n };\n Choices.prototype._generatePlaceholderValue = function () {\n if (this._isSelectElement && this.passedElement.placeholderOption) {\n var placeholderOption = this.passedElement.placeholderOption;\n return placeholderOption ? placeholderOption.text : null;\n }\n var _a = this.config,\n placeholder = _a.placeholder,\n placeholderValue = _a.placeholderValue;\n var dataset = this.passedElement.element.dataset;\n if (placeholder) {\n if (placeholderValue) {\n return placeholderValue;\n }\n if (dataset.placeholder) {\n return dataset.placeholder;\n }\n }\n return null;\n };\n return Choices;\n}();\nexports[\"default\"] = Choices;\n\n/***/ }),\n\n/***/ 613:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar utils_1 = __webpack_require__(799);\nvar constants_1 = __webpack_require__(883);\nvar Container = /** @class */function () {\n function Container(_a) {\n var element = _a.element,\n type = _a.type,\n classNames = _a.classNames,\n position = _a.position;\n this.element = element;\n this.classNames = classNames;\n this.type = type;\n this.position = position;\n this.isOpen = false;\n this.isFlipped = false;\n this.isFocussed = false;\n this.isDisabled = false;\n this.isLoading = false;\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n }\n Container.prototype.addEventListeners = function () {\n this.element.addEventListener('focus', this._onFocus);\n this.element.addEventListener('blur', this._onBlur);\n };\n Container.prototype.removeEventListeners = function () {\n this.element.removeEventListener('focus', this._onFocus);\n this.element.removeEventListener('blur', this._onBlur);\n };\n /**\n * Determine whether container should be flipped based on passed\n * dropdown position\n */\n Container.prototype.shouldFlip = function (dropdownPos) {\n if (typeof dropdownPos !== 'number') {\n return false;\n }\n // If flip is enabled and the dropdown bottom position is\n // greater than the window height flip the dropdown.\n var shouldFlip = false;\n if (this.position === 'auto') {\n shouldFlip = !window.matchMedia(\"(min-height: \".concat(dropdownPos + 1, \"px)\")).matches;\n } else if (this.position === 'top') {\n shouldFlip = true;\n }\n return shouldFlip;\n };\n Container.prototype.setActiveDescendant = function (activeDescendantID) {\n this.element.setAttribute('aria-activedescendant', activeDescendantID);\n };\n Container.prototype.removeActiveDescendant = function () {\n this.element.removeAttribute('aria-activedescendant');\n };\n Container.prototype.open = function (dropdownPos) {\n this.element.classList.add(this.classNames.openState);\n this.element.setAttribute('aria-expanded', 'true');\n this.isOpen = true;\n if (this.shouldFlip(dropdownPos)) {\n this.element.classList.add(this.classNames.flippedState);\n this.isFlipped = true;\n }\n };\n Container.prototype.close = function () {\n this.element.classList.remove(this.classNames.openState);\n this.element.setAttribute('aria-expanded', 'false');\n this.removeActiveDescendant();\n this.isOpen = false;\n // A dropdown flips if it does not have space within the page\n if (this.isFlipped) {\n this.element.classList.remove(this.classNames.flippedState);\n this.isFlipped = false;\n }\n };\n Container.prototype.focus = function () {\n if (!this.isFocussed) {\n this.element.focus();\n }\n };\n Container.prototype.addFocusState = function () {\n this.element.classList.add(this.classNames.focusState);\n };\n Container.prototype.removeFocusState = function () {\n this.element.classList.remove(this.classNames.focusState);\n };\n Container.prototype.enable = function () {\n this.element.classList.remove(this.classNames.disabledState);\n this.element.removeAttribute('aria-disabled');\n if (this.type === constants_1.SELECT_ONE_TYPE) {\n this.element.setAttribute('tabindex', '0');\n }\n this.isDisabled = false;\n };\n Container.prototype.disable = function () {\n this.element.classList.add(this.classNames.disabledState);\n this.element.setAttribute('aria-disabled', 'true');\n if (this.type === constants_1.SELECT_ONE_TYPE) {\n this.element.setAttribute('tabindex', '-1');\n }\n this.isDisabled = true;\n };\n Container.prototype.wrap = function (element) {\n (0, utils_1.wrap)(element, this.element);\n };\n Container.prototype.unwrap = function (element) {\n if (this.element.parentNode) {\n // Move passed element outside this element\n this.element.parentNode.insertBefore(element, this.element);\n // Remove this element\n this.element.parentNode.removeChild(this.element);\n }\n };\n Container.prototype.addLoadingState = function () {\n this.element.classList.add(this.classNames.loadingState);\n this.element.setAttribute('aria-busy', 'true');\n this.isLoading = true;\n };\n Container.prototype.removeLoadingState = function () {\n this.element.classList.remove(this.classNames.loadingState);\n this.element.removeAttribute('aria-busy');\n this.isLoading = false;\n };\n Container.prototype._onFocus = function () {\n this.isFocussed = true;\n };\n Container.prototype._onBlur = function () {\n this.isFocussed = false;\n };\n return Container;\n}();\nexports[\"default\"] = Container;\n\n/***/ }),\n\n/***/ 217:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar Dropdown = /** @class */function () {\n function Dropdown(_a) {\n var element = _a.element,\n type = _a.type,\n classNames = _a.classNames;\n this.element = element;\n this.classNames = classNames;\n this.type = type;\n this.isActive = false;\n }\n Object.defineProperty(Dropdown.prototype, \"distanceFromTopWindow\", {\n /**\n * Bottom position of dropdown in viewport coordinates\n */\n get: function () {\n return this.element.getBoundingClientRect().bottom;\n },\n enumerable: false,\n configurable: true\n });\n Dropdown.prototype.getChild = function (selector) {\n return this.element.querySelector(selector);\n };\n /**\n * Show dropdown to user by adding active state class\n */\n Dropdown.prototype.show = function () {\n this.element.classList.add(this.classNames.activeState);\n this.element.setAttribute('aria-expanded', 'true');\n this.isActive = true;\n return this;\n };\n /**\n * Hide dropdown from user\n */\n Dropdown.prototype.hide = function () {\n this.element.classList.remove(this.classNames.activeState);\n this.element.setAttribute('aria-expanded', 'false');\n this.isActive = false;\n return this;\n };\n return Dropdown;\n}();\nexports[\"default\"] = Dropdown;\n\n/***/ }),\n\n/***/ 520:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.WrappedSelect = exports.WrappedInput = exports.List = exports.Input = exports.Container = exports.Dropdown = void 0;\nvar dropdown_1 = __importDefault(__webpack_require__(217));\nexports.Dropdown = dropdown_1.default;\nvar container_1 = __importDefault(__webpack_require__(613));\nexports.Container = container_1.default;\nvar input_1 = __importDefault(__webpack_require__(11));\nexports.Input = input_1.default;\nvar list_1 = __importDefault(__webpack_require__(624));\nexports.List = list_1.default;\nvar wrapped_input_1 = __importDefault(__webpack_require__(541));\nexports.WrappedInput = wrapped_input_1.default;\nvar wrapped_select_1 = __importDefault(__webpack_require__(982));\nexports.WrappedSelect = wrapped_select_1.default;\n\n/***/ }),\n\n/***/ 11:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar utils_1 = __webpack_require__(799);\nvar constants_1 = __webpack_require__(883);\nvar Input = /** @class */function () {\n function Input(_a) {\n var element = _a.element,\n type = _a.type,\n classNames = _a.classNames,\n preventPaste = _a.preventPaste;\n this.element = element;\n this.type = type;\n this.classNames = classNames;\n this.preventPaste = preventPaste;\n this.isFocussed = this.element.isEqualNode(document.activeElement);\n this.isDisabled = element.disabled;\n this._onPaste = this._onPaste.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n }\n Object.defineProperty(Input.prototype, \"placeholder\", {\n set: function (placeholder) {\n this.element.placeholder = placeholder;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Input.prototype, \"value\", {\n get: function () {\n return (0, utils_1.sanitise)(this.element.value);\n },\n set: function (value) {\n this.element.value = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Input.prototype, \"rawValue\", {\n get: function () {\n return this.element.value;\n },\n enumerable: false,\n configurable: true\n });\n Input.prototype.addEventListeners = function () {\n this.element.addEventListener('paste', this._onPaste);\n this.element.addEventListener('input', this._onInput, {\n passive: true\n });\n this.element.addEventListener('focus', this._onFocus, {\n passive: true\n });\n this.element.addEventListener('blur', this._onBlur, {\n passive: true\n });\n };\n Input.prototype.removeEventListeners = function () {\n this.element.removeEventListener('input', this._onInput);\n this.element.removeEventListener('paste', this._onPaste);\n this.element.removeEventListener('focus', this._onFocus);\n this.element.removeEventListener('blur', this._onBlur);\n };\n Input.prototype.enable = function () {\n this.element.removeAttribute('disabled');\n this.isDisabled = false;\n };\n Input.prototype.disable = function () {\n this.element.setAttribute('disabled', '');\n this.isDisabled = true;\n };\n Input.prototype.focus = function () {\n if (!this.isFocussed) {\n this.element.focus();\n }\n };\n Input.prototype.blur = function () {\n if (this.isFocussed) {\n this.element.blur();\n }\n };\n Input.prototype.clear = function (setWidth) {\n if (setWidth === void 0) {\n setWidth = true;\n }\n if (this.element.value) {\n this.element.value = '';\n }\n if (setWidth) {\n this.setWidth();\n }\n return this;\n };\n /**\n * Set the correct input width based on placeholder\n * value or input value\n */\n Input.prototype.setWidth = function () {\n // Resize input to contents or placeholder\n var _a = this.element,\n style = _a.style,\n value = _a.value,\n placeholder = _a.placeholder;\n style.minWidth = \"\".concat(placeholder.length + 1, \"ch\");\n style.width = \"\".concat(value.length + 1, \"ch\");\n };\n Input.prototype.setActiveDescendant = function (activeDescendantID) {\n this.element.setAttribute('aria-activedescendant', activeDescendantID);\n };\n Input.prototype.removeActiveDescendant = function () {\n this.element.removeAttribute('aria-activedescendant');\n };\n Input.prototype._onInput = function () {\n if (this.type !== constants_1.SELECT_ONE_TYPE) {\n this.setWidth();\n }\n };\n Input.prototype._onPaste = function (event) {\n if (this.preventPaste) {\n event.preventDefault();\n }\n };\n Input.prototype._onFocus = function () {\n this.isFocussed = true;\n };\n Input.prototype._onBlur = function () {\n this.isFocussed = false;\n };\n return Input;\n}();\nexports[\"default\"] = Input;\n\n/***/ }),\n\n/***/ 624:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar constants_1 = __webpack_require__(883);\nvar List = /** @class */function () {\n function List(_a) {\n var element = _a.element;\n this.element = element;\n this.scrollPos = this.element.scrollTop;\n this.height = this.element.offsetHeight;\n }\n List.prototype.clear = function () {\n this.element.innerHTML = '';\n };\n List.prototype.append = function (node) {\n this.element.appendChild(node);\n };\n List.prototype.getChild = function (selector) {\n return this.element.querySelector(selector);\n };\n List.prototype.hasChildren = function () {\n return this.element.hasChildNodes();\n };\n List.prototype.scrollToTop = function () {\n this.element.scrollTop = 0;\n };\n List.prototype.scrollToChildElement = function (element, direction) {\n var _this = this;\n if (!element) {\n return;\n }\n var listHeight = this.element.offsetHeight;\n // Scroll position of dropdown\n var listScrollPosition = this.element.scrollTop + listHeight;\n var elementHeight = element.offsetHeight;\n // Distance from bottom of element to top of parent\n var elementPos = element.offsetTop + elementHeight;\n // Difference between the element and scroll position\n var destination = direction > 0 ? this.element.scrollTop + elementPos - listScrollPosition : element.offsetTop;\n requestAnimationFrame(function () {\n _this._animateScroll(destination, direction);\n });\n };\n List.prototype._scrollDown = function (scrollPos, strength, destination) {\n var easing = (destination - scrollPos) / strength;\n var distance = easing > 1 ? easing : 1;\n this.element.scrollTop = scrollPos + distance;\n };\n List.prototype._scrollUp = function (scrollPos, strength, destination) {\n var easing = (scrollPos - destination) / strength;\n var distance = easing > 1 ? easing : 1;\n this.element.scrollTop = scrollPos - distance;\n };\n List.prototype._animateScroll = function (destination, direction) {\n var _this = this;\n var strength = constants_1.SCROLLING_SPEED;\n var choiceListScrollTop = this.element.scrollTop;\n var continueAnimation = false;\n if (direction > 0) {\n this._scrollDown(choiceListScrollTop, strength, destination);\n if (choiceListScrollTop < destination) {\n continueAnimation = true;\n }\n } else {\n this._scrollUp(choiceListScrollTop, strength, destination);\n if (choiceListScrollTop > destination) {\n continueAnimation = true;\n }\n }\n if (continueAnimation) {\n requestAnimationFrame(function () {\n _this._animateScroll(destination, direction);\n });\n }\n };\n return List;\n}();\nexports[\"default\"] = List;\n\n/***/ }),\n\n/***/ 730:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar utils_1 = __webpack_require__(799);\nvar WrappedElement = /** @class */function () {\n function WrappedElement(_a) {\n var element = _a.element,\n classNames = _a.classNames;\n this.element = element;\n this.classNames = classNames;\n if (!(element instanceof HTMLInputElement) && !(element instanceof HTMLSelectElement)) {\n throw new TypeError('Invalid element passed');\n }\n this.isDisabled = false;\n }\n Object.defineProperty(WrappedElement.prototype, \"isActive\", {\n get: function () {\n return this.element.dataset.choice === 'active';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedElement.prototype, \"dir\", {\n get: function () {\n return this.element.dir;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedElement.prototype, \"value\", {\n get: function () {\n return this.element.value;\n },\n set: function (value) {\n // you must define setter here otherwise it will be readonly property\n this.element.value = value;\n },\n enumerable: false,\n configurable: true\n });\n WrappedElement.prototype.conceal = function () {\n // Hide passed input\n this.element.classList.add(this.classNames.input);\n this.element.hidden = true;\n // Remove element from tab index\n this.element.tabIndex = -1;\n // Backup original styles if any\n var origStyle = this.element.getAttribute('style');\n if (origStyle) {\n this.element.setAttribute('data-choice-orig-style', origStyle);\n }\n this.element.setAttribute('data-choice', 'active');\n };\n WrappedElement.prototype.reveal = function () {\n // Reinstate passed element\n this.element.classList.remove(this.classNames.input);\n this.element.hidden = false;\n this.element.removeAttribute('tabindex');\n // Recover original styles if any\n var origStyle = this.element.getAttribute('data-choice-orig-style');\n if (origStyle) {\n this.element.removeAttribute('data-choice-orig-style');\n this.element.setAttribute('style', origStyle);\n } else {\n this.element.removeAttribute('style');\n }\n this.element.removeAttribute('data-choice');\n // Re-assign values - this is weird, I know\n // @todo Figure out why we need to do this\n this.element.value = this.element.value; // eslint-disable-line no-self-assign\n };\n\n WrappedElement.prototype.enable = function () {\n this.element.removeAttribute('disabled');\n this.element.disabled = false;\n this.isDisabled = false;\n };\n WrappedElement.prototype.disable = function () {\n this.element.setAttribute('disabled', '');\n this.element.disabled = true;\n this.isDisabled = true;\n };\n WrappedElement.prototype.triggerEvent = function (eventType, data) {\n (0, utils_1.dispatchEvent)(this.element, eventType, data);\n };\n return WrappedElement;\n}();\nexports[\"default\"] = WrappedElement;\n\n/***/ }),\n\n/***/ 541:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar wrapped_element_1 = __importDefault(__webpack_require__(730));\nvar WrappedInput = /** @class */function (_super) {\n __extends(WrappedInput, _super);\n function WrappedInput(_a) {\n var element = _a.element,\n classNames = _a.classNames,\n delimiter = _a.delimiter;\n var _this = _super.call(this, {\n element: element,\n classNames: classNames\n }) || this;\n _this.delimiter = delimiter;\n return _this;\n }\n Object.defineProperty(WrappedInput.prototype, \"value\", {\n get: function () {\n return this.element.value;\n },\n set: function (value) {\n this.element.setAttribute('value', value);\n this.element.value = value;\n },\n enumerable: false,\n configurable: true\n });\n return WrappedInput;\n}(wrapped_element_1.default);\nexports[\"default\"] = WrappedInput;\n\n/***/ }),\n\n/***/ 982:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar wrapped_element_1 = __importDefault(__webpack_require__(730));\nvar WrappedSelect = /** @class */function (_super) {\n __extends(WrappedSelect, _super);\n function WrappedSelect(_a) {\n var element = _a.element,\n classNames = _a.classNames,\n template = _a.template;\n var _this = _super.call(this, {\n element: element,\n classNames: classNames\n }) || this;\n _this.template = template;\n return _this;\n }\n Object.defineProperty(WrappedSelect.prototype, \"placeholderOption\", {\n get: function () {\n return this.element.querySelector('option[value=\"\"]') ||\n // Backward compatibility layer for the non-standard placeholder attribute supported in older versions.\n this.element.querySelector('option[placeholder]');\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedSelect.prototype, \"optionGroups\", {\n get: function () {\n return Array.from(this.element.getElementsByTagName('OPTGROUP'));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedSelect.prototype, \"options\", {\n get: function () {\n return Array.from(this.element.options);\n },\n set: function (options) {\n var _this = this;\n var fragment = document.createDocumentFragment();\n var addOptionToFragment = function (data) {\n // Create a standard select option\n var option = _this.template(data);\n // Append it to fragment\n fragment.appendChild(option);\n };\n // Add each list item to list\n options.forEach(function (optionData) {\n return addOptionToFragment(optionData);\n });\n this.appendDocFragment(fragment);\n },\n enumerable: false,\n configurable: true\n });\n WrappedSelect.prototype.appendDocFragment = function (fragment) {\n this.element.innerHTML = '';\n this.element.appendChild(fragment);\n };\n return WrappedSelect;\n}(wrapped_element_1.default);\nexports[\"default\"] = WrappedSelect;\n\n/***/ }),\n\n/***/ 883:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.SCROLLING_SPEED = exports.SELECT_MULTIPLE_TYPE = exports.SELECT_ONE_TYPE = exports.TEXT_TYPE = exports.KEY_CODES = exports.ACTION_TYPES = exports.EVENTS = void 0;\nexports.EVENTS = {\n showDropdown: 'showDropdown',\n hideDropdown: 'hideDropdown',\n change: 'change',\n choice: 'choice',\n search: 'search',\n addItem: 'addItem',\n removeItem: 'removeItem',\n highlightItem: 'highlightItem',\n highlightChoice: 'highlightChoice',\n unhighlightItem: 'unhighlightItem'\n};\nexports.ACTION_TYPES = {\n ADD_CHOICE: 'ADD_CHOICE',\n FILTER_CHOICES: 'FILTER_CHOICES',\n ACTIVATE_CHOICES: 'ACTIVATE_CHOICES',\n CLEAR_CHOICES: 'CLEAR_CHOICES',\n ADD_GROUP: 'ADD_GROUP',\n ADD_ITEM: 'ADD_ITEM',\n REMOVE_ITEM: 'REMOVE_ITEM',\n HIGHLIGHT_ITEM: 'HIGHLIGHT_ITEM',\n CLEAR_ALL: 'CLEAR_ALL',\n RESET_TO: 'RESET_TO',\n SET_IS_LOADING: 'SET_IS_LOADING'\n};\nexports.KEY_CODES = {\n BACK_KEY: 46,\n DELETE_KEY: 8,\n ENTER_KEY: 13,\n A_KEY: 65,\n ESC_KEY: 27,\n UP_KEY: 38,\n DOWN_KEY: 40,\n PAGE_UP_KEY: 33,\n PAGE_DOWN_KEY: 34\n};\nexports.TEXT_TYPE = 'text';\nexports.SELECT_ONE_TYPE = 'select-one';\nexports.SELECT_MULTIPLE_TYPE = 'select-multiple';\nexports.SCROLLING_SPEED = 4;\n\n/***/ }),\n\n/***/ 789:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.DEFAULT_CONFIG = exports.DEFAULT_CLASSNAMES = void 0;\nvar utils_1 = __webpack_require__(799);\nexports.DEFAULT_CLASSNAMES = {\n containerOuter: 'choices',\n containerInner: 'choices__inner',\n input: 'choices__input',\n inputCloned: 'choices__input--cloned',\n list: 'choices__list',\n listItems: 'choices__list--multiple',\n listSingle: 'choices__list--single',\n listDropdown: 'choices__list--dropdown',\n item: 'choices__item',\n itemSelectable: 'choices__item--selectable',\n itemDisabled: 'choices__item--disabled',\n itemChoice: 'choices__item--choice',\n placeholder: 'choices__placeholder',\n group: 'choices__group',\n groupHeading: 'choices__heading',\n button: 'choices__button',\n activeState: 'is-active',\n focusState: 'is-focused',\n openState: 'is-open',\n disabledState: 'is-disabled',\n highlightedState: 'is-highlighted',\n selectedState: 'is-selected',\n flippedState: 'is-flipped',\n loadingState: 'is-loading',\n noResults: 'has-no-results',\n noChoices: 'has-no-choices'\n};\nexports.DEFAULT_CONFIG = {\n items: [],\n choices: [],\n silent: false,\n renderChoiceLimit: -1,\n maxItemCount: -1,\n addItems: true,\n addItemFilter: null,\n removeItems: true,\n removeItemButton: false,\n editItems: false,\n allowHTML: true,\n duplicateItemsAllowed: true,\n delimiter: ',',\n paste: true,\n searchEnabled: true,\n searchChoices: true,\n searchFloor: 1,\n searchResultLimit: 4,\n searchFields: ['label', 'value'],\n position: 'auto',\n resetScrollPosition: true,\n shouldSort: true,\n shouldSortItems: false,\n sorter: utils_1.sortByAlpha,\n placeholder: true,\n placeholderValue: null,\n searchPlaceholderValue: null,\n prependValue: null,\n appendValue: null,\n renderSelectedChoices: 'auto',\n loadingText: 'Loading...',\n noResultsText: 'No results found',\n noChoicesText: 'No choices to choose from',\n itemSelectText: 'Press to select',\n uniqueItemText: 'Only unique values can be added',\n customAddItemText: 'Only values matching specific conditions can be added',\n addItemText: function (value) {\n return \"Press Enter to add \\\"\".concat((0, utils_1.sanitise)(value), \"\\\"\");\n },\n maxItemText: function (maxItemCount) {\n return \"Only \".concat(maxItemCount, \" values can be added\");\n },\n valueComparer: function (value1, value2) {\n return value1 === value2;\n },\n fuseOptions: {\n includeScore: true\n },\n labelId: '',\n callbackOnInit: null,\n callbackOnCreateTemplates: null,\n classNames: exports.DEFAULT_CLASSNAMES\n};\n\n/***/ }),\n\n/***/ 18:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 978:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 948:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 359:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 285:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 533:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 187:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function () {\n return m[k];\n }\n };\n }\n Object.defineProperty(o, k2, desc);\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n__exportStar(__webpack_require__(18), exports);\n__exportStar(__webpack_require__(978), exports);\n__exportStar(__webpack_require__(948), exports);\n__exportStar(__webpack_require__(359), exports);\n__exportStar(__webpack_require__(285), exports);\n__exportStar(__webpack_require__(533), exports);\n__exportStar(__webpack_require__(287), exports);\n__exportStar(__webpack_require__(132), exports);\n__exportStar(__webpack_require__(837), exports);\n__exportStar(__webpack_require__(598), exports);\n__exportStar(__webpack_require__(369), exports);\n__exportStar(__webpack_require__(37), exports);\n__exportStar(__webpack_require__(47), exports);\n__exportStar(__webpack_require__(923), exports);\n__exportStar(__webpack_require__(876), exports);\n\n/***/ }),\n\n/***/ 287:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 132:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 837:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 598:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 37:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 369:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 47:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 923:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 876:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 799:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.parseCustomProperties = exports.diff = exports.cloneObject = exports.existsInArray = exports.dispatchEvent = exports.sortByScore = exports.sortByAlpha = exports.strToEl = exports.sanitise = exports.isScrolledIntoView = exports.getAdjacentEl = exports.wrap = exports.isType = exports.getType = exports.generateId = exports.generateChars = exports.getRandomNumber = void 0;\nvar getRandomNumber = function (min, max) {\n return Math.floor(Math.random() * (max - min) + min);\n};\nexports.getRandomNumber = getRandomNumber;\nvar generateChars = function (length) {\n return Array.from({\n length: length\n }, function () {\n return (0, exports.getRandomNumber)(0, 36).toString(36);\n }).join('');\n};\nexports.generateChars = generateChars;\nvar generateId = function (element, prefix) {\n var id = element.id || element.name && \"\".concat(element.name, \"-\").concat((0, exports.generateChars)(2)) || (0, exports.generateChars)(4);\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = \"\".concat(prefix, \"-\").concat(id);\n return id;\n};\nexports.generateId = generateId;\nvar getType = function (obj) {\n return Object.prototype.toString.call(obj).slice(8, -1);\n};\nexports.getType = getType;\nvar isType = function (type, obj) {\n return obj !== undefined && obj !== null && (0, exports.getType)(obj) === type;\n};\nexports.isType = isType;\nvar wrap = function (element, wrapper) {\n if (wrapper === void 0) {\n wrapper = document.createElement('div');\n }\n if (element.parentNode) {\n if (element.nextSibling) {\n element.parentNode.insertBefore(wrapper, element.nextSibling);\n } else {\n element.parentNode.appendChild(wrapper);\n }\n }\n return wrapper.appendChild(element);\n};\nexports.wrap = wrap;\nvar getAdjacentEl = function (startEl, selector, direction) {\n if (direction === void 0) {\n direction = 1;\n }\n var prop = \"\".concat(direction > 0 ? 'next' : 'previous', \"ElementSibling\");\n var sibling = startEl[prop];\n while (sibling) {\n if (sibling.matches(selector)) {\n return sibling;\n }\n sibling = sibling[prop];\n }\n return sibling;\n};\nexports.getAdjacentEl = getAdjacentEl;\nvar isScrolledIntoView = function (element, parent, direction) {\n if (direction === void 0) {\n direction = 1;\n }\n if (!element) {\n return false;\n }\n var isVisible;\n if (direction > 0) {\n // In view from bottom\n isVisible = parent.scrollTop + parent.offsetHeight >= element.offsetTop + element.offsetHeight;\n } else {\n // In view from top\n isVisible = element.offsetTop >= parent.scrollTop;\n }\n return isVisible;\n};\nexports.isScrolledIntoView = isScrolledIntoView;\nvar sanitise = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n return value.replace(/&/g, '&').replace(/>/g, '>').replace(/ -1) {\n return state.map(function (obj) {\n var choice = obj;\n if (choice.id === parseInt(\"\".concat(addItemAction_1.choiceId), 10)) {\n choice.selected = true;\n }\n return choice;\n });\n }\n return state;\n }\n case 'REMOVE_ITEM':\n {\n var removeItemAction_1 = action;\n // When an item is removed and it has an associated choice,\n // we want to re-enable it so it can be chosen again\n if (removeItemAction_1.choiceId && removeItemAction_1.choiceId > -1) {\n return state.map(function (obj) {\n var choice = obj;\n if (choice.id === parseInt(\"\".concat(removeItemAction_1.choiceId), 10)) {\n choice.selected = false;\n }\n return choice;\n });\n }\n return state;\n }\n case 'FILTER_CHOICES':\n {\n var filterChoicesAction_1 = action;\n return state.map(function (obj) {\n var choice = obj;\n // Set active state based on whether choice is\n // within filtered results\n choice.active = filterChoicesAction_1.results.some(function (_a) {\n var item = _a.item,\n score = _a.score;\n if (item.id === choice.id) {\n choice.score = score;\n return true;\n }\n return false;\n });\n return choice;\n });\n }\n case 'ACTIVATE_CHOICES':\n {\n var activateChoicesAction_1 = action;\n return state.map(function (obj) {\n var choice = obj;\n choice.active = activateChoicesAction_1.active;\n return choice;\n });\n }\n case 'CLEAR_CHOICES':\n {\n return exports.defaultState;\n }\n default:\n {\n return state;\n }\n }\n}\nexports[\"default\"] = choices;\n\n/***/ }),\n\n/***/ 871:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = [];\nfunction groups(state, action) {\n if (state === void 0) {\n state = exports.defaultState;\n }\n if (action === void 0) {\n action = {};\n }\n switch (action.type) {\n case 'ADD_GROUP':\n {\n var addGroupAction = action;\n return __spreadArray(__spreadArray([], state, true), [{\n id: addGroupAction.id,\n value: addGroupAction.value,\n active: addGroupAction.active,\n disabled: addGroupAction.disabled\n }], false);\n }\n case 'CLEAR_CHOICES':\n {\n return [];\n }\n default:\n {\n return state;\n }\n }\n}\nexports[\"default\"] = groups;\n\n/***/ }),\n\n/***/ 655:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nvar redux_1 = __webpack_require__(791);\nvar items_1 = __importDefault(__webpack_require__(52));\nvar groups_1 = __importDefault(__webpack_require__(871));\nvar choices_1 = __importDefault(__webpack_require__(273));\nvar loading_1 = __importDefault(__webpack_require__(502));\nvar utils_1 = __webpack_require__(799);\nexports.defaultState = {\n groups: [],\n items: [],\n choices: [],\n loading: false\n};\nvar appReducer = (0, redux_1.combineReducers)({\n items: items_1.default,\n groups: groups_1.default,\n choices: choices_1.default,\n loading: loading_1.default\n});\nvar rootReducer = function (passedState, action) {\n var state = passedState;\n // If we are clearing all items, groups and options we reassign\n // state and then pass that state to our proper reducer. This isn't\n // mutating our actual state\n // See: http://stackoverflow.com/a/35641992\n if (action.type === 'CLEAR_ALL') {\n state = exports.defaultState;\n } else if (action.type === 'RESET_TO') {\n return (0, utils_1.cloneObject)(action.state);\n }\n return appReducer(state, action);\n};\nexports[\"default\"] = rootReducer;\n\n/***/ }),\n\n/***/ 52:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = [];\nfunction items(state, action) {\n if (state === void 0) {\n state = exports.defaultState;\n }\n if (action === void 0) {\n action = {};\n }\n switch (action.type) {\n case 'ADD_ITEM':\n {\n var addItemAction = action;\n // Add object to items array\n var newState = __spreadArray(__spreadArray([], state, true), [{\n id: addItemAction.id,\n choiceId: addItemAction.choiceId,\n groupId: addItemAction.groupId,\n value: addItemAction.value,\n label: addItemAction.label,\n active: true,\n highlighted: false,\n customProperties: addItemAction.customProperties,\n placeholder: addItemAction.placeholder || false,\n keyCode: null\n }], false);\n return newState.map(function (obj) {\n var item = obj;\n item.highlighted = false;\n return item;\n });\n }\n case 'REMOVE_ITEM':\n {\n // Set item to inactive\n return state.map(function (obj) {\n var item = obj;\n if (item.id === action.id) {\n item.active = false;\n }\n return item;\n });\n }\n case 'HIGHLIGHT_ITEM':\n {\n var highlightItemAction_1 = action;\n return state.map(function (obj) {\n var item = obj;\n if (item.id === highlightItemAction_1.id) {\n item.highlighted = highlightItemAction_1.highlighted;\n }\n return item;\n });\n }\n default:\n {\n return state;\n }\n }\n}\nexports[\"default\"] = items;\n\n/***/ }),\n\n/***/ 502:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = false;\nvar general = function (state, action) {\n if (state === void 0) {\n state = exports.defaultState;\n }\n if (action === void 0) {\n action = {};\n }\n switch (action.type) {\n case 'SET_IS_LOADING':\n {\n return action.isLoading;\n }\n default:\n {\n return state;\n }\n }\n};\nexports[\"default\"] = general;\n\n/***/ }),\n\n/***/ 744:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar redux_1 = __webpack_require__(791);\nvar index_1 = __importDefault(__webpack_require__(655));\nvar Store = /** @class */function () {\n function Store() {\n this._store = (0, redux_1.createStore)(index_1.default, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());\n }\n /**\n * Subscribe store to function call (wrapped Redux method)\n */\n Store.prototype.subscribe = function (onChange) {\n this._store.subscribe(onChange);\n };\n /**\n * Dispatch event to store (wrapped Redux method)\n */\n Store.prototype.dispatch = function (action) {\n this._store.dispatch(action);\n };\n Object.defineProperty(Store.prototype, \"state\", {\n /**\n * Get store object (wrapping Redux method)\n */\n get: function () {\n return this._store.getState();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"items\", {\n /**\n * Get items from store\n */\n get: function () {\n return this.state.items;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"activeItems\", {\n /**\n * Get active items from store\n */\n get: function () {\n return this.items.filter(function (item) {\n return item.active === true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"highlightedActiveItems\", {\n /**\n * Get highlighted items from store\n */\n get: function () {\n return this.items.filter(function (item) {\n return item.active && item.highlighted;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"choices\", {\n /**\n * Get choices from store\n */\n get: function () {\n return this.state.choices;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"activeChoices\", {\n /**\n * Get active choices from store\n */\n get: function () {\n return this.choices.filter(function (choice) {\n return choice.active === true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"selectableChoices\", {\n /**\n * Get selectable choices from store\n */\n get: function () {\n return this.choices.filter(function (choice) {\n return choice.disabled !== true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"searchableChoices\", {\n /**\n * Get choices that can be searched (excluding placeholders)\n */\n get: function () {\n return this.selectableChoices.filter(function (choice) {\n return choice.placeholder !== true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"placeholderChoice\", {\n /**\n * Get placeholder choice from store\n */\n get: function () {\n return __spreadArray([], this.choices, true).reverse().find(function (choice) {\n return choice.placeholder === true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"groups\", {\n /**\n * Get groups from store\n */\n get: function () {\n return this.state.groups;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"activeGroups\", {\n /**\n * Get active groups from store\n */\n get: function () {\n var _a = this,\n groups = _a.groups,\n choices = _a.choices;\n return groups.filter(function (group) {\n var isActive = group.active === true && group.disabled === false;\n var hasActiveOptions = choices.some(function (choice) {\n return choice.active === true && choice.disabled === false;\n });\n return isActive && hasActiveOptions;\n }, []);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Get loading state from store\n */\n Store.prototype.isLoading = function () {\n return this.state.loading;\n };\n /**\n * Get single choice by it's ID\n */\n Store.prototype.getChoiceById = function (id) {\n return this.activeChoices.find(function (choice) {\n return choice.id === parseInt(id, 10);\n });\n };\n /**\n * Get group by group id\n */\n Store.prototype.getGroupById = function (id) {\n return this.groups.find(function (group) {\n return group.id === id;\n });\n };\n return Store;\n}();\nexports[\"default\"] = Store;\n\n/***/ }),\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\n/**\n * Helpers to create HTML elements used by Choices\n * Can be overridden by providing `callbackOnCreateTemplates` option\n */\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar templates = {\n containerOuter: function (_a, dir, isSelectElement, isSelectOneElement, searchEnabled, passedElementType, labelId) {\n var containerOuter = _a.classNames.containerOuter;\n var div = Object.assign(document.createElement('div'), {\n className: containerOuter\n });\n div.dataset.type = passedElementType;\n if (dir) {\n div.dir = dir;\n }\n if (isSelectOneElement) {\n div.tabIndex = 0;\n }\n if (isSelectElement) {\n div.setAttribute('role', searchEnabled ? 'combobox' : 'listbox');\n if (searchEnabled) {\n div.setAttribute('aria-autocomplete', 'list');\n }\n }\n div.setAttribute('aria-haspopup', 'true');\n div.setAttribute('aria-expanded', 'false');\n if (labelId) {\n div.setAttribute('aria-labelledby', labelId);\n }\n return div;\n },\n containerInner: function (_a) {\n var containerInner = _a.classNames.containerInner;\n return Object.assign(document.createElement('div'), {\n className: containerInner\n });\n },\n itemList: function (_a, isSelectOneElement) {\n var _b = _a.classNames,\n list = _b.list,\n listSingle = _b.listSingle,\n listItems = _b.listItems;\n return Object.assign(document.createElement('div'), {\n className: \"\".concat(list, \" \").concat(isSelectOneElement ? listSingle : listItems)\n });\n },\n placeholder: function (_a, value) {\n var _b;\n var allowHTML = _a.allowHTML,\n placeholder = _a.classNames.placeholder;\n return Object.assign(document.createElement('div'), (_b = {\n className: placeholder\n }, _b[allowHTML ? 'innerHTML' : 'innerText'] = value, _b));\n },\n item: function (_a, _b, removeItemButton) {\n var _c, _d;\n var allowHTML = _a.allowHTML,\n _e = _a.classNames,\n item = _e.item,\n button = _e.button,\n highlightedState = _e.highlightedState,\n itemSelectable = _e.itemSelectable,\n placeholder = _e.placeholder;\n var id = _b.id,\n value = _b.value,\n label = _b.label,\n customProperties = _b.customProperties,\n active = _b.active,\n disabled = _b.disabled,\n highlighted = _b.highlighted,\n isPlaceholder = _b.placeholder;\n var div = Object.assign(document.createElement('div'), (_c = {\n className: item\n }, _c[allowHTML ? 'innerHTML' : 'innerText'] = label, _c));\n Object.assign(div.dataset, {\n item: '',\n id: id,\n value: value,\n customProperties: customProperties\n });\n if (active) {\n div.setAttribute('aria-selected', 'true');\n }\n if (disabled) {\n div.setAttribute('aria-disabled', 'true');\n }\n if (isPlaceholder) {\n div.classList.add(placeholder);\n }\n div.classList.add(highlighted ? highlightedState : itemSelectable);\n if (removeItemButton) {\n if (disabled) {\n div.classList.remove(itemSelectable);\n }\n div.dataset.deletable = '';\n /** @todo This MUST be localizable, not hardcoded! */\n var REMOVE_ITEM_TEXT = 'Remove item';\n var removeButton = Object.assign(document.createElement('button'), (_d = {\n type: 'button',\n className: button\n }, _d[allowHTML ? 'innerHTML' : 'innerText'] = REMOVE_ITEM_TEXT, _d));\n removeButton.setAttribute('aria-label', \"\".concat(REMOVE_ITEM_TEXT, \": '\").concat(value, \"'\"));\n removeButton.dataset.button = '';\n div.appendChild(removeButton);\n }\n return div;\n },\n choiceList: function (_a, isSelectOneElement) {\n var list = _a.classNames.list;\n var div = Object.assign(document.createElement('div'), {\n className: list\n });\n if (!isSelectOneElement) {\n div.setAttribute('aria-multiselectable', 'true');\n }\n div.setAttribute('role', 'listbox');\n return div;\n },\n choiceGroup: function (_a, _b) {\n var _c;\n var allowHTML = _a.allowHTML,\n _d = _a.classNames,\n group = _d.group,\n groupHeading = _d.groupHeading,\n itemDisabled = _d.itemDisabled;\n var id = _b.id,\n value = _b.value,\n disabled = _b.disabled;\n var div = Object.assign(document.createElement('div'), {\n className: \"\".concat(group, \" \").concat(disabled ? itemDisabled : '')\n });\n div.setAttribute('role', 'group');\n Object.assign(div.dataset, {\n group: '',\n id: id,\n value: value\n });\n if (disabled) {\n div.setAttribute('aria-disabled', 'true');\n }\n div.appendChild(Object.assign(document.createElement('div'), (_c = {\n className: groupHeading\n }, _c[allowHTML ? 'innerHTML' : 'innerText'] = value, _c)));\n return div;\n },\n choice: function (_a, _b, selectText) {\n var _c;\n var allowHTML = _a.allowHTML,\n _d = _a.classNames,\n item = _d.item,\n itemChoice = _d.itemChoice,\n itemSelectable = _d.itemSelectable,\n selectedState = _d.selectedState,\n itemDisabled = _d.itemDisabled,\n placeholder = _d.placeholder;\n var id = _b.id,\n value = _b.value,\n label = _b.label,\n groupId = _b.groupId,\n elementId = _b.elementId,\n isDisabled = _b.disabled,\n isSelected = _b.selected,\n isPlaceholder = _b.placeholder;\n var div = Object.assign(document.createElement('div'), (_c = {\n id: elementId\n }, _c[allowHTML ? 'innerHTML' : 'innerText'] = label, _c.className = \"\".concat(item, \" \").concat(itemChoice), _c));\n if (isSelected) {\n div.classList.add(selectedState);\n }\n if (isPlaceholder) {\n div.classList.add(placeholder);\n }\n div.setAttribute('role', groupId && groupId > 0 ? 'treeitem' : 'option');\n Object.assign(div.dataset, {\n choice: '',\n id: id,\n value: value,\n selectText: selectText\n });\n if (isDisabled) {\n div.classList.add(itemDisabled);\n div.dataset.choiceDisabled = '';\n div.setAttribute('aria-disabled', 'true');\n } else {\n div.classList.add(itemSelectable);\n div.dataset.choiceSelectable = '';\n }\n return div;\n },\n input: function (_a, placeholderValue) {\n var _b = _a.classNames,\n input = _b.input,\n inputCloned = _b.inputCloned;\n var inp = Object.assign(document.createElement('input'), {\n type: 'search',\n name: 'search_terms',\n className: \"\".concat(input, \" \").concat(inputCloned),\n autocomplete: 'off',\n autocapitalize: 'off',\n spellcheck: false\n });\n inp.setAttribute('role', 'textbox');\n inp.setAttribute('aria-autocomplete', 'list');\n inp.setAttribute('aria-label', placeholderValue);\n return inp;\n },\n dropdown: function (_a) {\n var _b = _a.classNames,\n list = _b.list,\n listDropdown = _b.listDropdown;\n var div = document.createElement('div');\n div.classList.add(list, listDropdown);\n div.setAttribute('aria-expanded', 'false');\n return div;\n },\n notice: function (_a, innerText, type) {\n var _b;\n var allowHTML = _a.allowHTML,\n _c = _a.classNames,\n item = _c.item,\n itemChoice = _c.itemChoice,\n noResults = _c.noResults,\n noChoices = _c.noChoices;\n if (type === void 0) {\n type = '';\n }\n var classes = [item, itemChoice];\n if (type === 'no-choices') {\n classes.push(noChoices);\n } else if (type === 'no-results') {\n classes.push(noResults);\n }\n return Object.assign(document.createElement('div'), (_b = {}, _b[allowHTML ? 'innerHTML' : 'innerText'] = innerText, _b.className = classes.join(' '), _b));\n },\n option: function (_a) {\n var label = _a.label,\n value = _a.value,\n customProperties = _a.customProperties,\n active = _a.active,\n disabled = _a.disabled;\n var opt = new Option(label, value, false, active);\n if (customProperties) {\n opt.dataset.customProperties = \"\".concat(customProperties);\n }\n opt.disabled = !!disabled;\n return opt;\n }\n};\nexports[\"default\"] = templates;\n\n/***/ }),\n\n/***/ 996:\n/***/ (function(module) {\n\n\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n\n\n/***/ }),\n\n/***/ 221:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ Fuse; }\n/* harmony export */ });\n/**\n * Fuse.js v6.6.2 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2022 Kiro Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nfunction isArray(value) {\n return !Array.isArray\n ? getTag(value) === '[object Array]'\n : Array.isArray(value)\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/baseToString.js\nconst INFINITY = 1 / 0;\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value\n }\n let result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result\n}\n\nfunction toString(value) {\n return value == null ? '' : baseToString(value)\n}\n\nfunction isString(value) {\n return typeof value === 'string'\n}\n\nfunction isNumber(value) {\n return typeof value === 'number'\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/isBoolean.js\nfunction isBoolean(value) {\n return (\n value === true ||\n value === false ||\n (isObjectLike(value) && getTag(value) == '[object Boolean]')\n )\n}\n\nfunction isObject(value) {\n return typeof value === 'object'\n}\n\n// Checks if `value` is object-like.\nfunction isObjectLike(value) {\n return isObject(value) && value !== null\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null\n}\n\nfunction isBlank(value) {\n return !value.trim().length\n}\n\n// Gets the `toStringTag` of `value`.\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/getTag.js\nfunction getTag(value) {\n return value == null\n ? value === undefined\n ? '[object Undefined]'\n : '[object Null]'\n : Object.prototype.toString.call(value)\n}\n\nconst EXTENDED_SEARCH_UNAVAILABLE = 'Extended search is not available';\n\nconst INCORRECT_INDEX_TYPE = \"Incorrect 'index' type\";\n\nconst LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = (key) =>\n `Invalid value for key ${key}`;\n\nconst PATTERN_LENGTH_TOO_LARGE = (max) =>\n `Pattern length exceeds max of ${max}.`;\n\nconst MISSING_KEY_PROPERTY = (name) => `Missing ${name} property in key`;\n\nconst INVALID_KEY_WEIGHT_VALUE = (key) =>\n `Property 'weight' in key '${key}' must be a positive integer`;\n\nconst hasOwn = Object.prototype.hasOwnProperty;\n\nclass KeyStore {\n constructor(keys) {\n this._keys = [];\n this._keyMap = {};\n\n let totalWeight = 0;\n\n keys.forEach((key) => {\n let obj = createKey(key);\n\n totalWeight += obj.weight;\n\n this._keys.push(obj);\n this._keyMap[obj.id] = obj;\n\n totalWeight += obj.weight;\n });\n\n // Normalize weights so that their sum is equal to 1\n this._keys.forEach((key) => {\n key.weight /= totalWeight;\n });\n }\n get(keyId) {\n return this._keyMap[keyId]\n }\n keys() {\n return this._keys\n }\n toJSON() {\n return JSON.stringify(this._keys)\n }\n}\n\nfunction createKey(key) {\n let path = null;\n let id = null;\n let src = null;\n let weight = 1;\n let getFn = null;\n\n if (isString(key) || isArray(key)) {\n src = key;\n path = createKeyPath(key);\n id = createKeyId(key);\n } else {\n if (!hasOwn.call(key, 'name')) {\n throw new Error(MISSING_KEY_PROPERTY('name'))\n }\n\n const name = key.name;\n src = name;\n\n if (hasOwn.call(key, 'weight')) {\n weight = key.weight;\n\n if (weight <= 0) {\n throw new Error(INVALID_KEY_WEIGHT_VALUE(name))\n }\n }\n\n path = createKeyPath(name);\n id = createKeyId(name);\n getFn = key.getFn;\n }\n\n return { path, id, weight, src, getFn }\n}\n\nfunction createKeyPath(key) {\n return isArray(key) ? key : key.split('.')\n}\n\nfunction createKeyId(key) {\n return isArray(key) ? key.join('.') : key\n}\n\nfunction get(obj, path) {\n let list = [];\n let arr = false;\n\n const deepGet = (obj, path, index) => {\n if (!isDefined(obj)) {\n return\n }\n if (!path[index]) {\n // If there's no path left, we've arrived at the object we care about.\n list.push(obj);\n } else {\n let key = path[index];\n\n const value = obj[key];\n\n if (!isDefined(value)) {\n return\n }\n\n // If we're at the last value in the path, and if it's a string/number/bool,\n // add it to the list\n if (\n index === path.length - 1 &&\n (isString(value) || isNumber(value) || isBoolean(value))\n ) {\n list.push(toString(value));\n } else if (isArray(value)) {\n arr = true;\n // Search each item in the array.\n for (let i = 0, len = value.length; i < len; i += 1) {\n deepGet(value[i], path, index + 1);\n }\n } else if (path.length) {\n // An object. Recurse further.\n deepGet(value, path, index + 1);\n }\n }\n };\n\n // Backwards compatibility (since path used to be a string)\n deepGet(obj, isString(path) ? path.split('.') : path, 0);\n\n return arr ? list : list[0]\n}\n\nconst MatchOptions = {\n // Whether the matches should be included in the result set. When `true`, each record in the result\n // set will include the indices of the matched characters.\n // These can consequently be used for highlighting purposes.\n includeMatches: false,\n // When `true`, the matching function will continue to the end of a search pattern even if\n // a perfect match has already been located in the string.\n findAllMatches: false,\n // Minimum number of characters that must be matched before a result is considered a match\n minMatchCharLength: 1\n};\n\nconst BasicOptions = {\n // When `true`, the algorithm continues searching to the end of the input even if a perfect\n // match is found before the end of the same input.\n isCaseSensitive: false,\n // When true, the matching function will continue to the end of a search pattern even if\n includeScore: false,\n // List of properties that will be searched. This also supports nested properties.\n keys: [],\n // Whether to sort the result list, by score\n shouldSort: true,\n // Default sort function: sort by ascending score, ascending index\n sortFn: (a, b) =>\n a.score === b.score ? (a.idx < b.idx ? -1 : 1) : a.score < b.score ? -1 : 1\n};\n\nconst FuzzyOptions = {\n // Approximately where in the text is the pattern expected to be found?\n location: 0,\n // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n // (of both letters and location), a threshold of '1.0' would match anything.\n threshold: 0.6,\n // Determines how close the match must be to the fuzzy location (specified above).\n // An exact letter match which is 'distance' characters away from the fuzzy location\n // would score as a complete mismatch. A distance of '0' requires the match be at\n // the exact location specified, a threshold of '1000' would require a perfect match\n // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n distance: 100\n};\n\nconst AdvancedOptions = {\n // When `true`, it enables the use of unix-like search commands\n useExtendedSearch: false,\n // The get function to use when fetching an object's properties.\n // The default will search nested paths *ie foo.bar.baz*\n getFn: get,\n // When `true`, search will ignore `location` and `distance`, so it won't matter\n // where in the string the pattern appears.\n // More info: https://fusejs.io/concepts/scoring-theory.html#fuzziness-score\n ignoreLocation: false,\n // When `true`, the calculation for the relevance score (used for sorting) will\n // ignore the field-length norm.\n // More info: https://fusejs.io/concepts/scoring-theory.html#field-length-norm\n ignoreFieldNorm: false,\n // The weight to determine how much field length norm effects scoring.\n fieldNormWeight: 1\n};\n\nvar Config = {\n ...BasicOptions,\n ...MatchOptions,\n ...FuzzyOptions,\n ...AdvancedOptions\n};\n\nconst SPACE = /[^ ]+/g;\n\n// Field-length norm: the shorter the field, the higher the weight.\n// Set to 3 decimals to reduce index size.\nfunction norm(weight = 1, mantissa = 3) {\n const cache = new Map();\n const m = Math.pow(10, mantissa);\n\n return {\n get(value) {\n const numTokens = value.match(SPACE).length;\n\n if (cache.has(numTokens)) {\n return cache.get(numTokens)\n }\n\n // Default function is 1/sqrt(x), weight makes that variable\n const norm = 1 / Math.pow(numTokens, 0.5 * weight);\n\n // In place of `toFixed(mantissa)`, for faster computation\n const n = parseFloat(Math.round(norm * m) / m);\n\n cache.set(numTokens, n);\n\n return n\n },\n clear() {\n cache.clear();\n }\n }\n}\n\nclass FuseIndex {\n constructor({\n getFn = Config.getFn,\n fieldNormWeight = Config.fieldNormWeight\n } = {}) {\n this.norm = norm(fieldNormWeight, 3);\n this.getFn = getFn;\n this.isCreated = false;\n\n this.setIndexRecords();\n }\n setSources(docs = []) {\n this.docs = docs;\n }\n setIndexRecords(records = []) {\n this.records = records;\n }\n setKeys(keys = []) {\n this.keys = keys;\n this._keysMap = {};\n keys.forEach((key, idx) => {\n this._keysMap[key.id] = idx;\n });\n }\n create() {\n if (this.isCreated || !this.docs.length) {\n return\n }\n\n this.isCreated = true;\n\n // List is Array\n if (isString(this.docs[0])) {\n this.docs.forEach((doc, docIndex) => {\n this._addString(doc, docIndex);\n });\n } else {\n // List is Array\n this.docs.forEach((doc, docIndex) => {\n this._addObject(doc, docIndex);\n });\n }\n\n this.norm.clear();\n }\n // Adds a doc to the end of the index\n add(doc) {\n const idx = this.size();\n\n if (isString(doc)) {\n this._addString(doc, idx);\n } else {\n this._addObject(doc, idx);\n }\n }\n // Removes the doc at the specified index of the index\n removeAt(idx) {\n this.records.splice(idx, 1);\n\n // Change ref index of every subsquent doc\n for (let i = idx, len = this.size(); i < len; i += 1) {\n this.records[i].i -= 1;\n }\n }\n getValueForItemAtKeyId(item, keyId) {\n return item[this._keysMap[keyId]]\n }\n size() {\n return this.records.length\n }\n _addString(doc, docIndex) {\n if (!isDefined(doc) || isBlank(doc)) {\n return\n }\n\n let record = {\n v: doc,\n i: docIndex,\n n: this.norm.get(doc)\n };\n\n this.records.push(record);\n }\n _addObject(doc, docIndex) {\n let record = { i: docIndex, $: {} };\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n this.keys.forEach((key, keyIndex) => {\n let value = key.getFn ? key.getFn(doc) : this.getFn(doc, key.path);\n\n if (!isDefined(value)) {\n return\n }\n\n if (isArray(value)) {\n let subRecords = [];\n const stack = [{ nestedArrIndex: -1, value }];\n\n while (stack.length) {\n const { nestedArrIndex, value } = stack.pop();\n\n if (!isDefined(value)) {\n continue\n }\n\n if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n i: nestedArrIndex,\n n: this.norm.get(value)\n };\n\n subRecords.push(subRecord);\n } else if (isArray(value)) {\n value.forEach((item, k) => {\n stack.push({\n nestedArrIndex: k,\n value: item\n });\n });\n } else ;\n }\n record.$[keyIndex] = subRecords;\n } else if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n n: this.norm.get(value)\n };\n\n record.$[keyIndex] = subRecord;\n }\n });\n\n this.records.push(record);\n }\n toJSON() {\n return {\n keys: this.keys,\n records: this.records\n }\n }\n}\n\nfunction createIndex(\n keys,\n docs,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys.map(createKey));\n myIndex.setSources(docs);\n myIndex.create();\n return myIndex\n}\n\nfunction parseIndex(\n data,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const { keys, records } = data;\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys);\n myIndex.setIndexRecords(records);\n return myIndex\n}\n\nfunction computeScore$1(\n pattern,\n {\n errors = 0,\n currentLocation = 0,\n expectedLocation = 0,\n distance = Config.distance,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n const accuracy = errors / pattern.length;\n\n if (ignoreLocation) {\n return accuracy\n }\n\n const proximity = Math.abs(expectedLocation - currentLocation);\n\n if (!distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy\n }\n\n return accuracy + proximity / distance\n}\n\nfunction convertMaskToIndices(\n matchmask = [],\n minMatchCharLength = Config.minMatchCharLength\n) {\n let indices = [];\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (let len = matchmask.length; i < len; i += 1) {\n let match = matchmask[i];\n if (match && start === -1) {\n start = i;\n } else if (!match && start !== -1) {\n end = i - 1;\n if (end - start + 1 >= minMatchCharLength) {\n indices.push([start, end]);\n }\n start = -1;\n }\n }\n\n // (i-1 - start) + 1 => i - start\n if (matchmask[i - 1] && i - start >= minMatchCharLength) {\n indices.push([start, i - 1]);\n }\n\n return indices\n}\n\n// Machine word size\nconst MAX_BITS = 32;\n\nfunction search(\n text,\n pattern,\n patternAlphabet,\n {\n location = Config.location,\n distance = Config.distance,\n threshold = Config.threshold,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n includeMatches = Config.includeMatches,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n if (pattern.length > MAX_BITS) {\n throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS))\n }\n\n const patternLen = pattern.length;\n // Set starting location at beginning text and initialize the alphabet.\n const textLen = text.length;\n // Handle the case when location > text.length\n const expectedLocation = Math.max(0, Math.min(location, textLen));\n // Highest score beyond which we give up.\n let currentThreshold = threshold;\n // Is there a nearby exact match? (speedup)\n let bestLocation = expectedLocation;\n\n // Performance: only computer matches when the minMatchCharLength > 1\n // OR if `includeMatches` is true.\n const computeMatches = minMatchCharLength > 1 || includeMatches;\n // A mask of the matches, used for building the indices\n const matchMask = computeMatches ? Array(textLen) : [];\n\n let index;\n\n // Get all exact matches, here for speed up\n while ((index = text.indexOf(pattern, bestLocation)) > -1) {\n let score = computeScore$1(pattern, {\n currentLocation: index,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n currentThreshold = Math.min(score, currentThreshold);\n bestLocation = index + patternLen;\n\n if (computeMatches) {\n let i = 0;\n while (i < patternLen) {\n matchMask[index + i] = 1;\n i += 1;\n }\n }\n }\n\n // Reset the best location\n bestLocation = -1;\n\n let lastBitArr = [];\n let finalScore = 1;\n let binMax = patternLen + textLen;\n\n const mask = 1 << (patternLen - 1);\n\n for (let i = 0; i < patternLen; i += 1) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from the match location we can stray\n // at this error level.\n let binMin = 0;\n let binMid = binMax;\n\n while (binMin < binMid) {\n const score = computeScore$1(pattern, {\n errors: i,\n currentLocation: expectedLocation + binMid,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score <= currentThreshold) {\n binMin = binMid;\n } else {\n binMax = binMid;\n }\n\n binMid = Math.floor((binMax - binMin) / 2 + binMin);\n }\n\n // Use the result from this iteration as the maximum for the next.\n binMax = binMid;\n\n let start = Math.max(1, expectedLocation - binMid + 1);\n let finish = findAllMatches\n ? textLen\n : Math.min(expectedLocation + binMid, textLen) + patternLen;\n\n // Initialize the bit array\n let bitArr = Array(finish + 2);\n\n bitArr[finish + 1] = (1 << i) - 1;\n\n for (let j = finish; j >= start; j -= 1) {\n let currentLocation = j - 1;\n let charMatch = patternAlphabet[text.charAt(currentLocation)];\n\n if (computeMatches) {\n // Speed up: quick bool to int conversion (i.e, `charMatch ? 1 : 0`)\n matchMask[currentLocation] = +!!charMatch;\n }\n\n // First pass: exact match\n bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch;\n\n // Subsequent passes: fuzzy match\n if (i) {\n bitArr[j] |=\n ((lastBitArr[j + 1] | lastBitArr[j]) << 1) | 1 | lastBitArr[j + 1];\n }\n\n if (bitArr[j] & mask) {\n finalScore = computeScore$1(pattern, {\n errors: i,\n currentLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (finalScore <= currentThreshold) {\n // Indeed it is\n currentThreshold = finalScore;\n bestLocation = currentLocation;\n\n // Already passed `loc`, downhill from here on in.\n if (bestLocation <= expectedLocation) {\n break\n }\n\n // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.\n start = Math.max(1, 2 * expectedLocation - bestLocation);\n }\n }\n }\n\n // No hope for a (better) match at greater error levels.\n const score = computeScore$1(pattern, {\n errors: i + 1,\n currentLocation: expectedLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score > currentThreshold) {\n break\n }\n\n lastBitArr = bitArr;\n }\n\n const result = {\n isMatch: bestLocation >= 0,\n // Count exact matches (those with a score of 0) to be \"almost\" exact\n score: Math.max(0.001, finalScore)\n };\n\n if (computeMatches) {\n const indices = convertMaskToIndices(matchMask, minMatchCharLength);\n if (!indices.length) {\n result.isMatch = false;\n } else if (includeMatches) {\n result.indices = indices;\n }\n }\n\n return result\n}\n\nfunction createPatternAlphabet(pattern) {\n let mask = {};\n\n for (let i = 0, len = pattern.length; i < len; i += 1) {\n const char = pattern.charAt(i);\n mask[char] = (mask[char] || 0) | (1 << (len - i - 1));\n }\n\n return mask\n}\n\nclass BitapSearch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n this.options = {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n\n this.chunks = [];\n\n if (!this.pattern.length) {\n return\n }\n\n const addChunk = (pattern, startIndex) => {\n this.chunks.push({\n pattern,\n alphabet: createPatternAlphabet(pattern),\n startIndex\n });\n };\n\n const len = this.pattern.length;\n\n if (len > MAX_BITS) {\n let i = 0;\n const remainder = len % MAX_BITS;\n const end = len - remainder;\n\n while (i < end) {\n addChunk(this.pattern.substr(i, MAX_BITS), i);\n i += MAX_BITS;\n }\n\n if (remainder) {\n const startIndex = len - MAX_BITS;\n addChunk(this.pattern.substr(startIndex), startIndex);\n }\n } else {\n addChunk(this.pattern, 0);\n }\n }\n\n searchIn(text) {\n const { isCaseSensitive, includeMatches } = this.options;\n\n if (!isCaseSensitive) {\n text = text.toLowerCase();\n }\n\n // Exact match\n if (this.pattern === text) {\n let result = {\n isMatch: true,\n score: 0\n };\n\n if (includeMatches) {\n result.indices = [[0, text.length - 1]];\n }\n\n return result\n }\n\n // Otherwise, use Bitap algorithm\n const {\n location,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n ignoreLocation\n } = this.options;\n\n let allIndices = [];\n let totalScore = 0;\n let hasMatches = false;\n\n this.chunks.forEach(({ pattern, alphabet, startIndex }) => {\n const { isMatch, score, indices } = search(text, pattern, alphabet, {\n location: location + startIndex,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n includeMatches,\n ignoreLocation\n });\n\n if (isMatch) {\n hasMatches = true;\n }\n\n totalScore += score;\n\n if (isMatch && indices) {\n allIndices = [...allIndices, ...indices];\n }\n });\n\n let result = {\n isMatch: hasMatches,\n score: hasMatches ? totalScore / this.chunks.length : 1\n };\n\n if (hasMatches && includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n}\n\nclass BaseMatch {\n constructor(pattern) {\n this.pattern = pattern;\n }\n static isMultiMatch(pattern) {\n return getMatch(pattern, this.multiRegex)\n }\n static isSingleMatch(pattern) {\n return getMatch(pattern, this.singleRegex)\n }\n search(/*text*/) {}\n}\n\nfunction getMatch(pattern, exp) {\n const matches = pattern.match(exp);\n return matches ? matches[1] : null\n}\n\n// Token: 'file\n\nclass ExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'exact'\n }\n static get multiRegex() {\n return /^=\"(.*)\"$/\n }\n static get singleRegex() {\n return /^=(.*)$/\n }\n search(text) {\n const isMatch = text === this.pattern;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !fire\n\nclass InverseExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!(.*)$/\n }\n search(text) {\n const index = text.indexOf(this.pattern);\n const isMatch = index === -1;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: ^file\n\nclass PrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'prefix-exact'\n }\n static get multiRegex() {\n return /^\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^\\^(.*)$/\n }\n search(text) {\n const isMatch = text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !^fire\n\nclass InversePrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-prefix-exact'\n }\n static get multiRegex() {\n return /^!\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!\\^(.*)$/\n }\n search(text) {\n const isMatch = !text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: .file$\n\nclass SuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'suffix-exact'\n }\n static get multiRegex() {\n return /^\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^(.*)\\$$/\n }\n search(text) {\n const isMatch = text.endsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [text.length - this.pattern.length, text.length - 1]\n }\n }\n}\n\n// Token: !.file$\n\nclass InverseSuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-suffix-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^!(.*)\\$$/\n }\n search(text) {\n const isMatch = !text.endsWith(this.pattern);\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\nclass FuzzyMatch extends BaseMatch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n super(pattern);\n this._bitapSearch = new BitapSearch(pattern, {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n });\n }\n static get type() {\n return 'fuzzy'\n }\n static get multiRegex() {\n return /^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^(.*)$/\n }\n search(text) {\n return this._bitapSearch.searchIn(text)\n }\n}\n\n// Token: 'file\n\nclass IncludeMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'include'\n }\n static get multiRegex() {\n return /^'\"(.*)\"$/\n }\n static get singleRegex() {\n return /^'(.*)$/\n }\n search(text) {\n let location = 0;\n let index;\n\n const indices = [];\n const patternLen = this.pattern.length;\n\n // Get all exact matches\n while ((index = text.indexOf(this.pattern, location)) > -1) {\n location = index + patternLen;\n indices.push([index, location - 1]);\n }\n\n const isMatch = !!indices.length;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices\n }\n }\n}\n\n// ❗Order is important. DO NOT CHANGE.\nconst searchers = [\n ExactMatch,\n IncludeMatch,\n PrefixExactMatch,\n InversePrefixExactMatch,\n InverseSuffixExactMatch,\n SuffixExactMatch,\n InverseExactMatch,\n FuzzyMatch\n];\n\nconst searchersLen = searchers.length;\n\n// Regex to split by spaces, but keep anything in quotes together\nconst SPACE_RE = / +(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)/;\nconst OR_TOKEN = '|';\n\n// Return a 2D array representation of the query, for simpler parsing.\n// Example:\n// \"^core go$ | rb$ | py$ xy$\" => [[\"^core\", \"go$\"], [\"rb$\"], [\"py$\", \"xy$\"]]\nfunction parseQuery(pattern, options = {}) {\n return pattern.split(OR_TOKEN).map((item) => {\n let query = item\n .trim()\n .split(SPACE_RE)\n .filter((item) => item && !!item.trim());\n\n let results = [];\n for (let i = 0, len = query.length; i < len; i += 1) {\n const queryItem = query[i];\n\n // 1. Handle multiple query match (i.e, once that are quoted, like `\"hello world\"`)\n let found = false;\n let idx = -1;\n while (!found && ++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isMultiMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n found = true;\n }\n }\n\n if (found) {\n continue\n }\n\n // 2. Handle single query matches (i.e, once that are *not* quoted)\n idx = -1;\n while (++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isSingleMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n break\n }\n }\n }\n\n return results\n })\n}\n\n// These extended matchers can return an array of matches, as opposed\n// to a singl match\nconst MultiMatchSet = new Set([FuzzyMatch.type, IncludeMatch.type]);\n\n/**\n * Command-like searching\n * ======================\n *\n * Given multiple search terms delimited by spaces.e.g. `^jscript .python$ ruby !java`,\n * search in a given text.\n *\n * Search syntax:\n *\n * | Token | Match type | Description |\n * | ----------- | -------------------------- | -------------------------------------- |\n * | `jscript` | fuzzy-match | Items that fuzzy match `jscript` |\n * | `=scheme` | exact-match | Items that are `scheme` |\n * | `'python` | include-match | Items that include `python` |\n * | `!ruby` | inverse-exact-match | Items that do not include `ruby` |\n * | `^java` | prefix-exact-match | Items that start with `java` |\n * | `!^earlang` | inverse-prefix-exact-match | Items that do not start with `earlang` |\n * | `.js$` | suffix-exact-match | Items that end with `.js` |\n * | `!.go$` | inverse-suffix-exact-match | Items that do not end with `.go` |\n *\n * A single pipe character acts as an OR operator. For example, the following\n * query matches entries that start with `core` and end with either`go`, `rb`,\n * or`py`.\n *\n * ```\n * ^core go$ | rb$ | py$\n * ```\n */\nclass ExtendedSearch {\n constructor(\n pattern,\n {\n isCaseSensitive = Config.isCaseSensitive,\n includeMatches = Config.includeMatches,\n minMatchCharLength = Config.minMatchCharLength,\n ignoreLocation = Config.ignoreLocation,\n findAllMatches = Config.findAllMatches,\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance\n } = {}\n ) {\n this.query = null;\n this.options = {\n isCaseSensitive,\n includeMatches,\n minMatchCharLength,\n findAllMatches,\n ignoreLocation,\n location,\n threshold,\n distance\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n this.query = parseQuery(this.pattern, this.options);\n }\n\n static condition(_, options) {\n return options.useExtendedSearch\n }\n\n searchIn(text) {\n const query = this.query;\n\n if (!query) {\n return {\n isMatch: false,\n score: 1\n }\n }\n\n const { includeMatches, isCaseSensitive } = this.options;\n\n text = isCaseSensitive ? text : text.toLowerCase();\n\n let numMatches = 0;\n let allIndices = [];\n let totalScore = 0;\n\n // ORs\n for (let i = 0, qLen = query.length; i < qLen; i += 1) {\n const searchers = query[i];\n\n // Reset indices\n allIndices.length = 0;\n numMatches = 0;\n\n // ANDs\n for (let j = 0, pLen = searchers.length; j < pLen; j += 1) {\n const searcher = searchers[j];\n const { isMatch, indices, score } = searcher.search(text);\n\n if (isMatch) {\n numMatches += 1;\n totalScore += score;\n if (includeMatches) {\n const type = searcher.constructor.type;\n if (MultiMatchSet.has(type)) {\n allIndices = [...allIndices, ...indices];\n } else {\n allIndices.push(indices);\n }\n }\n } else {\n totalScore = 0;\n numMatches = 0;\n allIndices.length = 0;\n break\n }\n }\n\n // OR condition, so if TRUE, return\n if (numMatches) {\n let result = {\n isMatch: true,\n score: totalScore / numMatches\n };\n\n if (includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n }\n\n // Nothing was matched\n return {\n isMatch: false,\n score: 1\n }\n }\n}\n\nconst registeredSearchers = [];\n\nfunction register(...args) {\n registeredSearchers.push(...args);\n}\n\nfunction createSearcher(pattern, options) {\n for (let i = 0, len = registeredSearchers.length; i < len; i += 1) {\n let searcherClass = registeredSearchers[i];\n if (searcherClass.condition(pattern, options)) {\n return new searcherClass(pattern, options)\n }\n }\n\n return new BitapSearch(pattern, options)\n}\n\nconst LogicalOperator = {\n AND: '$and',\n OR: '$or'\n};\n\nconst KeyType = {\n PATH: '$path',\n PATTERN: '$val'\n};\n\nconst isExpression = (query) =>\n !!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);\n\nconst isPath = (query) => !!query[KeyType.PATH];\n\nconst isLeaf = (query) =>\n !isArray(query) && isObject(query) && !isExpression(query);\n\nconst convertToExplicit = (query) => ({\n [LogicalOperator.AND]: Object.keys(query).map((key) => ({\n [key]: query[key]\n }))\n});\n\n// When `auto` is `true`, the parse function will infer and initialize and add\n// the appropriate `Searcher` instance\nfunction parse(query, options, { auto = true } = {}) {\n const next = (query) => {\n let keys = Object.keys(query);\n\n const isQueryPath = isPath(query);\n\n if (!isQueryPath && keys.length > 1 && !isExpression(query)) {\n return next(convertToExplicit(query))\n }\n\n if (isLeaf(query)) {\n const key = isQueryPath ? query[KeyType.PATH] : keys[0];\n\n const pattern = isQueryPath ? query[KeyType.PATTERN] : query[key];\n\n if (!isString(pattern)) {\n throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key))\n }\n\n const obj = {\n keyId: createKeyId(key),\n pattern\n };\n\n if (auto) {\n obj.searcher = createSearcher(pattern, options);\n }\n\n return obj\n }\n\n let node = {\n children: [],\n operator: keys[0]\n };\n\n keys.forEach((key) => {\n const value = query[key];\n\n if (isArray(value)) {\n value.forEach((item) => {\n node.children.push(next(item));\n });\n }\n });\n\n return node\n };\n\n if (!isExpression(query)) {\n query = convertToExplicit(query);\n }\n\n return next(query)\n}\n\n// Practical scoring function\nfunction computeScore(\n results,\n { ignoreFieldNorm = Config.ignoreFieldNorm }\n) {\n results.forEach((result) => {\n let totalScore = 1;\n\n result.matches.forEach(({ key, norm, score }) => {\n const weight = key ? key.weight : null;\n\n totalScore *= Math.pow(\n score === 0 && weight ? Number.EPSILON : score,\n (weight || 1) * (ignoreFieldNorm ? 1 : norm)\n );\n });\n\n result.score = totalScore;\n });\n}\n\nfunction transformMatches(result, data) {\n const matches = result.matches;\n data.matches = [];\n\n if (!isDefined(matches)) {\n return\n }\n\n matches.forEach((match) => {\n if (!isDefined(match.indices) || !match.indices.length) {\n return\n }\n\n const { indices, value } = match;\n\n let obj = {\n indices,\n value\n };\n\n if (match.key) {\n obj.key = match.key.src;\n }\n\n if (match.idx > -1) {\n obj.refIndex = match.idx;\n }\n\n data.matches.push(obj);\n });\n}\n\nfunction transformScore(result, data) {\n data.score = result.score;\n}\n\nfunction format(\n results,\n docs,\n {\n includeMatches = Config.includeMatches,\n includeScore = Config.includeScore\n } = {}\n) {\n const transformers = [];\n\n if (includeMatches) transformers.push(transformMatches);\n if (includeScore) transformers.push(transformScore);\n\n return results.map((result) => {\n const { idx } = result;\n\n const data = {\n item: docs[idx],\n refIndex: idx\n };\n\n if (transformers.length) {\n transformers.forEach((transformer) => {\n transformer(result, data);\n });\n }\n\n return data\n })\n}\n\nclass Fuse {\n constructor(docs, options = {}, index) {\n this.options = { ...Config, ...options };\n\n if (\n this.options.useExtendedSearch &&\n !true\n ) {}\n\n this._keyStore = new KeyStore(this.options.keys);\n\n this.setCollection(docs, index);\n }\n\n setCollection(docs, index) {\n this._docs = docs;\n\n if (index && !(index instanceof FuseIndex)) {\n throw new Error(INCORRECT_INDEX_TYPE)\n }\n\n this._myIndex =\n index ||\n createIndex(this.options.keys, this._docs, {\n getFn: this.options.getFn,\n fieldNormWeight: this.options.fieldNormWeight\n });\n }\n\n add(doc) {\n if (!isDefined(doc)) {\n return\n }\n\n this._docs.push(doc);\n this._myIndex.add(doc);\n }\n\n remove(predicate = (/* doc, idx */) => false) {\n const results = [];\n\n for (let i = 0, len = this._docs.length; i < len; i += 1) {\n const doc = this._docs[i];\n if (predicate(doc, i)) {\n this.removeAt(i);\n i -= 1;\n len -= 1;\n\n results.push(doc);\n }\n }\n\n return results\n }\n\n removeAt(idx) {\n this._docs.splice(idx, 1);\n this._myIndex.removeAt(idx);\n }\n\n getIndex() {\n return this._myIndex\n }\n\n search(query, { limit = -1 } = {}) {\n const {\n includeMatches,\n includeScore,\n shouldSort,\n sortFn,\n ignoreFieldNorm\n } = this.options;\n\n let results = isString(query)\n ? isString(this._docs[0])\n ? this._searchStringList(query)\n : this._searchObjectList(query)\n : this._searchLogical(query);\n\n computeScore(results, { ignoreFieldNorm });\n\n if (shouldSort) {\n results.sort(sortFn);\n }\n\n if (isNumber(limit) && limit > -1) {\n results = results.slice(0, limit);\n }\n\n return format(results, this._docs, {\n includeMatches,\n includeScore\n })\n }\n\n _searchStringList(query) {\n const searcher = createSearcher(query, this.options);\n const { records } = this._myIndex;\n const results = [];\n\n // Iterate over every string in the index\n records.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n results.push({\n item: text,\n idx,\n matches: [{ score, value: text, norm, indices }]\n });\n }\n });\n\n return results\n }\n\n _searchLogical(query) {\n\n const expression = parse(query, this.options);\n\n const evaluate = (node, item, idx) => {\n if (!node.children) {\n const { keyId, searcher } = node;\n\n const matches = this._findMatches({\n key: this._keyStore.get(keyId),\n value: this._myIndex.getValueForItemAtKeyId(item, keyId),\n searcher\n });\n\n if (matches && matches.length) {\n return [\n {\n idx,\n item,\n matches\n }\n ]\n }\n\n return []\n }\n\n const res = [];\n for (let i = 0, len = node.children.length; i < len; i += 1) {\n const child = node.children[i];\n const result = evaluate(child, item, idx);\n if (result.length) {\n res.push(...result);\n } else if (node.operator === LogicalOperator.AND) {\n return []\n }\n }\n return res\n };\n\n const records = this._myIndex.records;\n const resultMap = {};\n const results = [];\n\n records.forEach(({ $: item, i: idx }) => {\n if (isDefined(item)) {\n let expResults = evaluate(expression, item, idx);\n\n if (expResults.length) {\n // Dedupe when adding\n if (!resultMap[idx]) {\n resultMap[idx] = { idx, item, matches: [] };\n results.push(resultMap[idx]);\n }\n expResults.forEach(({ matches }) => {\n resultMap[idx].matches.push(...matches);\n });\n }\n }\n });\n\n return results\n }\n\n _searchObjectList(query) {\n const searcher = createSearcher(query, this.options);\n const { keys, records } = this._myIndex;\n const results = [];\n\n // List is Array\n records.forEach(({ $: item, i: idx }) => {\n if (!isDefined(item)) {\n return\n }\n\n let matches = [];\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n keys.forEach((key, keyIndex) => {\n matches.push(\n ...this._findMatches({\n key,\n value: item[keyIndex],\n searcher\n })\n );\n });\n\n if (matches.length) {\n results.push({\n idx,\n item,\n matches\n });\n }\n });\n\n return results\n }\n _findMatches({ key, value, searcher }) {\n if (!isDefined(value)) {\n return []\n }\n\n let matches = [];\n\n if (isArray(value)) {\n value.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({\n score,\n key,\n value: text,\n idx,\n norm,\n indices\n });\n }\n });\n } else {\n const { v: text, n: norm } = value;\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({ score, key, value: text, norm, indices });\n }\n }\n\n return matches\n }\n}\n\nFuse.version = '6.6.2';\nFuse.createIndex = createIndex;\nFuse.parseIndex = parseIndex;\nFuse.config = Config;\n\n{\n Fuse.parseQuery = parse;\n}\n\n{\n register(ExtendedSearch);\n}\n\n\n\n\n/***/ }),\n\n/***/ 791:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"__DO_NOT_USE__ActionTypes\": function() { return /* binding */ ActionTypes; },\n \"applyMiddleware\": function() { return /* binding */ applyMiddleware; },\n \"bindActionCreators\": function() { return /* binding */ bindActionCreators; },\n \"combineReducers\": function() { return /* binding */ combineReducers; },\n \"compose\": function() { return /* binding */ compose; },\n \"createStore\": function() { return /* binding */ createStore; },\n \"legacy_createStore\": function() { return /* binding */ legacy_createStore; }\n});\n\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toPrimitive.js\n\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js\n\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\n;// CONCATENATED MODULE: ./node_modules/redux/es/redux.js\n\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (false) {}\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error( true ? formatProdErrorMessage(0) : 0);\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error( true ? formatProdErrorMessage(1) : 0);\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error( true ? formatProdErrorMessage(2) : 0);\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(3) : 0);\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error( true ? formatProdErrorMessage(4) : 0);\n }\n\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(5) : 0);\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(6) : 0);\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error( true ? formatProdErrorMessage(7) : 0);\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error( true ? formatProdErrorMessage(8) : 0);\n }\n\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(9) : 0);\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error( true ? formatProdErrorMessage(10) : 0);\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error( true ? formatProdErrorMessage(11) : 0);\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error( true ? formatProdErrorMessage(12) : 0);\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error( true ? formatProdErrorMessage(13) : 0);\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (false) {}\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (false) {}\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (false) { var warningMessage; }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error( true ? formatProdErrorMessage(14) : 0);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error( true ? formatProdErrorMessage(16) : 0);\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error( true ? formatProdErrorMessage(15) : 0);\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2(_objectSpread2({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (false) {}\n\n\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t!function() {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = function(exports) {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n!function() {\n/* harmony import */ var _scripts_choices__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(373);\n/* harmony import */ var _scripts_choices__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_scripts_choices__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _scripts_interfaces__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(187);\n/* harmony import */ var _scripts_interfaces__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_scripts_interfaces__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _scripts_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(883);\n/* harmony import */ var _scripts_defaults__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(789);\n/* harmony import */ var _scripts_templates__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(686);\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((_scripts_choices__WEBPACK_IMPORTED_MODULE_0___default()));\n\n}();\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","/*! lozad.js - v1.16.0 - 2020-09-06\n* https://github.com/ApoorvSaxena/lozad.js\n* Copyright (c) 2020 Apoorv Saxena; Licensed MIT */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.lozad=e()}(this,function(){\"use strict\";\n/**\n * Detect IE browser\n * @const {boolean}\n * @private\n */var g=\"undefined\"!=typeof document&&document.documentMode,f={rootMargin:\"0px\",threshold:0,load:function(t){if(\"picture\"===t.nodeName.toLowerCase()){var e=t.querySelector(\"img\"),r=!1;null===e&&(e=document.createElement(\"img\"),r=!0),g&&t.getAttribute(\"data-iesrc\")&&(e.src=t.getAttribute(\"data-iesrc\")),t.getAttribute(\"data-alt\")&&(e.alt=t.getAttribute(\"data-alt\")),r&&t.append(e)}if(\"video\"===t.nodeName.toLowerCase()&&!t.getAttribute(\"data-src\")&&t.children){for(var a=t.children,o=void 0,i=0;i<=a.length-1;i++)(o=a[i].getAttribute(\"data-src\"))&&(a[i].src=o);t.load()}t.getAttribute(\"data-poster\")&&(t.poster=t.getAttribute(\"data-poster\")),t.getAttribute(\"data-src\")&&(t.src=t.getAttribute(\"data-src\")),t.getAttribute(\"data-srcset\")&&t.setAttribute(\"srcset\",t.getAttribute(\"data-srcset\"));var n=\",\";if(t.getAttribute(\"data-background-delimiter\")&&(n=t.getAttribute(\"data-background-delimiter\")),t.getAttribute(\"data-background-image\"))t.style.backgroundImage=\"url('\"+t.getAttribute(\"data-background-image\").split(n).join(\"'),url('\")+\"')\";else if(t.getAttribute(\"data-background-image-set\")){var d=t.getAttribute(\"data-background-image-set\").split(n),u=d[0].substr(0,d[0].indexOf(\" \"))||d[0];// Substring before ... 1x\nu=-1===u.indexOf(\"url(\")?\"url(\"+u+\")\":u,1===d.length?t.style.backgroundImage=u:t.setAttribute(\"style\",(t.getAttribute(\"style\")||\"\")+\"background-image: \"+u+\"; background-image: -webkit-image-set(\"+d+\"); background-image: image-set(\"+d+\")\")}t.getAttribute(\"data-toggle-class\")&&t.classList.toggle(t.getAttribute(\"data-toggle-class\"))},loaded:function(){}};function A(t){t.setAttribute(\"data-loaded\",!0)}var m=function(t){return\"true\"===t.getAttribute(\"data-loaded\")},v=function(t){var e=1