{"version":3,"file":"scripts.js","mappings":"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","sources":["webpack://launchpad/./src/2-core-elements/Buttons/stopDisabledLinksFiring.js","webpack://launchpad/./src/2-core-elements/Tables/TableWrapper.js","webpack://launchpad/./src/3-components/BackToTop/BackToTop.ts","webpack://launchpad/./src/3-components/UTMTracker/UTMTracker.ts","webpack://launchpad/./node_modules/choices.js/public/assets/scripts/choices.js","webpack://launchpad/./node_modules/iframe-resizer/index.js","webpack://launchpad/./node_modules/iframe-resizer/js/iframeResizer.contentWindow.js","webpack://launchpad/./node_modules/iframe-resizer/js/iframeResizer.js","webpack://launchpad/./node_modules/lodash.camelcase/index.js","webpack://launchpad/./node_modules/lodash.debounce/index.js","webpack://launchpad/./node_modules/lodash.kebabcase/index.js","webpack://launchpad/./src/assets/icons/chevron-down.svg","webpack://launchpad/./src/assets/icons/globe.svg","webpack://launchpad/webpack/bootstrap","webpack://launchpad/webpack/runtime/compat get default export","webpack://launchpad/webpack/runtime/define property getters","webpack://launchpad/webpack/runtime/global","webpack://launchpad/webpack/runtime/hasOwnProperty shorthand","webpack://launchpad/./src/2-core-elements/Accordion/Accordion.ts","webpack://launchpad/./src/js/utils/attachEnterAsClick.js","webpack://launchpad/./src/2-core-elements/Video/Video.ts","webpack://launchpad/./src/2-core-elements/Dropdown/Dropdown.ts","webpack://launchpad/./src/js/utils/ComponentInit.js","webpack://launchpad/./node_modules/micromodal/dist/micromodal.es.js","webpack://launchpad/./src/2-core-elements/core-elements.js","webpack://launchpad/./src/2-core-elements/Video/video-utils.ts","webpack://launchpad/./src/2-core-elements/Dropdown/LanguageSelector.ts","webpack://launchpad/./src/3-components/SocialShare/SocialShare.ts","webpack://launchpad/./src/3-components/Modal/Modal.ts","webpack://launchpad/./node_modules/ssr-window/ssr-window.esm.js","webpack://launchpad/./src/3-components/DynamicIframe/DynamicIframe.ts","webpack://launchpad/./node_modules/swiper/shared/utils.js","webpack://launchpad/./node_modules/swiper/shared/get-support.js","webpack://launchpad/./node_modules/swiper/shared/get-device.js","webpack://launchpad/./node_modules/swiper/shared/get-browser.js","webpack://launchpad/./node_modules/swiper/core/events-emitter.js","webpack://launchpad/./node_modules/swiper/core/update/index.js","webpack://launchpad/./node_modules/swiper/core/update/updateSize.js","webpack://launchpad/./node_modules/swiper/core/update/updateSlides.js","webpack://launchpad/./node_modules/swiper/core/update/updateAutoHeight.js","webpack://launchpad/./node_modules/swiper/core/update/updateSlidesOffset.js","webpack://launchpad/./node_modules/swiper/core/update/updateSlidesProgress.js","webpack://launchpad/./node_modules/swiper/core/update/updateProgress.js","webpack://launchpad/./node_modules/swiper/core/update/updateSlidesClasses.js","webpack://launchpad/./node_modules/swiper/core/update/updateActiveIndex.js","webpack://launchpad/./node_modules/swiper/core/update/updateClickedSlide.js","webpack://launchpad/./node_modules/swiper/core/translate/index.js","webpack://launchpad/./node_modules/swiper/core/translate/getTranslate.js","webpack://launchpad/./node_modules/swiper/core/translate/setTranslate.js","webpack://launchpad/./node_modules/swiper/core/translate/minTranslate.js","webpack://launchpad/./node_modules/swiper/core/translate/maxTranslate.js","webpack://launchpad/./node_modules/swiper/core/translate/translateTo.js","webpack://launchpad/./node_modules/swiper/core/transition/transitionEmit.js","webpack://launchpad/./node_modules/swiper/core/slide/index.js","webpack://launchpad/./node_modules/swiper/core/slide/slideTo.js","webpack://launchpad/./node_modules/swiper/core/slide/slideToLoop.js","webpack://launchpad/./node_modules/swiper/core/slide/slideNext.js","webpack://launchpad/./node_modules/swiper/core/slide/slidePrev.js","webpack://launchpad/./node_modules/swiper/core/slide/slideReset.js","webpack://launchpad/./node_modules/swiper/core/slide/slideToClosest.js","webpack://launchpad/./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack://launchpad/./node_modules/swiper/core/loop/index.js","webpack://launchpad/./node_modules/swiper/core/loop/loopCreate.js","webpack://launchpad/./node_modules/swiper/core/loop/loopFix.js","webpack://launchpad/./node_modules/swiper/core/loop/loopDestroy.js","webpack://launchpad/./node_modules/swiper/core/events/onTouchStart.js","webpack://launchpad/./node_modules/swiper/core/events/onTouchMove.js","webpack://launchpad/./node_modules/swiper/core/events/onTouchEnd.js","webpack://launchpad/./node_modules/swiper/core/events/onResize.js","webpack://launchpad/./node_modules/swiper/core/events/onClick.js","webpack://launchpad/./node_modules/swiper/core/events/onScroll.js","webpack://launchpad/./node_modules/swiper/shared/process-lazy-preloader.js","webpack://launchpad/./node_modules/swiper/core/events/onLoad.js","webpack://launchpad/./node_modules/swiper/core/events/index.js","webpack://launchpad/./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack://launchpad/./node_modules/swiper/core/breakpoints/index.js","webpack://launchpad/./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack://launchpad/./node_modules/swiper/core/defaults.js","webpack://launchpad/./node_modules/swiper/core/moduleExtendParams.js","webpack://launchpad/./node_modules/swiper/core/core.js","webpack://launchpad/./node_modules/swiper/core/transition/index.js","webpack://launchpad/./node_modules/swiper/core/transition/setTransition.js","webpack://launchpad/./node_modules/swiper/core/transition/transitionStart.js","webpack://launchpad/./node_modules/swiper/core/transition/transitionEnd.js","webpack://launchpad/./node_modules/swiper/core/grab-cursor/index.js","webpack://launchpad/./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack://launchpad/./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack://launchpad/./node_modules/swiper/core/check-overflow/index.js","webpack://launchpad/./node_modules/swiper/core/classes/index.js","webpack://launchpad/./node_modules/swiper/core/classes/addClasses.js","webpack://launchpad/./node_modules/swiper/core/classes/removeClasses.js","webpack://launchpad/./node_modules/swiper/core/modules/resize/resize.js","webpack://launchpad/./node_modules/swiper/core/modules/observer/observer.js","webpack://launchpad/./node_modules/swiper/shared/create-element-if-not-defined.js","webpack://launchpad/./node_modules/swiper/modules/navigation/navigation.js","webpack://launchpad/./node_modules/swiper/shared/classes-to-selector.js","webpack://launchpad/./node_modules/swiper/modules/pagination/pagination.js","webpack://launchpad/./src/3-components/Slider/Slider.ts","webpack://launchpad/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://launchpad/./src/3-components/CookieConsent/CookieConsent.ts","webpack://launchpad/./src/3-components/components.ts","webpack://launchpad/./src/3-components/TimelineItem/TimelineItem.ts","webpack://launchpad/./src/4-sections/CardCarousel/CardCarousel.ts","webpack://launchpad/./src/4-sections/Header/Shared/FixedHeader.ts","webpack://launchpad/./src/4-sections/Header/Desktop/MainNav.ts","webpack://launchpad/./src/4-sections/Header/Mobile/MobileNav.ts","webpack://launchpad/./src/4-sections/sections.ts","webpack://launchpad/./src/4-sections/AlertBanner/AlertBanner.ts","webpack://launchpad/./src/4-sections/Header/Shared/HeaderSearch.ts","webpack://launchpad/./src/4-sections/Header/Mobile/NavbarToggler.ts","webpack://launchpad/./src/js/utils/breakpoint.ts","webpack://launchpad/./src/4-sections/Header/Mobile/SearchToggler.ts"],"sourcesContent":["const stopDisabledLinksFiring = () => {\n const links = document.querySelectorAll('a[class*=\"-disabled\"]');\n\n Array.prototype.forEach.call(links, link => {\n link.addEventListener('click', event => {\n event.preventDefault();\n }, false);\n });\n};\n\nstopDisabledLinksFiring();\n","const tableWrapperInit = () => {\n // element that will be wrapped\n const tables = document.querySelectorAll('table');\n\n Array.prototype.forEach.call(tables, table => {\n if (table.parentElement.classList.contains('table-wrapper')) {\n return;\n }\n\n // create wrapper container\n const tableWrapper = document.createElement('div');\n tableWrapper.setAttribute('class', 'table-wrapper');\n\n table.parentNode.insertBefore(tableWrapper, table);\n tableWrapper.appendChild(table);\n });\n};\n\ntableWrapperInit();\n","// get a reference to our predefined button\nconst scrollToTopBtn = document.querySelector('.back-to-top');\n\nfunction handleScroll(): void {\n const scrollableHeight = document.documentElement.scrollHeight - document.documentElement.clientHeight;\n\n const GOLDEN_RATIO = 0.5;\n\n if ((document.documentElement.scrollTop / scrollableHeight) > GOLDEN_RATIO) {\n // show button\n scrollToTopBtn?.classList.add('is-visible');\n // scrollToTopBtn.classList.add = 'is-visible';\n } else {\n // hide button\n scrollToTopBtn?.classList.remove('is-visible');\n }\n}\n\nfunction scrollToTop(): void {\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n if (scrollToTopBtn !== null) {\n scrollToTopBtn.addEventListener('click', scrollToTop);\n document.addEventListener('scroll', handleScroll);\n }\n});\n","function TrackUTMParams(): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const domainsToDecorate = (window as any).domainsToDecorate || [\n 'legalsuper.com.au', // add or remove domains (without https or trailing slash)\n 'inte.legalsuper.com.au',\n 'legalsuper-mcx-uat.np.linkgroup.com',\n 'member.legalsuper.com.au',\n // for development purpose\n 'localhost',\n 'legalsuper-optimizely.luminary.space'\n ];\n\n // check if any utm param exists in the url\n const isUTMParamExists = (): boolean => {\n const urlParams = new URLSearchParams(window.location.search);\n const paramsKeys = Array.from(urlParams.keys());\n\n return paramsKeys.some((param: string) => {\n return param.includes('utm_') || param.includes('ls_');\n });\n };\n\n const getUTMParams = (): Record => {\n const urlParams = new URLSearchParams(window.location.search);\n const params: Record = {};\n\n urlParams.forEach((value, key) => {\n if (key.includes('utm_') || key.includes('ls_')) {\n params[key] = value;\n }\n });\n\n return params;\n };\n\n const hasDomainToWatch = (link: string): boolean => {\n try {\n const parsedLink = new URL(link);\n const { hostname } = parsedLink;\n\n return domainsToDecorate.some((domain: string) => {\n return hostname.includes(domain);\n });\n } catch (error) {\n return false;\n }\n };\n\n // decorates the URL with query params\n const decorateUrl = (urlToDecorate: string, utmParams: Record): string => {\n try {\n const parsedURL = new URL(urlToDecorate);\n const parsedURLParams = new URLSearchParams(parsedURL.search);\n const paramsKeys = Array.from(parsedURLParams.keys());\n\n const hasExistingUTM = paramsKeys.some(param => {\n return param.includes('utm_');\n });\n\n if (!hasExistingUTM) {\n // Append new UTM parameters only if none exist\n for (const [key, value] of Object.entries(utmParams)) {\n parsedURLParams.set(key, value);\n }\n\n // Reconstruct the URL with the updated query parameters\n parsedURL.search = parsedURLParams.toString();\n\n // Handle hashtags\n if (parsedURL.hash) {\n return parsedURL.href.replace(parsedURL.hash, '') + parsedURL.hash;\n }\n\n return parsedURL.href;\n }\n\n return urlToDecorate;\n } catch (error) {\n return urlToDecorate;\n }\n };\n\n if (isUTMParamExists()) {\n const utmParams = getUTMParams();\n\n // get all links on the page\n const links = document.querySelectorAll('a');\n\n if (links?.length) {\n links.forEach(link => {\n const { href } = link as HTMLAnchorElement;\n\n if (hasDomainToWatch(href)) {\n link.href = decorateUrl(href, utmParams);\n }\n });\n }\n }\n}\n\n/**\n * TODO: better to adjust LINK component on react for a better maintainable code\n */\nconst contentObserver = new MutationObserver(mutationsList => {\n for (const mutation of mutationsList) {\n // console.debug(mutation);\n if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {\n TrackUTMParams();\n }\n }\n});\n\ndocument.addEventListener('DOMContentLoaded', () => {\n // initiate UTM tracker\n TrackUTMParams();\n\n // to inititate UTM tracker to any react sections on page\n contentObserver.observe(document.body, { childList: true, subtree: true });\n});\n\n\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});","const iframeResize = require('./js/iframeResizer')\n\nmodule.exports = {\n iframeResize: iframeResize,\n iframeResizer: iframeResize, // Backwards compatibility\n contentWindow: require('./js/iframeResizer.contentWindow')\n}\n","/*\n * File: iframeResizer.contentWindow.js\n * Desc: Include this file in any page being loaded into an iframe\n * to force the iframe to resize to the content size.\n * Requires: iframeResizer.js on host page.\n * Doc: https://github.com/davidjbradshaw/iframe-resizer\n * Author: David J. Bradshaw - dave@bradshaw.net\n *\n */\n\n// eslint-disable-next-line sonarjs/cognitive-complexity, no-shadow-restricted-names\n;(function (undefined) {\n if (typeof window === 'undefined') return // don't run for server side render\n\n var autoResize = true,\n base = 10,\n bodyBackground = '',\n bodyMargin = 0,\n bodyMarginStr = '',\n bodyObserver = null,\n bodyPadding = '',\n calculateWidth = false,\n doubleEventList = { resize: 1, click: 1 },\n eventCancelTimer = 128,\n firstRun = true,\n height = 1,\n heightCalcModeDefault = 'bodyOffset',\n heightCalcMode = heightCalcModeDefault,\n initLock = true,\n initMsg = '',\n inPageLinks = {},\n interval = 32,\n intervalTimer = null,\n logging = false,\n mouseEvents = false,\n msgID = '[iFrameSizer]', // Must match host page msg ID\n msgIdLen = msgID.length,\n myID = '',\n resetRequiredMethods = {\n max: 1,\n min: 1,\n bodyScroll: 1,\n documentElementScroll: 1\n },\n resizeFrom = 'child',\n sendPermit = true,\n target = window.parent,\n targetOriginDefault = '*',\n tolerance = 0,\n triggerLocked = false,\n triggerLockedTimer = null,\n throttledTimer = 16,\n width = 1,\n widthCalcModeDefault = 'scroll',\n widthCalcMode = widthCalcModeDefault,\n win = window,\n onMessage = function () {\n warn('onMessage function not defined')\n },\n onReady = function () {},\n onPageInfo = function () {},\n customCalcMethods = {\n height: function () {\n warn('Custom height calculation function not defined')\n return document.documentElement.offsetHeight\n },\n width: function () {\n warn('Custom width calculation function not defined')\n return document.body.scrollWidth\n }\n },\n eventHandlersByName = {},\n passiveSupported = false\n\n function noop() {}\n\n try {\n var options = Object.create(\n {},\n {\n passive: {\n // eslint-disable-next-line getter-return\n get: function () {\n passiveSupported = true\n }\n }\n }\n )\n window.addEventListener('test', noop, options)\n window.removeEventListener('test', noop, options)\n } catch (error) {\n /* */\n }\n\n function addEventListener(el, evt, func, options) {\n el.addEventListener(evt, func, passiveSupported ? options || {} : false)\n }\n\n function removeEventListener(el, evt, func) {\n el.removeEventListener(evt, func, false)\n }\n\n function capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1)\n }\n\n // Based on underscore.js\n function throttle(func) {\n var context,\n args,\n result,\n timeout = null,\n previous = 0,\n later = function () {\n previous = Date.now()\n timeout = null\n result = func.apply(context, args)\n if (!timeout) {\n // eslint-disable-next-line no-multi-assign\n context = args = null\n }\n }\n\n return function () {\n var now = Date.now()\n\n if (!previous) {\n previous = now\n }\n\n var remaining = throttledTimer - (now - previous)\n\n context = this\n args = arguments\n\n if (remaining <= 0 || remaining > throttledTimer) {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n\n previous = now\n result = func.apply(context, args)\n\n if (!timeout) {\n // eslint-disable-next-line no-multi-assign\n context = args = null\n }\n } else if (!timeout) {\n timeout = setTimeout(later, remaining)\n }\n\n return result\n }\n }\n\n function formatLogMsg(msg) {\n return msgID + '[' + myID + '] ' + msg\n }\n\n function log(msg) {\n if (logging && 'object' === typeof window.console) {\n // eslint-disable-next-line no-console\n console.log(formatLogMsg(msg))\n }\n }\n\n function warn(msg) {\n if ('object' === typeof window.console) {\n // eslint-disable-next-line no-console\n console.warn(formatLogMsg(msg))\n }\n }\n\n function init() {\n readDataFromParent()\n log('Initialising iFrame (' + window.location.href + ')')\n readDataFromPage()\n setMargin()\n setBodyStyle('background', bodyBackground)\n setBodyStyle('padding', bodyPadding)\n injectClearFixIntoBodyElement()\n checkHeightMode()\n checkWidthMode()\n stopInfiniteResizingOfIFrame()\n setupPublicMethods()\n setupMouseEvents()\n startEventListeners()\n inPageLinks = setupInPageLinks()\n sendSize('init', 'Init message from host page')\n onReady()\n }\n\n function readDataFromParent() {\n function strBool(str) {\n return 'true' === str\n }\n\n var data = initMsg.slice(msgIdLen).split(':')\n\n myID = data[0]\n bodyMargin = undefined === data[1] ? bodyMargin : Number(data[1]) // For V1 compatibility\n calculateWidth = undefined === data[2] ? calculateWidth : strBool(data[2])\n logging = undefined === data[3] ? logging : strBool(data[3])\n interval = undefined === data[4] ? interval : Number(data[4])\n autoResize = undefined === data[6] ? autoResize : strBool(data[6])\n bodyMarginStr = data[7]\n heightCalcMode = undefined === data[8] ? heightCalcMode : data[8]\n bodyBackground = data[9]\n bodyPadding = data[10]\n tolerance = undefined === data[11] ? tolerance : Number(data[11])\n inPageLinks.enable = undefined === data[12] ? false : strBool(data[12])\n resizeFrom = undefined === data[13] ? resizeFrom : data[13]\n widthCalcMode = undefined === data[14] ? widthCalcMode : data[14]\n mouseEvents = undefined === data[15] ? mouseEvents : strBool(data[15])\n }\n\n function depricate(key) {\n var splitName = key.split('Callback')\n\n if (splitName.length === 2) {\n var name =\n 'on' + splitName[0].charAt(0).toUpperCase() + splitName[0].slice(1)\n this[name] = this[key]\n delete this[key]\n warn(\n \"Deprecated: '\" +\n key +\n \"' has been renamed '\" +\n name +\n \"'. The old method will be removed in the next major version.\"\n )\n }\n }\n\n function readDataFromPage() {\n function readData() {\n var data = window.iFrameResizer\n\n log('Reading data from page: ' + JSON.stringify(data))\n Object.keys(data).forEach(depricate, data)\n\n onMessage = 'onMessage' in data ? data.onMessage : onMessage\n onReady = 'onReady' in data ? data.onReady : onReady\n targetOriginDefault =\n 'targetOrigin' in data ? data.targetOrigin : targetOriginDefault\n heightCalcMode =\n 'heightCalculationMethod' in data\n ? data.heightCalculationMethod\n : heightCalcMode\n widthCalcMode =\n 'widthCalculationMethod' in data\n ? data.widthCalculationMethod\n : widthCalcMode\n }\n\n function setupCustomCalcMethods(calcMode, calcFunc) {\n if ('function' === typeof calcMode) {\n log('Setup custom ' + calcFunc + 'CalcMethod')\n customCalcMethods[calcFunc] = calcMode\n calcMode = 'custom'\n }\n\n return calcMode\n }\n\n if (\n 'iFrameResizer' in window &&\n Object === window.iFrameResizer.constructor\n ) {\n readData()\n heightCalcMode = setupCustomCalcMethods(heightCalcMode, 'height')\n widthCalcMode = setupCustomCalcMethods(widthCalcMode, 'width')\n }\n\n log('TargetOrigin for parent set to: ' + targetOriginDefault)\n }\n\n function chkCSS(attr, value) {\n if (-1 !== value.indexOf('-')) {\n warn('Negative CSS value ignored for ' + attr)\n value = ''\n }\n return value\n }\n\n function setBodyStyle(attr, value) {\n if (undefined !== value && '' !== value && 'null' !== value) {\n document.body.style[attr] = value\n log('Body ' + attr + ' set to \"' + value + '\"')\n }\n }\n\n function setMargin() {\n // If called via V1 script, convert bodyMargin from int to str\n if (undefined === bodyMarginStr) {\n bodyMarginStr = bodyMargin + 'px'\n }\n\n setBodyStyle('margin', chkCSS('margin', bodyMarginStr))\n }\n\n function stopInfiniteResizingOfIFrame() {\n document.documentElement.style.height = ''\n document.body.style.height = ''\n log('HTML & body height set to \"auto\"')\n }\n\n function manageTriggerEvent(options) {\n var listener = {\n add: function (eventName) {\n function handleEvent() {\n sendSize(options.eventName, options.eventType)\n }\n\n eventHandlersByName[eventName] = handleEvent\n\n addEventListener(window, eventName, handleEvent, { passive: true })\n },\n remove: function (eventName) {\n var handleEvent = eventHandlersByName[eventName]\n delete eventHandlersByName[eventName]\n\n removeEventListener(window, eventName, handleEvent)\n }\n }\n\n if (options.eventNames && Array.prototype.map) {\n options.eventName = options.eventNames[0]\n options.eventNames.map(listener[options.method])\n } else {\n listener[options.method](options.eventName)\n }\n\n log(\n capitalizeFirstLetter(options.method) +\n ' event listener: ' +\n options.eventType\n )\n }\n\n function manageEventListeners(method) {\n manageTriggerEvent({\n method: method,\n eventType: 'Animation Start',\n eventNames: ['animationstart', 'webkitAnimationStart']\n })\n manageTriggerEvent({\n method: method,\n eventType: 'Animation Iteration',\n eventNames: ['animationiteration', 'webkitAnimationIteration']\n })\n manageTriggerEvent({\n method: method,\n eventType: 'Animation End',\n eventNames: ['animationend', 'webkitAnimationEnd']\n })\n manageTriggerEvent({\n method: method,\n eventType: 'Input',\n eventName: 'input'\n })\n manageTriggerEvent({\n method: method,\n eventType: 'Mouse Up',\n eventName: 'mouseup'\n })\n manageTriggerEvent({\n method: method,\n eventType: 'Mouse Down',\n eventName: 'mousedown'\n })\n manageTriggerEvent({\n method: method,\n eventType: 'Orientation Change',\n eventName: 'orientationchange'\n })\n manageTriggerEvent({\n method: method,\n eventType: 'Print',\n eventNames: ['afterprint', 'beforeprint']\n })\n manageTriggerEvent({\n method: method,\n eventType: 'Ready State Change',\n eventName: 'readystatechange'\n })\n manageTriggerEvent({\n method: method,\n eventType: 'Touch Start',\n eventName: 'touchstart'\n })\n manageTriggerEvent({\n method: method,\n eventType: 'Touch End',\n eventName: 'touchend'\n })\n manageTriggerEvent({\n method: method,\n eventType: 'Touch Cancel',\n eventName: 'touchcancel'\n })\n manageTriggerEvent({\n method: method,\n eventType: 'Transition Start',\n eventNames: [\n 'transitionstart',\n 'webkitTransitionStart',\n 'MSTransitionStart',\n 'oTransitionStart',\n 'otransitionstart'\n ]\n })\n manageTriggerEvent({\n method: method,\n eventType: 'Transition Iteration',\n eventNames: [\n 'transitioniteration',\n 'webkitTransitionIteration',\n 'MSTransitionIteration',\n 'oTransitionIteration',\n 'otransitioniteration'\n ]\n })\n manageTriggerEvent({\n method: method,\n eventType: 'Transition End',\n eventNames: [\n 'transitionend',\n 'webkitTransitionEnd',\n 'MSTransitionEnd',\n 'oTransitionEnd',\n 'otransitionend'\n ]\n })\n if ('child' === resizeFrom) {\n manageTriggerEvent({\n method: method,\n eventType: 'IFrame Resized',\n eventName: 'resize'\n })\n }\n }\n\n function checkCalcMode(calcMode, calcModeDefault, modes, type) {\n if (calcModeDefault !== calcMode) {\n if (!(calcMode in modes)) {\n warn(\n calcMode + ' is not a valid option for ' + type + 'CalculationMethod.'\n )\n calcMode = calcModeDefault\n }\n log(type + ' calculation method set to \"' + calcMode + '\"')\n }\n\n return calcMode\n }\n\n function checkHeightMode() {\n heightCalcMode = checkCalcMode(\n heightCalcMode,\n heightCalcModeDefault,\n getHeight,\n 'height'\n )\n }\n\n function checkWidthMode() {\n widthCalcMode = checkCalcMode(\n widthCalcMode,\n widthCalcModeDefault,\n getWidth,\n 'width'\n )\n }\n\n function startEventListeners() {\n if (true === autoResize) {\n manageEventListeners('add')\n setupMutationObserver()\n } else {\n log('Auto Resize disabled')\n }\n }\n\n // function stopMsgsToParent() {\n // log('Disable outgoing messages')\n // sendPermit = false\n // }\n\n // function removeMsgListener() {\n // log('Remove event listener: Message')\n // removeEventListener(window, 'message', receiver)\n // }\n\n function disconnectMutationObserver() {\n if (null !== bodyObserver) {\n /* istanbul ignore next */ // Not testable in PhantonJS\n bodyObserver.disconnect()\n }\n }\n\n function stopEventListeners() {\n manageEventListeners('remove')\n disconnectMutationObserver()\n clearInterval(intervalTimer)\n }\n\n // function teardown() {\n // stopMsgsToParent()\n // removeMsgListener()\n // if (true === autoResize) stopEventListeners()\n // }\n\n function injectClearFixIntoBodyElement() {\n var clearFix = document.createElement('div')\n clearFix.style.clear = 'both'\n // Guard against the following having been globally redefined in CSS.\n clearFix.style.display = 'block'\n clearFix.style.height = '0'\n document.body.appendChild(clearFix)\n }\n\n function setupInPageLinks() {\n function getPagePosition() {\n return {\n x:\n window.pageXOffset === undefined\n ? document.documentElement.scrollLeft\n : window.pageXOffset,\n y:\n window.pageYOffset === undefined\n ? document.documentElement.scrollTop\n : window.pageYOffset\n }\n }\n\n function getElementPosition(el) {\n var elPosition = el.getBoundingClientRect(),\n pagePosition = getPagePosition()\n\n return {\n x: parseInt(elPosition.left, 10) + parseInt(pagePosition.x, 10),\n y: parseInt(elPosition.top, 10) + parseInt(pagePosition.y, 10)\n }\n }\n\n function findTarget(location) {\n function jumpToTarget(target) {\n var jumpPosition = getElementPosition(target)\n\n log(\n 'Moving to in page link (#' +\n hash +\n ') at x: ' +\n jumpPosition.x +\n ' y: ' +\n jumpPosition.y\n )\n sendMsg(jumpPosition.y, jumpPosition.x, 'scrollToOffset') // X&Y reversed at sendMsg uses height/width\n }\n\n var hash = location.split('#')[1] || location, // Remove # if present\n hashData = decodeURIComponent(hash),\n target =\n document.getElementById(hashData) ||\n document.getElementsByName(hashData)[0]\n\n if (undefined === target) {\n log(\n 'In page link (#' +\n hash +\n ') not found in iFrame, so sending to parent'\n )\n sendMsg(0, 0, 'inPageLink', '#' + hash)\n } else {\n jumpToTarget(target)\n }\n }\n\n function checkLocationHash() {\n var hash = window.location.hash\n var href = window.location.href\n\n if ('' !== hash && '#' !== hash) {\n findTarget(href)\n }\n }\n\n function bindAnchors() {\n function setupLink(el) {\n function linkClicked(e) {\n e.preventDefault()\n\n /* jshint validthis:true */\n findTarget(this.getAttribute('href'))\n }\n\n if ('#' !== el.getAttribute('href')) {\n addEventListener(el, 'click', linkClicked)\n }\n }\n\n Array.prototype.forEach.call(\n document.querySelectorAll('a[href^=\"#\"]'),\n setupLink\n )\n }\n\n function bindLocationHash() {\n addEventListener(window, 'hashchange', checkLocationHash)\n }\n\n function initCheck() {\n // Check if page loaded with location hash after init resize\n setTimeout(checkLocationHash, eventCancelTimer)\n }\n\n function enableInPageLinks() {\n /* istanbul ignore else */ // Not testable in phantonJS\n if (Array.prototype.forEach && document.querySelectorAll) {\n log('Setting up location.hash handlers')\n bindAnchors()\n bindLocationHash()\n initCheck()\n } else {\n warn(\n 'In page linking not fully supported in this browser! (See README.md for IE8 workaround)'\n )\n }\n }\n\n if (inPageLinks.enable) {\n enableInPageLinks()\n } else {\n log('In page linking not enabled')\n }\n\n return {\n findTarget: findTarget\n }\n }\n\n function setupMouseEvents() {\n if (mouseEvents !== true) return\n\n function sendMouse(e) {\n sendMsg(0, 0, e.type, e.screenY + ':' + e.screenX)\n }\n\n function addMouseListener(evt, name) {\n log('Add event listener: ' + name)\n addEventListener(window.document, evt, sendMouse)\n }\n\n addMouseListener('mouseenter', 'Mouse Enter')\n addMouseListener('mouseleave', 'Mouse Leave')\n }\n\n function setupPublicMethods() {\n log('Enable public methods')\n\n win.parentIFrame = {\n autoResize: function autoResizeF(resize) {\n if (true === resize && false === autoResize) {\n autoResize = true\n startEventListeners()\n } else if (false === resize && true === autoResize) {\n autoResize = false\n stopEventListeners()\n }\n sendMsg(0, 0, 'autoResize', JSON.stringify(autoResize))\n return autoResize\n },\n\n close: function closeF() {\n sendMsg(0, 0, 'close')\n // teardown()\n },\n\n getId: function getIdF() {\n return myID\n },\n\n getPageInfo: function getPageInfoF(callback) {\n if ('function' === typeof callback) {\n onPageInfo = callback\n sendMsg(0, 0, 'pageInfo')\n } else {\n onPageInfo = function () {}\n sendMsg(0, 0, 'pageInfoStop')\n }\n },\n\n moveToAnchor: function moveToAnchorF(hash) {\n inPageLinks.findTarget(hash)\n },\n\n reset: function resetF() {\n resetIFrame('parentIFrame.reset')\n },\n\n scrollTo: function scrollToF(x, y) {\n sendMsg(y, x, 'scrollTo') // X&Y reversed at sendMsg uses height/width\n },\n\n scrollToOffset: function scrollToF(x, y) {\n sendMsg(y, x, 'scrollToOffset') // X&Y reversed at sendMsg uses height/width\n },\n\n sendMessage: function sendMessageF(msg, targetOrigin) {\n sendMsg(0, 0, 'message', JSON.stringify(msg), targetOrigin)\n },\n\n setHeightCalculationMethod: function setHeightCalculationMethodF(\n heightCalculationMethod\n ) {\n heightCalcMode = heightCalculationMethod\n checkHeightMode()\n },\n\n setWidthCalculationMethod: function setWidthCalculationMethodF(\n widthCalculationMethod\n ) {\n widthCalcMode = widthCalculationMethod\n checkWidthMode()\n },\n\n setTargetOrigin: function setTargetOriginF(targetOrigin) {\n log('Set targetOrigin: ' + targetOrigin)\n targetOriginDefault = targetOrigin\n },\n\n size: function sizeF(customHeight, customWidth) {\n var valString =\n '' + (customHeight || '') + (customWidth ? ',' + customWidth : '')\n sendSize(\n 'size',\n 'parentIFrame.size(' + valString + ')',\n customHeight,\n customWidth\n )\n }\n }\n }\n\n function initInterval() {\n if (0 !== interval) {\n log('setInterval: ' + interval + 'ms')\n intervalTimer = setInterval(function () {\n sendSize('interval', 'setInterval: ' + interval)\n }, Math.abs(interval))\n }\n }\n\n // Not testable in PhantomJS\n /* istanbul ignore next */\n function setupBodyMutationObserver() {\n function addImageLoadListners(mutation) {\n function addImageLoadListener(element) {\n if (false === element.complete) {\n log('Attach listeners to ' + element.src)\n element.addEventListener('load', imageLoaded, false)\n element.addEventListener('error', imageError, false)\n elements.push(element)\n }\n }\n\n if (mutation.type === 'attributes' && mutation.attributeName === 'src') {\n addImageLoadListener(mutation.target)\n } else if (mutation.type === 'childList') {\n Array.prototype.forEach.call(\n mutation.target.querySelectorAll('img'),\n addImageLoadListener\n )\n }\n }\n\n function removeFromArray(element) {\n elements.splice(elements.indexOf(element), 1)\n }\n\n function removeImageLoadListener(element) {\n log('Remove listeners from ' + element.src)\n element.removeEventListener('load', imageLoaded, false)\n element.removeEventListener('error', imageError, false)\n removeFromArray(element)\n }\n\n function imageEventTriggered(event, type, typeDesc) {\n removeImageLoadListener(event.target)\n sendSize(type, typeDesc + ': ' + event.target.src)\n }\n\n function imageLoaded(event) {\n imageEventTriggered(event, 'imageLoad', 'Image loaded')\n }\n\n function imageError(event) {\n imageEventTriggered(event, 'imageLoadFailed', 'Image load failed')\n }\n\n function mutationObserved(mutations) {\n sendSize(\n 'mutationObserver',\n 'mutationObserver: ' + mutations[0].target + ' ' + mutations[0].type\n )\n\n // Deal with WebKit / Blink asyncing image loading when tags are injected into the page\n mutations.forEach(addImageLoadListners)\n }\n\n function createMutationObserver() {\n var target = document.querySelector('body'),\n config = {\n attributes: true,\n attributeOldValue: false,\n characterData: true,\n characterDataOldValue: false,\n childList: true,\n subtree: true\n }\n\n observer = new MutationObserver(mutationObserved)\n\n log('Create body MutationObserver')\n observer.observe(target, config)\n\n return observer\n }\n\n var elements = [],\n MutationObserver =\n window.MutationObserver || window.WebKitMutationObserver,\n observer = createMutationObserver()\n\n return {\n disconnect: function () {\n if ('disconnect' in observer) {\n log('Disconnect body MutationObserver')\n observer.disconnect()\n elements.forEach(removeImageLoadListener)\n }\n }\n }\n }\n\n function setupMutationObserver() {\n var forceIntervalTimer = 0 > interval\n\n // Not testable in PhantomJS\n /* istanbul ignore if */ if (\n window.MutationObserver ||\n window.WebKitMutationObserver\n ) {\n if (forceIntervalTimer) {\n initInterval()\n } else {\n bodyObserver = setupBodyMutationObserver()\n }\n } else {\n log('MutationObserver not supported in this browser!')\n initInterval()\n }\n }\n\n // document.documentElement.offsetHeight is not reliable, so\n // we have to jump through hoops to get a better value.\n function getComputedStyle(prop, el) {\n var retVal = 0\n el = el || document.body // Not testable in phantonJS\n\n retVal = document.defaultView.getComputedStyle(el, null)\n retVal = null === retVal ? 0 : retVal[prop]\n\n return parseInt(retVal, base)\n }\n\n function chkEventThottle(timer) {\n if (timer > throttledTimer / 2) {\n throttledTimer = 2 * timer\n log('Event throttle increased to ' + throttledTimer + 'ms')\n }\n }\n\n // Idea from https://github.com/guardian/iframe-messenger\n function getMaxElement(side, elements) {\n var elementsLength = elements.length,\n elVal = 0,\n maxVal = 0,\n Side = capitalizeFirstLetter(side),\n timer = Date.now()\n\n for (var i = 0; i < elementsLength; i++) {\n elVal =\n elements[i].getBoundingClientRect()[side] +\n getComputedStyle('margin' + Side, elements[i])\n if (elVal > maxVal) {\n maxVal = elVal\n }\n }\n\n timer = Date.now() - timer\n\n log('Parsed ' + elementsLength + ' HTML elements')\n log('Element position calculated in ' + timer + 'ms')\n\n chkEventThottle(timer)\n\n return maxVal\n }\n\n function getAllMeasurements(dimensions) {\n return [\n dimensions.bodyOffset(),\n dimensions.bodyScroll(),\n dimensions.documentElementOffset(),\n dimensions.documentElementScroll()\n ]\n }\n\n function getTaggedElements(side, tag) {\n function noTaggedElementsFound() {\n warn('No tagged elements (' + tag + ') found on page')\n return document.querySelectorAll('body *')\n }\n\n var elements = document.querySelectorAll('[' + tag + ']')\n\n if (elements.length === 0) noTaggedElementsFound()\n\n return getMaxElement(side, elements)\n }\n\n function getAllElements() {\n return document.querySelectorAll('body *')\n }\n\n var getHeight = {\n bodyOffset: function getBodyOffsetHeight() {\n return (\n document.body.offsetHeight +\n getComputedStyle('marginTop') +\n getComputedStyle('marginBottom')\n )\n },\n\n offset: function () {\n return getHeight.bodyOffset() // Backwards compatibility\n },\n\n bodyScroll: function getBodyScrollHeight() {\n return document.body.scrollHeight\n },\n\n custom: function getCustomWidth() {\n return customCalcMethods.height()\n },\n\n documentElementOffset: function getDEOffsetHeight() {\n return document.documentElement.offsetHeight\n },\n\n documentElementScroll: function getDEScrollHeight() {\n return document.documentElement.scrollHeight\n },\n\n max: function getMaxHeight() {\n return Math.max.apply(null, getAllMeasurements(getHeight))\n },\n\n min: function getMinHeight() {\n return Math.min.apply(null, getAllMeasurements(getHeight))\n },\n\n grow: function growHeight() {\n return getHeight.max() // Run max without the forced downsizing\n },\n\n lowestElement: function getBestHeight() {\n return Math.max(\n getHeight.bodyOffset() || getHeight.documentElementOffset(),\n getMaxElement('bottom', getAllElements())\n )\n },\n\n taggedElement: function getTaggedElementsHeight() {\n return getTaggedElements('bottom', 'data-iframe-height')\n }\n },\n getWidth = {\n bodyScroll: function getBodyScrollWidth() {\n return document.body.scrollWidth\n },\n\n bodyOffset: function getBodyOffsetWidth() {\n return document.body.offsetWidth\n },\n\n custom: function getCustomWidth() {\n return customCalcMethods.width()\n },\n\n documentElementScroll: function getDEScrollWidth() {\n return document.documentElement.scrollWidth\n },\n\n documentElementOffset: function getDEOffsetWidth() {\n return document.documentElement.offsetWidth\n },\n\n scroll: function getMaxWidth() {\n return Math.max(getWidth.bodyScroll(), getWidth.documentElementScroll())\n },\n\n max: function getMaxWidth() {\n return Math.max.apply(null, getAllMeasurements(getWidth))\n },\n\n min: function getMinWidth() {\n return Math.min.apply(null, getAllMeasurements(getWidth))\n },\n\n rightMostElement: function rightMostElement() {\n return getMaxElement('right', getAllElements())\n },\n\n taggedElement: function getTaggedElementsWidth() {\n return getTaggedElements('right', 'data-iframe-width')\n }\n }\n\n function sizeIFrame(\n triggerEvent,\n triggerEventDesc,\n customHeight,\n customWidth\n ) {\n function resizeIFrame() {\n height = currentHeight\n width = currentWidth\n\n sendMsg(height, width, triggerEvent)\n }\n\n function isSizeChangeDetected() {\n function checkTolarance(a, b) {\n var retVal = Math.abs(a - b) <= tolerance\n return !retVal\n }\n\n currentHeight =\n undefined === customHeight ? getHeight[heightCalcMode]() : customHeight\n currentWidth =\n undefined === customWidth ? getWidth[widthCalcMode]() : customWidth\n\n return (\n checkTolarance(height, currentHeight) ||\n (calculateWidth && checkTolarance(width, currentWidth))\n )\n }\n\n function isForceResizableEvent() {\n return !(triggerEvent in { init: 1, interval: 1, size: 1 })\n }\n\n function isForceResizableCalcMode() {\n return (\n heightCalcMode in resetRequiredMethods ||\n (calculateWidth && widthCalcMode in resetRequiredMethods)\n )\n }\n\n function logIgnored() {\n log('No change in size detected')\n }\n\n function checkDownSizing() {\n if (isForceResizableEvent() && isForceResizableCalcMode()) {\n resetIFrame(triggerEventDesc)\n } else if (!(triggerEvent in { interval: 1 })) {\n logIgnored()\n }\n }\n\n var currentHeight, currentWidth\n\n if (isSizeChangeDetected() || 'init' === triggerEvent) {\n lockTrigger()\n resizeIFrame()\n } else {\n checkDownSizing()\n }\n }\n\n var sizeIFrameThrottled = throttle(sizeIFrame)\n\n function sendSize(triggerEvent, triggerEventDesc, customHeight, customWidth) {\n function recordTrigger() {\n if (!(triggerEvent in { reset: 1, resetPage: 1, init: 1 })) {\n log('Trigger event: ' + triggerEventDesc)\n }\n }\n\n function isDoubleFiredEvent() {\n return triggerLocked && triggerEvent in doubleEventList\n }\n\n if (isDoubleFiredEvent()) {\n log('Trigger event cancelled: ' + triggerEvent)\n } else {\n recordTrigger()\n if (triggerEvent === 'init') {\n sizeIFrame(triggerEvent, triggerEventDesc, customHeight, customWidth)\n } else {\n sizeIFrameThrottled(\n triggerEvent,\n triggerEventDesc,\n customHeight,\n customWidth\n )\n }\n }\n }\n\n function lockTrigger() {\n if (!triggerLocked) {\n triggerLocked = true\n log('Trigger event lock on')\n }\n clearTimeout(triggerLockedTimer)\n triggerLockedTimer = setTimeout(function () {\n triggerLocked = false\n log('Trigger event lock off')\n log('--')\n }, eventCancelTimer)\n }\n\n function triggerReset(triggerEvent) {\n height = getHeight[heightCalcMode]()\n width = getWidth[widthCalcMode]()\n\n sendMsg(height, width, triggerEvent)\n }\n\n function resetIFrame(triggerEventDesc) {\n var hcm = heightCalcMode\n heightCalcMode = heightCalcModeDefault\n\n log('Reset trigger event: ' + triggerEventDesc)\n lockTrigger()\n triggerReset('reset')\n\n heightCalcMode = hcm\n }\n\n function sendMsg(height, width, triggerEvent, msg, targetOrigin) {\n function setTargetOrigin() {\n if (undefined === targetOrigin) {\n targetOrigin = targetOriginDefault\n } else {\n log('Message targetOrigin: ' + targetOrigin)\n }\n }\n\n function sendToParent() {\n var size = height + ':' + width,\n message =\n myID +\n ':' +\n size +\n ':' +\n triggerEvent +\n (undefined === msg ? '' : ':' + msg)\n\n log('Sending message to host page (' + message + ')')\n target.postMessage(msgID + message, targetOrigin)\n }\n\n if (true === sendPermit) {\n setTargetOrigin()\n sendToParent()\n }\n }\n\n function receiver(event) {\n var processRequestFromParent = {\n init: function initFromParent() {\n initMsg = event.data\n target = event.source\n\n init()\n firstRun = false\n setTimeout(function () {\n initLock = false\n }, eventCancelTimer)\n },\n\n reset: function resetFromParent() {\n if (initLock) {\n log('Page reset ignored by init')\n } else {\n log('Page size reset by host page')\n triggerReset('resetPage')\n }\n },\n\n resize: function resizeFromParent() {\n sendSize('resizeParent', 'Parent window requested size check')\n },\n\n moveToAnchor: function moveToAnchorF() {\n inPageLinks.findTarget(getData())\n },\n inPageLink: function inPageLinkF() {\n this.moveToAnchor()\n }, // Backward compatibility\n\n pageInfo: function pageInfoFromParent() {\n var msgBody = getData()\n log('PageInfoFromParent called from parent: ' + msgBody)\n onPageInfo(JSON.parse(msgBody))\n log(' --')\n },\n\n message: function messageFromParent() {\n var msgBody = getData()\n\n log('onMessage called from parent: ' + msgBody)\n // eslint-disable-next-line sonarjs/no-extra-arguments\n onMessage(JSON.parse(msgBody))\n log(' --')\n }\n }\n\n function isMessageForUs() {\n return msgID === ('' + event.data).slice(0, msgIdLen) // ''+ Protects against non-string messages\n }\n\n function getMessageType() {\n return event.data.split(']')[1].split(':')[0]\n }\n\n function getData() {\n return event.data.slice(event.data.indexOf(':') + 1)\n }\n\n function isMiddleTier() {\n return (\n (!(typeof module !== 'undefined' && module.exports) &&\n 'iFrameResize' in window) ||\n (window.jQuery !== undefined &&\n 'iFrameResize' in window.jQuery.prototype)\n )\n }\n\n function isInitMsg() {\n // Test if this message is from a child below us. This is an ugly test, however, updating\n // the message format would break backwards compatibility.\n return event.data.split(':')[2] in { true: 1, false: 1 }\n }\n\n function callFromParent() {\n var messageType = getMessageType()\n\n if (messageType in processRequestFromParent) {\n processRequestFromParent[messageType]()\n } else if (!isMiddleTier() && !isInitMsg()) {\n warn('Unexpected message (' + event.data + ')')\n }\n }\n\n function processMessage() {\n if (false === firstRun) {\n callFromParent()\n } else if (isInitMsg()) {\n processRequestFromParent.init()\n } else {\n log(\n 'Ignored message of type \"' +\n getMessageType() +\n '\". Received before initialization.'\n )\n }\n }\n\n if (isMessageForUs()) {\n processMessage()\n }\n }\n\n // Normally the parent kicks things off when it detects the iFrame has loaded.\n // If this script is async-loaded, then tell parent page to retry init.\n function chkLateLoaded() {\n if ('loading' !== document.readyState) {\n window.parent.postMessage('[iFrameResizerChild]Ready', '*')\n }\n }\n\n addEventListener(window, 'message', receiver)\n addEventListener(window, 'readystatechange', chkLateLoaded)\n chkLateLoaded()\n\n \n})()\n","/*\n * File: iframeResizer.js\n * Desc: Force iframes to size to content.\n * Requires: iframeResizer.contentWindow.js to be loaded into the target frame.\n * Doc: https://github.com/davidjbradshaw/iframe-resizer\n * Author: David J. Bradshaw - dave@bradshaw.net\n * Contributor: Jure Mav - jure.mav@gmail.com\n * Contributor: Reed Dadoune - reed@dadoune.com\n */\n\n// eslint-disable-next-line sonarjs/cognitive-complexity, no-shadow-restricted-names\n;(function (undefined) {\n if (typeof window === 'undefined') return // don't run for server side render\n\n var count = 0,\n logEnabled = false,\n hiddenCheckEnabled = false,\n msgHeader = 'message',\n msgHeaderLen = msgHeader.length,\n msgId = '[iFrameSizer]', // Must match iframe msg ID\n msgIdLen = msgId.length,\n pagePosition = null,\n requestAnimationFrame = window.requestAnimationFrame,\n resetRequiredMethods = Object.freeze({\n max: 1,\n scroll: 1,\n bodyScroll: 1,\n documentElementScroll: 1\n }),\n settings = {},\n timer = null,\n defaults = Object.freeze({\n autoResize: true,\n bodyBackground: null,\n bodyMargin: null,\n bodyMarginV1: 8,\n bodyPadding: null,\n checkOrigin: true,\n inPageLinks: false,\n enablePublicMethods: true,\n heightCalculationMethod: 'bodyOffset',\n id: 'iFrameResizer',\n interval: 32,\n log: false,\n maxHeight: Infinity,\n maxWidth: Infinity,\n minHeight: 0,\n minWidth: 0,\n mouseEvents: true,\n resizeFrom: 'parent',\n scrolling: false,\n sizeHeight: true,\n sizeWidth: false,\n warningTimeout: 5000,\n tolerance: 0,\n widthCalculationMethod: 'scroll',\n onClose: function () {\n return true\n },\n onClosed: function () {},\n onInit: function () {},\n onMessage: function () {\n warn('onMessage function not defined')\n },\n onMouseEnter: function () {},\n onMouseLeave: function () {},\n onResized: function () {},\n onScroll: function () {\n return true\n }\n })\n\n function getMutationObserver() {\n return (\n window.MutationObserver ||\n window.WebKitMutationObserver ||\n window.MozMutationObserver\n )\n }\n\n function addEventListener(el, evt, func) {\n el.addEventListener(evt, func, false)\n }\n\n function removeEventListener(el, evt, func) {\n el.removeEventListener(evt, func, false)\n }\n\n function setupRequestAnimationFrame() {\n var vendors = ['moz', 'webkit', 'o', 'ms']\n var x\n\n // Remove vendor prefixing if prefixed and break early if not\n for (x = 0; x < vendors.length && !requestAnimationFrame; x += 1) {\n requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']\n }\n\n if (requestAnimationFrame) {\n // Firefox extension content-scripts have a globalThis object that is not the same as window.\n // Binding `requestAnimationFrame` to window allows the function to work and prevents errors\n // being thrown when run in that context, and should be a no-op in every other context.\n requestAnimationFrame = requestAnimationFrame.bind(window)\n } else {\n log('setup', 'RequestAnimationFrame not supported')\n }\n }\n\n function getMyID(iframeId) {\n var retStr = 'Host page: ' + iframeId\n\n if (window.top !== window.self) {\n retStr =\n window.parentIFrame && window.parentIFrame.getId\n ? window.parentIFrame.getId() + ': ' + iframeId\n : 'Nested host page: ' + iframeId\n }\n\n return retStr\n }\n\n function formatLogHeader(iframeId) {\n return msgId + '[' + getMyID(iframeId) + ']'\n }\n\n function isLogEnabled(iframeId) {\n return settings[iframeId] ? settings[iframeId].log : logEnabled\n }\n\n function log(iframeId, msg) {\n output('log', iframeId, msg, isLogEnabled(iframeId))\n }\n\n function info(iframeId, msg) {\n output('info', iframeId, msg, isLogEnabled(iframeId))\n }\n\n function warn(iframeId, msg) {\n output('warn', iframeId, msg, true)\n }\n\n function output(type, iframeId, msg, enabled) {\n if (true === enabled && 'object' === typeof window.console) {\n // eslint-disable-next-line no-console\n console[type](formatLogHeader(iframeId), msg)\n }\n }\n\n function iFrameListener(event) {\n function resizeIFrame() {\n function resize() {\n setSize(messageData)\n setPagePosition(iframeId)\n on('onResized', messageData)\n }\n\n ensureInRange('Height')\n ensureInRange('Width')\n\n syncResize(resize, messageData, 'init')\n }\n\n function processMsg() {\n var data = msg.slice(msgIdLen).split(':')\n var height = data[1] ? parseInt(data[1], 10) : 0\n var iframe = settings[data[0]] && settings[data[0]].iframe\n var compStyle = getComputedStyle(iframe)\n\n return {\n iframe: iframe,\n id: data[0],\n height: height + getPaddingEnds(compStyle) + getBorderEnds(compStyle),\n width: data[2],\n type: data[3]\n }\n }\n\n function getPaddingEnds(compStyle) {\n if (compStyle.boxSizing !== 'border-box') {\n return 0\n }\n var top = compStyle.paddingTop ? parseInt(compStyle.paddingTop, 10) : 0\n var bot = compStyle.paddingBottom\n ? parseInt(compStyle.paddingBottom, 10)\n : 0\n return top + bot\n }\n\n function getBorderEnds(compStyle) {\n if (compStyle.boxSizing !== 'border-box') {\n return 0\n }\n var top = compStyle.borderTopWidth\n ? parseInt(compStyle.borderTopWidth, 10)\n : 0\n var bot = compStyle.borderBottomWidth\n ? parseInt(compStyle.borderBottomWidth, 10)\n : 0\n return top + bot\n }\n\n function ensureInRange(Dimension) {\n var max = Number(settings[iframeId]['max' + Dimension]),\n min = Number(settings[iframeId]['min' + Dimension]),\n dimension = Dimension.toLowerCase(),\n size = Number(messageData[dimension])\n\n log(iframeId, 'Checking ' + dimension + ' is in range ' + min + '-' + max)\n\n if (size < min) {\n size = min\n log(iframeId, 'Set ' + dimension + ' to min value')\n }\n\n if (size > max) {\n size = max\n log(iframeId, 'Set ' + dimension + ' to max value')\n }\n\n messageData[dimension] = '' + size\n }\n\n function isMessageFromIFrame() {\n function checkAllowedOrigin() {\n function checkList() {\n var i = 0,\n retCode = false\n\n log(\n iframeId,\n 'Checking connection is from allowed list of origins: ' +\n checkOrigin\n )\n\n for (; i < checkOrigin.length; i++) {\n if (checkOrigin[i] === origin) {\n retCode = true\n break\n }\n }\n return retCode\n }\n\n function checkSingle() {\n var remoteHost = settings[iframeId] && settings[iframeId].remoteHost\n log(iframeId, 'Checking connection is from: ' + remoteHost)\n return origin === remoteHost\n }\n\n return checkOrigin.constructor === Array ? checkList() : checkSingle()\n }\n\n var origin = event.origin,\n checkOrigin = settings[iframeId] && settings[iframeId].checkOrigin\n\n if (checkOrigin && '' + origin !== 'null' && !checkAllowedOrigin()) {\n throw new Error(\n 'Unexpected message received from: ' +\n origin +\n ' for ' +\n messageData.iframe.id +\n '. Message was: ' +\n event.data +\n '. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.'\n )\n }\n\n return true\n }\n\n function isMessageForUs() {\n return (\n msgId === ('' + msg).slice(0, msgIdLen) &&\n msg.slice(msgIdLen).split(':')[0] in settings\n ) // ''+Protects against non-string msg\n }\n\n function isMessageFromMetaParent() {\n // Test if this message is from a parent above us. This is an ugly test, however, updating\n // the message format would break backwards compatibility.\n var retCode = messageData.type in { true: 1, false: 1, undefined: 1 }\n\n if (retCode) {\n log(iframeId, 'Ignoring init message from meta parent page')\n }\n\n return retCode\n }\n\n function getMsgBody(offset) {\n return msg.slice(msg.indexOf(':') + msgHeaderLen + offset)\n }\n\n function forwardMsgFromIFrame(msgBody) {\n log(\n iframeId,\n 'onMessage passed: {iframe: ' +\n messageData.iframe.id +\n ', message: ' +\n msgBody +\n '}'\n )\n\n on('onMessage', {\n iframe: messageData.iframe,\n message: JSON.parse(msgBody)\n })\n\n log(iframeId, '--')\n }\n\n function getPageInfo() {\n var bodyPosition = document.body.getBoundingClientRect(),\n iFramePosition = messageData.iframe.getBoundingClientRect()\n\n return JSON.stringify({\n iframeHeight: iFramePosition.height,\n iframeWidth: iFramePosition.width,\n clientHeight: Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n ),\n clientWidth: Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n ),\n offsetTop: parseInt(iFramePosition.top - bodyPosition.top, 10),\n offsetLeft: parseInt(iFramePosition.left - bodyPosition.left, 10),\n scrollTop: window.pageYOffset,\n scrollLeft: window.pageXOffset,\n documentHeight: document.documentElement.clientHeight,\n documentWidth: document.documentElement.clientWidth,\n windowHeight: window.innerHeight,\n windowWidth: window.innerWidth\n })\n }\n\n function sendPageInfoToIframe(iframe, iframeId) {\n function debouncedTrigger() {\n trigger('Send Page Info', 'pageInfo:' + getPageInfo(), iframe, iframeId)\n }\n debounceFrameEvents(debouncedTrigger, 32, iframeId)\n }\n\n function startPageInfoMonitor() {\n function setListener(type, func) {\n function sendPageInfo() {\n if (settings[id]) {\n sendPageInfoToIframe(settings[id].iframe, id)\n } else {\n stop()\n }\n }\n\n ;['scroll', 'resize'].forEach(function (evt) {\n log(id, type + evt + ' listener for sendPageInfo')\n func(window, evt, sendPageInfo)\n })\n }\n\n function stop() {\n setListener('Remove ', removeEventListener)\n }\n\n function start() {\n setListener('Add ', addEventListener)\n }\n\n var id = iframeId // Create locally scoped copy of iFrame ID\n\n start()\n\n if (settings[id]) {\n settings[id].stopPageInfo = stop\n }\n }\n\n function stopPageInfoMonitor() {\n if (settings[iframeId] && settings[iframeId].stopPageInfo) {\n settings[iframeId].stopPageInfo()\n delete settings[iframeId].stopPageInfo\n }\n }\n\n function checkIFrameExists() {\n var retBool = true\n\n if (null === messageData.iframe) {\n warn(iframeId, 'IFrame (' + messageData.id + ') not found')\n retBool = false\n }\n return retBool\n }\n\n function getElementPosition(target) {\n var iFramePosition = target.getBoundingClientRect()\n\n getPagePosition(iframeId)\n\n return {\n x: Math.floor(Number(iFramePosition.left) + Number(pagePosition.x)),\n y: Math.floor(Number(iFramePosition.top) + Number(pagePosition.y))\n }\n }\n\n function scrollRequestFromChild(addOffset) {\n /* istanbul ignore next */ // Not testable in Karma\n function reposition() {\n pagePosition = newPosition\n scrollTo()\n log(iframeId, '--')\n }\n\n function calcOffset() {\n return {\n x: Number(messageData.width) + offset.x,\n y: Number(messageData.height) + offset.y\n }\n }\n\n function scrollParent() {\n if (window.parentIFrame) {\n window.parentIFrame['scrollTo' + (addOffset ? 'Offset' : '')](\n newPosition.x,\n newPosition.y\n )\n } else {\n warn(\n iframeId,\n 'Unable to scroll to requested position, window.parentIFrame not found'\n )\n }\n }\n\n var offset = addOffset\n ? getElementPosition(messageData.iframe)\n : { x: 0, y: 0 },\n newPosition = calcOffset()\n\n log(\n iframeId,\n 'Reposition requested from iFrame (offset x:' +\n offset.x +\n ' y:' +\n offset.y +\n ')'\n )\n\n if (window.top === window.self) {\n reposition()\n } else {\n scrollParent()\n }\n }\n\n function scrollTo() {\n if (false === on('onScroll', pagePosition)) {\n unsetPagePosition()\n } else {\n setPagePosition(iframeId)\n }\n }\n\n function findTarget(location) {\n function jumpToTarget() {\n var jumpPosition = getElementPosition(target)\n\n log(\n iframeId,\n 'Moving to in page link (#' +\n hash +\n ') at x: ' +\n jumpPosition.x +\n ' y: ' +\n jumpPosition.y\n )\n pagePosition = {\n x: jumpPosition.x,\n y: jumpPosition.y\n }\n\n scrollTo()\n log(iframeId, '--')\n }\n\n function jumpToParent() {\n if (window.parentIFrame) {\n window.parentIFrame.moveToAnchor(hash)\n } else {\n log(\n iframeId,\n 'In page link #' +\n hash +\n ' not found and window.parentIFrame not found'\n )\n }\n }\n\n var hash = location.split('#')[1] || '',\n hashData = decodeURIComponent(hash),\n target =\n document.getElementById(hashData) ||\n document.getElementsByName(hashData)[0]\n\n if (target) {\n jumpToTarget()\n } else if (window.top === window.self) {\n log(iframeId, 'In page link #' + hash + ' not found')\n } else {\n jumpToParent()\n }\n }\n\n function onMouse(event) {\n var mousePos = {}\n\n if (Number(messageData.width) === 0 && Number(messageData.height) === 0) {\n var data = getMsgBody(9).split(':')\n mousePos = {\n x: data[1],\n y: data[0]\n }\n } else {\n mousePos = {\n x: messageData.width,\n y: messageData.height\n }\n }\n\n on(event, {\n iframe: messageData.iframe,\n screenX: Number(mousePos.x),\n screenY: Number(mousePos.y),\n type: messageData.type\n })\n }\n\n function on(funcName, val) {\n return chkEvent(iframeId, funcName, val)\n }\n\n function actionMsg() {\n if (settings[iframeId] && settings[iframeId].firstRun) firstRun()\n\n switch (messageData.type) {\n case 'close': {\n closeIFrame(messageData.iframe)\n break\n }\n\n case 'message': {\n forwardMsgFromIFrame(getMsgBody(6))\n break\n }\n\n case 'mouseenter': {\n onMouse('onMouseEnter')\n break\n }\n\n case 'mouseleave': {\n onMouse('onMouseLeave')\n break\n }\n\n case 'autoResize': {\n settings[iframeId].autoResize = JSON.parse(getMsgBody(9))\n break\n }\n\n case 'scrollTo': {\n scrollRequestFromChild(false)\n break\n }\n\n case 'scrollToOffset': {\n scrollRequestFromChild(true)\n break\n }\n\n case 'pageInfo': {\n sendPageInfoToIframe(\n settings[iframeId] && settings[iframeId].iframe,\n iframeId\n )\n startPageInfoMonitor()\n break\n }\n\n case 'pageInfoStop': {\n stopPageInfoMonitor()\n break\n }\n\n case 'inPageLink': {\n findTarget(getMsgBody(9))\n break\n }\n\n case 'reset': {\n resetIFrame(messageData)\n break\n }\n\n case 'init': {\n resizeIFrame()\n on('onInit', messageData.iframe)\n break\n }\n\n default: {\n if (\n Number(messageData.width) === 0 &&\n Number(messageData.height) === 0\n ) {\n warn(\n 'Unsupported message received (' +\n messageData.type +\n '), this is likely due to the iframe containing a later ' +\n 'version of iframe-resizer than the parent page'\n )\n } else {\n resizeIFrame()\n }\n }\n }\n }\n\n function hasSettings(iframeId) {\n var retBool = true\n\n if (!settings[iframeId]) {\n retBool = false\n warn(\n messageData.type +\n ' No settings for ' +\n iframeId +\n '. Message was: ' +\n msg\n )\n }\n\n return retBool\n }\n\n function iFrameReadyMsgReceived() {\n // eslint-disable-next-line no-restricted-syntax, guard-for-in\n for (var iframeId in settings) {\n trigger(\n 'iFrame requested init',\n createOutgoingMsg(iframeId),\n settings[iframeId].iframe,\n iframeId\n )\n }\n }\n\n function firstRun() {\n if (settings[iframeId]) {\n settings[iframeId].firstRun = false\n }\n }\n\n var msg = event.data,\n messageData = {},\n iframeId = null\n\n if ('[iFrameResizerChild]Ready' === msg) {\n iFrameReadyMsgReceived()\n } else if (isMessageForUs()) {\n messageData = processMsg()\n iframeId = messageData.id\n if (settings[iframeId]) {\n settings[iframeId].loaded = true\n }\n\n if (!isMessageFromMetaParent() && hasSettings(iframeId)) {\n log(iframeId, 'Received: ' + msg)\n\n if (checkIFrameExists() && isMessageFromIFrame()) {\n actionMsg()\n }\n }\n } else {\n info(iframeId, 'Ignored: ' + msg)\n }\n }\n\n function chkEvent(iframeId, funcName, val) {\n var func = null,\n retVal = null\n\n if (settings[iframeId]) {\n func = settings[iframeId][funcName]\n\n if ('function' === typeof func) {\n retVal = func(val)\n } else {\n throw new TypeError(\n funcName + ' on iFrame[' + iframeId + '] is not a function'\n )\n }\n }\n\n return retVal\n }\n\n function removeIframeListeners(iframe) {\n var iframeId = iframe.id\n delete settings[iframeId]\n }\n\n function closeIFrame(iframe) {\n var iframeId = iframe.id\n if (chkEvent(iframeId, 'onClose', iframeId) === false) {\n log(iframeId, 'Close iframe cancelled by onClose event')\n return\n }\n log(iframeId, 'Removing iFrame: ' + iframeId)\n\n try {\n // Catch race condition error with React\n if (iframe.parentNode) {\n iframe.parentNode.removeChild(iframe)\n }\n } catch (error) {\n warn(error)\n }\n\n chkEvent(iframeId, 'onClosed', iframeId)\n log(iframeId, '--')\n removeIframeListeners(iframe)\n }\n\n function getPagePosition(iframeId) {\n if (null === pagePosition) {\n pagePosition = {\n x:\n window.pageXOffset === undefined\n ? document.documentElement.scrollLeft\n : window.pageXOffset,\n y:\n window.pageYOffset === undefined\n ? document.documentElement.scrollTop\n : window.pageYOffset\n }\n log(\n iframeId,\n 'Get page position: ' + pagePosition.x + ',' + pagePosition.y\n )\n }\n }\n\n function setPagePosition(iframeId) {\n if (null !== pagePosition) {\n window.scrollTo(pagePosition.x, pagePosition.y)\n log(\n iframeId,\n 'Set page position: ' + pagePosition.x + ',' + pagePosition.y\n )\n unsetPagePosition()\n }\n }\n\n function unsetPagePosition() {\n pagePosition = null\n }\n\n function resetIFrame(messageData) {\n function reset() {\n setSize(messageData)\n trigger('reset', 'reset', messageData.iframe, messageData.id)\n }\n\n log(\n messageData.id,\n 'Size reset requested by ' +\n ('init' === messageData.type ? 'host page' : 'iFrame')\n )\n getPagePosition(messageData.id)\n syncResize(reset, messageData, 'reset')\n }\n\n function setSize(messageData) {\n function setDimension(dimension) {\n if (!messageData.id) {\n log('undefined', 'messageData id not set')\n return\n }\n messageData.iframe.style[dimension] = messageData[dimension] + 'px'\n log(\n messageData.id,\n 'IFrame (' +\n iframeId +\n ') ' +\n dimension +\n ' set to ' +\n messageData[dimension] +\n 'px'\n )\n }\n\n function chkZero(dimension) {\n // FireFox sets dimension of hidden iFrames to zero.\n // So if we detect that set up an event to check for\n // when iFrame becomes visible.\n\n /* istanbul ignore next */ // Not testable in PhantomJS\n if (!hiddenCheckEnabled && '0' === messageData[dimension]) {\n hiddenCheckEnabled = true\n log(iframeId, 'Hidden iFrame detected, creating visibility listener')\n fixHiddenIFrames()\n }\n }\n\n function processDimension(dimension) {\n setDimension(dimension)\n chkZero(dimension)\n }\n\n var iframeId = messageData.iframe.id\n\n if (settings[iframeId]) {\n if (settings[iframeId].sizeHeight) {\n processDimension('height')\n }\n if (settings[iframeId].sizeWidth) {\n processDimension('width')\n }\n }\n }\n\n function syncResize(func, messageData, doNotSync) {\n /* istanbul ignore if */ // Not testable in PhantomJS\n if (\n doNotSync !== messageData.type &&\n requestAnimationFrame &&\n // including check for jasmine because had trouble getting spy to work in unit test using requestAnimationFrame\n !window.jasmine\n ) {\n log(messageData.id, 'Requesting animation frame')\n requestAnimationFrame(func)\n } else {\n func()\n }\n }\n\n function trigger(calleeMsg, msg, iframe, id, noResponseWarning) {\n function postMessageToIFrame() {\n var target = settings[id] && settings[id].targetOrigin\n log(\n id,\n '[' +\n calleeMsg +\n '] Sending msg to iframe[' +\n id +\n '] (' +\n msg +\n ') targetOrigin: ' +\n target\n )\n iframe.contentWindow.postMessage(msgId + msg, target)\n }\n\n function iFrameNotFound() {\n warn(id, '[' + calleeMsg + '] IFrame(' + id + ') not found')\n }\n\n function chkAndSend() {\n if (\n iframe &&\n 'contentWindow' in iframe &&\n null !== iframe.contentWindow\n ) {\n // Null test for PhantomJS\n postMessageToIFrame()\n } else {\n iFrameNotFound()\n }\n }\n\n function warnOnNoResponse() {\n function warning() {\n if (settings[id] && !settings[id].loaded && !errorShown) {\n errorShown = true\n warn(\n id,\n 'IFrame has not responded within ' +\n settings[id].warningTimeout / 1000 +\n ' seconds. Check iFrameResizer.contentWindow.js has been loaded in iFrame. This message can be ignored if everything is working, or you can set the warningTimeout option to a higher value or zero to suppress this warning.'\n )\n }\n }\n\n if (\n !!noResponseWarning &&\n settings[id] &&\n !!settings[id].warningTimeout\n ) {\n settings[id].msgTimeout = setTimeout(\n warning,\n settings[id].warningTimeout\n )\n }\n }\n\n var errorShown = false\n\n id = id || iframe.id\n\n if (settings[id]) {\n chkAndSend()\n warnOnNoResponse()\n }\n }\n\n function createOutgoingMsg(iframeId) {\n return (\n iframeId +\n ':' +\n settings[iframeId].bodyMarginV1 +\n ':' +\n settings[iframeId].sizeWidth +\n ':' +\n settings[iframeId].log +\n ':' +\n settings[iframeId].interval +\n ':' +\n settings[iframeId].enablePublicMethods +\n ':' +\n settings[iframeId].autoResize +\n ':' +\n settings[iframeId].bodyMargin +\n ':' +\n settings[iframeId].heightCalculationMethod +\n ':' +\n settings[iframeId].bodyBackground +\n ':' +\n settings[iframeId].bodyPadding +\n ':' +\n settings[iframeId].tolerance +\n ':' +\n settings[iframeId].inPageLinks +\n ':' +\n settings[iframeId].resizeFrom +\n ':' +\n settings[iframeId].widthCalculationMethod +\n ':' +\n settings[iframeId].mouseEvents\n )\n }\n\n function isNumber(value) {\n return typeof value === 'number'\n }\n\n function setupIFrame(iframe, options) {\n function setLimits() {\n function addStyle(style) {\n var styleValue = settings[iframeId][style]\n if (Infinity !== styleValue && 0 !== styleValue) {\n iframe.style[style] = isNumber(styleValue)\n ? styleValue + 'px'\n : styleValue\n log(iframeId, 'Set ' + style + ' = ' + iframe.style[style])\n }\n }\n\n function chkMinMax(dimension) {\n if (\n settings[iframeId]['min' + dimension] >\n settings[iframeId]['max' + dimension]\n ) {\n throw new Error(\n 'Value for min' +\n dimension +\n ' can not be greater than max' +\n dimension\n )\n }\n }\n\n chkMinMax('Height')\n chkMinMax('Width')\n\n addStyle('maxHeight')\n addStyle('minHeight')\n addStyle('maxWidth')\n addStyle('minWidth')\n }\n\n function newId() {\n var id = (options && options.id) || defaults.id + count++\n if (null !== document.getElementById(id)) {\n id += count++\n }\n return id\n }\n\n function ensureHasId(iframeId) {\n if (typeof iframeId !== 'string') {\n throw new TypeError('Invaild id for iFrame. Expected String')\n }\n\n if ('' === iframeId) {\n // eslint-disable-next-line no-multi-assign\n iframe.id = iframeId = newId()\n logEnabled = (options || {}).log\n log(\n iframeId,\n 'Added missing iframe ID: ' + iframeId + ' (' + iframe.src + ')'\n )\n }\n\n return iframeId\n }\n\n function setScrolling() {\n log(\n iframeId,\n 'IFrame scrolling ' +\n (settings[iframeId] && settings[iframeId].scrolling\n ? 'enabled'\n : 'disabled') +\n ' for ' +\n iframeId\n )\n iframe.style.overflow =\n false === (settings[iframeId] && settings[iframeId].scrolling)\n ? 'hidden'\n : 'auto'\n switch (settings[iframeId] && settings[iframeId].scrolling) {\n case 'omit': {\n break\n }\n\n case true: {\n iframe.scrolling = 'yes'\n break\n }\n\n case false: {\n iframe.scrolling = 'no'\n break\n }\n\n default: {\n iframe.scrolling = settings[iframeId]\n ? settings[iframeId].scrolling\n : 'no'\n }\n }\n }\n\n // The V1 iFrame script expects an int, where as in V2 expects a CSS\n // string value such as '1px 3em', so if we have an int for V2, set V1=V2\n // and then convert V2 to a string PX value.\n function setupBodyMarginValues() {\n if (\n 'number' ===\n typeof (settings[iframeId] && settings[iframeId].bodyMargin) ||\n '0' === (settings[iframeId] && settings[iframeId].bodyMargin)\n ) {\n settings[iframeId].bodyMarginV1 = settings[iframeId].bodyMargin\n settings[iframeId].bodyMargin =\n '' + settings[iframeId].bodyMargin + 'px'\n }\n }\n\n function checkReset() {\n // Reduce scope of firstRun to function, because IE8's JS execution\n // context stack is borked and this value gets externally\n // changed midway through running this function!!!\n var firstRun = settings[iframeId] && settings[iframeId].firstRun,\n resetRequertMethod =\n settings[iframeId] &&\n settings[iframeId].heightCalculationMethod in resetRequiredMethods\n\n if (!firstRun && resetRequertMethod) {\n resetIFrame({ iframe: iframe, height: 0, width: 0, type: 'init' })\n }\n }\n\n function setupIFrameObject() {\n if (settings[iframeId]) {\n settings[iframeId].iframe.iFrameResizer = {\n close: closeIFrame.bind(null, settings[iframeId].iframe),\n\n removeListeners: removeIframeListeners.bind(\n null,\n settings[iframeId].iframe\n ),\n\n resize: trigger.bind(\n null,\n 'Window resize',\n 'resize',\n settings[iframeId].iframe\n ),\n\n moveToAnchor: function (anchor) {\n trigger(\n 'Move to anchor',\n 'moveToAnchor:' + anchor,\n settings[iframeId].iframe,\n iframeId\n )\n },\n\n sendMessage: function (message) {\n message = JSON.stringify(message)\n trigger(\n 'Send Message',\n 'message:' + message,\n settings[iframeId].iframe,\n iframeId\n )\n }\n }\n }\n }\n\n // We have to call trigger twice, as we can not be sure if all\n // iframes have completed loading when this code runs. The\n // event listener also catches the page changing in the iFrame.\n function init(msg) {\n function iFrameLoaded() {\n trigger('iFrame.onload', msg, iframe, undefined, true)\n checkReset()\n }\n\n function createDestroyObserver(MutationObserver) {\n if (!iframe.parentNode) {\n return\n }\n\n var destroyObserver = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n var removedNodes = Array.prototype.slice.call(mutation.removedNodes) // Transform NodeList into an Array\n removedNodes.forEach(function (removedNode) {\n if (removedNode === iframe) {\n closeIFrame(iframe)\n }\n })\n })\n })\n destroyObserver.observe(iframe.parentNode, {\n childList: true\n })\n }\n\n var MutationObserver = getMutationObserver()\n if (MutationObserver) {\n createDestroyObserver(MutationObserver)\n }\n\n addEventListener(iframe, 'load', iFrameLoaded)\n trigger('init', msg, iframe, undefined, true)\n }\n\n function checkOptions(options) {\n if ('object' !== typeof options) {\n throw new TypeError('Options is not an object')\n }\n }\n\n function copyOptions(options) {\n // eslint-disable-next-line no-restricted-syntax\n for (var option in defaults) {\n if (Object.prototype.hasOwnProperty.call(defaults, option)) {\n settings[iframeId][option] = Object.prototype.hasOwnProperty.call(\n options,\n option\n )\n ? options[option]\n : defaults[option]\n }\n }\n }\n\n function getTargetOrigin(remoteHost) {\n return '' === remoteHost ||\n null !== remoteHost.match(/^(about:blank|javascript:|file:\\/\\/)/)\n ? '*'\n : remoteHost\n }\n\n function depricate(key) {\n var splitName = key.split('Callback')\n\n if (splitName.length === 2) {\n var name =\n 'on' + splitName[0].charAt(0).toUpperCase() + splitName[0].slice(1)\n this[name] = this[key]\n delete this[key]\n warn(\n iframeId,\n \"Deprecated: '\" +\n key +\n \"' has been renamed '\" +\n name +\n \"'. The old method will be removed in the next major version.\"\n )\n }\n }\n\n function processOptions(options) {\n options = options || {}\n\n settings[iframeId] = Object.create(null) // Protect against prototype attacks\n settings[iframeId].iframe = iframe\n settings[iframeId].firstRun = true\n settings[iframeId].remoteHost =\n iframe.src && iframe.src.split('/').slice(0, 3).join('/')\n\n checkOptions(options)\n Object.keys(options).forEach(depricate, options)\n copyOptions(options)\n\n if (settings[iframeId]) {\n settings[iframeId].targetOrigin =\n true === settings[iframeId].checkOrigin\n ? getTargetOrigin(settings[iframeId].remoteHost)\n : '*'\n }\n }\n\n function beenHere() {\n return iframeId in settings && 'iFrameResizer' in iframe\n }\n\n var iframeId = ensureHasId(iframe.id)\n\n if (beenHere()) {\n warn(iframeId, 'Ignored iFrame, already setup.')\n } else {\n processOptions(options)\n setScrolling()\n setLimits()\n setupBodyMarginValues()\n init(createOutgoingMsg(iframeId))\n setupIFrameObject()\n }\n }\n\n function debouce(fn, time) {\n if (null === timer) {\n timer = setTimeout(function () {\n timer = null\n fn()\n }, time)\n }\n }\n\n var frameTimer = {}\n function debounceFrameEvents(fn, time, frameId) {\n if (!frameTimer[frameId]) {\n frameTimer[frameId] = setTimeout(function () {\n frameTimer[frameId] = null\n fn()\n }, time)\n }\n }\n\n // Not testable in PhantomJS\n /* istanbul ignore next */\n\n function fixHiddenIFrames() {\n function checkIFrames() {\n function checkIFrame(settingId) {\n function chkDimension(dimension) {\n return (\n '0px' ===\n (settings[settingId] && settings[settingId].iframe.style[dimension])\n )\n }\n\n function isVisible(el) {\n return null !== el.offsetParent\n }\n\n if (\n settings[settingId] &&\n isVisible(settings[settingId].iframe) &&\n (chkDimension('height') || chkDimension('width'))\n ) {\n trigger(\n 'Visibility change',\n 'resize',\n settings[settingId].iframe,\n settingId\n )\n }\n }\n\n Object.keys(settings).forEach(function (key) {\n checkIFrame(key)\n })\n }\n\n function mutationObserved(mutations) {\n log(\n 'window',\n 'Mutation observed: ' + mutations[0].target + ' ' + mutations[0].type\n )\n debouce(checkIFrames, 16)\n }\n\n function createMutationObserver() {\n var target = document.querySelector('body'),\n config = {\n attributes: true,\n attributeOldValue: false,\n characterData: true,\n characterDataOldValue: false,\n childList: true,\n subtree: true\n },\n observer = new MutationObserver(mutationObserved)\n\n observer.observe(target, config)\n }\n\n var MutationObserver = getMutationObserver()\n if (MutationObserver) {\n createMutationObserver()\n }\n }\n\n function resizeIFrames(event) {\n function resize() {\n sendTriggerMsg('Window ' + event, 'resize')\n }\n\n log('window', 'Trigger event: ' + event)\n debouce(resize, 16)\n }\n\n // Not testable in PhantomJS\n /* istanbul ignore next */\n function tabVisible() {\n function resize() {\n sendTriggerMsg('Tab Visible', 'resize')\n }\n\n if ('hidden' !== document.visibilityState) {\n log('document', 'Trigger event: Visibility change')\n debouce(resize, 16)\n }\n }\n\n function sendTriggerMsg(eventName, event) {\n function isIFrameResizeEnabled(iframeId) {\n return (\n settings[iframeId] &&\n 'parent' === settings[iframeId].resizeFrom &&\n settings[iframeId].autoResize &&\n !settings[iframeId].firstRun\n )\n }\n\n Object.keys(settings).forEach(function (iframeId) {\n if (isIFrameResizeEnabled(iframeId)) {\n trigger(eventName, event, settings[iframeId].iframe, iframeId)\n }\n })\n }\n\n function setupEventListeners() {\n addEventListener(window, 'message', iFrameListener)\n\n addEventListener(window, 'resize', function () {\n resizeIFrames('resize')\n })\n\n addEventListener(document, 'visibilitychange', tabVisible)\n\n addEventListener(document, '-webkit-visibilitychange', tabVisible)\n }\n\n function factory() {\n function init(options, element) {\n function chkType() {\n if (!element.tagName) {\n throw new TypeError('Object is not a valid DOM element')\n } else if ('IFRAME' !== element.tagName.toUpperCase()) {\n throw new TypeError(\n 'Expected `;\n\n // FROM VIMEO\n } else if (url.includes('vimeo.com/')) {\n videoType = 'vimeo';\n const videoId = getVimeoId(url);\n videoEl = `\n \n `;\n\n // FROM UPLOAD\n } else {\n videoType = 'upload';\n const fileExt = getFileExtension(url);\n videoEl = `\n \n `;\n }\n\n return {\n videoType,\n videoEl: `\n
\n ${videoEl}\n
\n `,\n };\n};\n\nconst Video = ({ el, props }: VideoProps): void => {\n const { url, hasPreviewImg = false } = props;\n\n if (!url) {\n return;\n }\n\n const videoData = getVideoData(url, hasPreviewImg);\n const videoContainer = el.querySelector(`.${VIDEO_WRAPPER_CLASS}`);\n\n const showVideo = (): void => {\n const isVideoExist = el.querySelector(`.${VIDEO_CLASS}`);\n\n if (!isVideoExist && videoContainer) {\n videoContainer.insertAdjacentHTML('afterbegin', videoData.videoEl);\n }\n\n el.classList.add('show-video');\n };\n\n if (hasPreviewImg) {\n const playBtn = el.querySelector(`.${PLAY_BTN_CLASS}`) as HTMLButtonElement;\n\n playBtn?.addEventListener('click', () => {\n showVideo();\n });\n } else {\n showVideo();\n }\n};\n\nexport default Video;\n","import Choices from 'choices.js';\nimport ChevronDownIcon from '../../assets/icons/chevron-down.svg';\n\ninterface DropdownSettings {\n prefixIcon?: string;\n ariaLabel?: string;\n}\n\ninterface DropdownProps {\n el: HTMLElement;\n props: DropdownSettings;\n}\n\ninterface CustomSelectElProps {\n className: string;\n id: string;\n value: string;\n active: boolean;\n disabled: boolean;\n label: string;\n icon?: string;\n iconString?: boolean;\n}\n\nconst selectEl = ({ className, id, value, active, disabled, label, icon, iconString }: CustomSelectElProps): string => {\n const iconRender = (): string => {\n if (!icon) {\n return '';\n }\n\n if (iconString) {\n return icon;\n }\n\n return ``;\n };\n\n return `\n \n ${iconRender()}\n ${label}\n ${ChevronDownIcon}\n \n`;\n};\n\ninterface CustomOptionElProps {\n className: string;\n id: string;\n value: string;\n groupId: number;\n itemSelectText: string;\n disabled: boolean;\n label: string;\n icon?: string;\n defaultIcon?: boolean;\n selected: boolean;\n}\n\nconst optionEl = ({ className, id, value, itemSelectText, disabled, label, groupId, icon }: CustomOptionElProps): string => {\n return `\n 0 ? 'role=\"treeitem\"' : 'role=\"option\"'}\n >\n ${icon ? `` : ''}\n ${label}\n \n`;\n};\n\n\nconst Dropdown = ({ el, props }: DropdownProps): Choices => {\n const { prefixIcon, ariaLabel } = props;\n\n const choices = new Choices(el, {\n placeholder: false,\n searchEnabled: false,\n shouldSort: false,\n itemSelectText: '',\n // choices: choicesItems,\n\n // wrongly configured typescript plugin as void so we have to follow\n callbackOnCreateTemplates(strToEl): void {\n const { itemSelectText } = (this as Choices).config;\n\n // not set properly by the plugin thus need to disable it\n /* eslint-disable */\n return {\n containerOuter(\n { classNames: { containerOuter } }: any,\n dir: HTMLElement['dir'],\n isSelectElement: boolean,\n isSelectOneElement: boolean,\n searchEnabled: boolean,\n passedElementType: any,\n labelId: string,\n ): HTMLDivElement {\n const div = Object.assign(document.createElement('div'), {\n className: containerOuter,\n });\n\n div.dataset.type = passedElementType;\n\n if (dir) {\n div.dir = dir;\n }\n\n if (isSelectOneElement) {\n div.tabIndex = 0;\n }\n\n if (isSelectElement) {\n // div.setAttribute('role', searchEnabled ? 'combobox' : 'listbox');\n if (searchEnabled) {\n div.setAttribute('aria-autocomplete', 'list');\n }\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\n return div;\n },\n itemList(\n { classNames: { list, listSingle, listItems } }: any,\n isSelectOneElement: boolean,\n ): HTMLDivElement {\n const itemListDiv = Object.assign(document.createElement('div'), {\n className: `${list} ${isSelectOneElement ? listSingle : listItems}`,\n });\n\n itemListDiv.setAttribute('role', 'listbox');\n if (ariaLabel) {\n itemListDiv.setAttribute('aria-label', ariaLabel);\n }\n\n return itemListDiv;\n },\n item({ classNames }: any, { highlighted, id, label, active, disabled, value, customProperties }: any): HTMLElement {\n return strToEl(selectEl({\n className: `${String(classNames.item)} ${String(\n highlighted\n ? classNames.highlightedState\n : classNames.itemSelectable\n )}`,\n id: String(id),\n label: String(label),\n value: String(value),\n active,\n disabled,\n icon: prefixIcon ? prefixIcon : customProperties.iconUrl,\n iconString: !!prefixIcon\n }));\n },\n choice({ classNames }: any, { id, label, disabled, value, groupId, customProperties, selected }: any) {\n const placeholderClass = value === '' ? 'choices__placeholder' : '';\n\n return strToEl(optionEl({\n className: `${String(classNames.item)} ${String(classNames.itemChoice)} ${placeholderClass} ${String(\n disabled\n ? classNames.itemDisabled\n : classNames.itemSelectable\n )}`,\n id: String(id),\n label: String(label),\n value: String(value),\n itemSelectText: itemSelectText ? String(itemSelectText) : '',\n groupId,\n disabled,\n selected,\n icon: customProperties.iconUrl\n }));\n }\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n } as unknown as void;\n /* eslint-enable */\n },\n });\n\n return choices;\n};\n\nexport default Dropdown;\n","import kebabCase from 'lodash.kebabcase';\nimport camelCase from 'lodash.camelcase';\n\nconst ComponentInit = componentList => {\n document.addEventListener('DOMContentLoaded', () => {\n Object.keys(componentList).forEach(key => {\n // get elements\n const elements = document.querySelectorAll(`[data-${kebabCase(key)}]`);\n\n // if app/component does not exist on the page abort\n if (!elements) {\n return;\n }\n\n // if app/component exists on page proceed\n const component = componentList[key];\n\n elements.forEach((el, index) => {\n // get data as string\n const data = el.dataset[camelCase(key)];\n\n // if the data is not null, parse the data as a string\n const props = data ? JSON.parse(data) : '';\n\n // if data is incorrectly get\n // props !== '' to accomodate just using data without props.\n if (typeof props === 'string' && props !== '') {\n return;\n }\n\n if (!el.dataset.init) {\n el.dataset.init = true;\n component({ el, props, index });\n }\n });\n });\n }, false);\n};\n\nexport default ComponentInit;\n","function e(e,t){for(var o=0;oe.length)&&(t=e.length);for(var o=0,n=new Array(t);o0&&this.registerTriggers.apply(this,t(a)),this.onClick=this.onClick.bind(this),this.onKeydown=this.onKeydown.bind(this)}var i,a,r;return i=o,(a=[{key:\"registerTriggers\",value:function(){for(var e=this,t=arguments.length,o=new Array(t),n=0;n0&&void 0!==arguments[0]?arguments[0]:null;if(this.activeElement=document.activeElement,this.modal.setAttribute(\"aria-hidden\",\"false\"),this.modal.classList.add(this.config.openClass),this.scrollBehaviour(\"disable\"),this.addEventListeners(),this.config.awaitOpenAnimation){var o=function t(){e.modal.removeEventListener(\"animationend\",t,!1),e.setFocusToFirstNode()};this.modal.addEventListener(\"animationend\",o,!1)}else this.setFocusToFirstNode();this.config.onShow(this.modal,this.activeElement,t)}},{key:\"closeModal\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=this.modal;if(this.modal.setAttribute(\"aria-hidden\",\"true\"),this.removeEventListeners(),this.scrollBehaviour(\"enable\"),this.activeElement&&this.activeElement.focus&&this.activeElement.focus(),this.config.onClose(this.modal,this.activeElement,e),this.config.awaitCloseAnimation){var o=this.config.openClass;this.modal.addEventListener(\"animationend\",(function e(){t.classList.remove(o),t.removeEventListener(\"animationend\",e,!1)}),!1)}else t.classList.remove(this.config.openClass)}},{key:\"closeModalById\",value:function(e){this.modal=document.getElementById(e),this.modal&&this.closeModal()}},{key:\"scrollBehaviour\",value:function(e){if(this.config.disableScroll){var t=document.querySelector(\"body\");switch(e){case\"enable\":Object.assign(t.style,{overflow:\"\"});break;case\"disable\":Object.assign(t.style,{overflow:\"hidden\"})}}}},{key:\"addEventListeners\",value:function(){this.modal.addEventListener(\"touchstart\",this.onClick),this.modal.addEventListener(\"click\",this.onClick),document.addEventListener(\"keydown\",this.onKeydown)}},{key:\"removeEventListeners\",value:function(){this.modal.removeEventListener(\"touchstart\",this.onClick),this.modal.removeEventListener(\"click\",this.onClick),document.removeEventListener(\"keydown\",this.onKeydown)}},{key:\"onClick\",value:function(e){(e.target.hasAttribute(this.config.closeTrigger)||e.target.parentNode.hasAttribute(this.config.closeTrigger))&&(e.preventDefault(),e.stopPropagation(),this.closeModal(e))}},{key:\"onKeydown\",value:function(e){27===e.keyCode&&this.closeModal(e),9===e.keyCode&&this.retainFocus(e)}},{key:\"getFocusableNodes\",value:function(){var e=this.modal.querySelectorAll(n);return Array.apply(void 0,t(e))}},{key:\"setFocusToFirstNode\",value:function(){var e=this;if(!this.config.disableFocus){var t=this.getFocusableNodes();if(0!==t.length){var o=t.filter((function(t){return!t.hasAttribute(e.config.closeTrigger)}));o.length>0&&o[0].focus(),0===o.length&&t[0].focus()}}}},{key:\"retainFocus\",value:function(e){var t=this.getFocusableNodes();if(0!==t.length)if(t=t.filter((function(e){return null!==e.offsetParent})),this.modal.contains(document.activeElement)){var o=t.indexOf(document.activeElement);e.shiftKey&&0===o&&(t[t.length-1].focus(),e.preventDefault()),!e.shiftKey&&t.length>0&&o===t.length-1&&(t[0].focus(),e.preventDefault())}else t[0].focus()}}])&&e(i.prototype,a),r&&e(i,r),o}(),a=null,r=function(e){if(!document.getElementById(e))return console.warn(\"MicroModal: ❗Seems like you have missed %c'\".concat(e,\"'\"),\"background-color: #f8f9fa;color: #50596c;font-weight: bold;\",\"ID somewhere in your code. Refer example below to resolve it.\"),console.warn(\"%cExample:\",\"background-color: #f8f9fa;color: #50596c;font-weight: bold;\",'
')),!1},s=function(e,t){if(function(e){e.length<=0&&(console.warn(\"MicroModal: ❗Please specify at least one %c'micromodal-trigger'\",\"background-color: #f8f9fa;color: #50596c;font-weight: bold;\",\"data attribute.\"),console.warn(\"%cExample:\",\"background-color: #f8f9fa;color: #50596c;font-weight: bold;\",''))}(e),!t)return!0;for(var o in t)r(o);return!0},{init:function(e){var o=Object.assign({},{openTrigger:\"data-micromodal-trigger\"},e),n=t(document.querySelectorAll(\"[\".concat(o.openTrigger,\"]\"))),r=function(e,t){var o=[];return e.forEach((function(e){var n=e.attributes[t].value;void 0===o[n]&&(o[n]=[]),o[n].push(e)})),o}(n,o.openTrigger);if(!0!==o.debugMode||!1!==s(n,r))for(var l in r){var c=r[l];o.targetModal=l,o.triggers=t(c),a=new i(o)}},show:function(e,t){var o=t||{};o.targetModal=e,!0===o.debugMode&&!1===r(e)||(a&&a.removeEventListeners(),(a=new i(o)).showModal())},close:function(e){e?a.closeModalById(e):a.closeModal()}});\"undefined\"!=typeof window&&(window.MicroModal=l);export default l;\n","/**\n * components.js\n *\n * Import the JS for your components here.\n *\n */\n\nimport './Accordion/Accordion';\nimport './Buttons/stopDisabledLinksFiring';\nimport './Tables/TableWrapper';\nimport Video from './Video/Video';\nimport Dropdown from './Dropdown/Dropdown';\nimport LanguageSelector from './Dropdown/LanguageSelector';\nimport ComponentInit from '../js/utils/ComponentInit';\n\n// Format:\n// data-component-name: ComponentFunction\n// we shall order these in page load critical first\nconst componentList = { Video, Dropdown, LanguageSelector };\n\n// eslint-disable-next-line @typescript-eslint/no-confusing-void-expression\nexport default ComponentInit(componentList);\n","export const getYoutubeId = (url: string): string => {\n const arr = url.split(/(vi\\/|v%3D|v=|\\/v\\/|youtu\\.be\\/|\\/embed\\/)/);\n return undefined !== arr[2] ? arr[2].split(/[^\\w-]/i)[0] : arr[0];\n\n // Tested URLs:\n // url = 'http://youtube.googleapis.com/v/4e_kz79tjb8?version=3';\n // url = 'https://www.youtube.com/watch?feature=g-vrec&v=Y1xs_xPb46M';\n // url = 'http://www.youtube.com/watch?feature=player_embedded&v=Ab25nviakcw#';\n // url = 'http://youtu.be/Ab25nviakcw';\n // url = 'http://www.youtube.com/watch?v=Ab25nviakcw';\n // url = '';\n // url = '';\n // url = 'http://i1.ytimg.com/vi/Ab25nviakcw/default.jpg';\n // url = 'https://www.youtube.com/watch?v=BGL22PTIOAM&feature=g-all-xit';\n // url = 'BGL22PTIOAM';\n};\n\nexport const getVimeoId = (url: string): string => {\n const arr = (/(vimeo(pro)?\\.com)\\/(?:[^\\d]+)?(\\d+)\\??(.*)?$/).exec(url);\n return arr ? arr[3] : '';\n // Tested URLs:\n // url = 'https://vimeo.com/17401578'\n // url = '

Wedding video, Eskuvoi video, Svadobne video from Tomas Fekete on Vimeo.

'\n // url = 'https://player.vimeo.com/video/17401578'\n};\n\nexport const getFileExtension = (url: string): string | undefined => {\n const { 0: cleanUrl } = url.split(/[#?]/);\n const ext = cleanUrl.split('.').pop()\n ?.trim();\n return ext;\n\n // Tested URLs:\n // url = 'http://localhost/assets/images/main.jpg?w=100&h=200#123'\n // url = 'http://localhost/assets/images/main.jpg#123'\n // url = 'http://localhost/assets/images/main.jpg'\n};\n","import Dropdown from './Dropdown';\nimport GlobeIcon from '../../assets/icons/globe.svg';\n\ninterface LanguageSelectorProps {\n el: HTMLElement;\n}\n\n// Build on top of dropdown component\nconst LanguageSelector = ({ el }: LanguageSelectorProps): void => {\n const choices = Dropdown({ el, props: { prefixIcon: GlobeIcon, ariaLabel: 'select language' } });\n\n if (!choices?.config.choices.length) {\n return;\n }\n\n el.addEventListener('change', e => {\n const { value } = (e as CustomEvent).detail;\n\n if (!value) {\n return;\n }\n\n window.location.href = value;\n });\n};\n\nexport default LanguageSelector;\n\n","interface CopyPageUrlProps {\n el: HTMLElement;\n}\n\nconst CopyPageUrl = ({ el }: CopyPageUrlProps): void => {\n const pageUrl = document.location.href;\n\n el.addEventListener('click', async() => {\n try {\n await navigator.clipboard.writeText(pageUrl);\n // const copyLinkText = el.nextElementSibling;\n // copyLinkText?.classList.add('visible');\n // setTimeout(() => {\n // copyLinkText?.classList.remove('visible');\n // }, 2000);\n } catch (e) {\n // Do nothing\n console.error(e);\n }\n });\n};\n\nexport default CopyPageUrl;\n","import MicroModal from 'micromodal';\n\n// Run the functions on document ready\ndocument.addEventListener('DOMContentLoaded', () => {\n MicroModal.init({ disableScroll: true });\n});\n\n// Due to the mobile touch bug that exists in the MicroModal lib, we had to use the below\n// to handle close modal function, the main point here is the stopPropagation on the click event\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ndocument.body.addEventListener('click', (evt: any) => {\n if (evt.target?.className.includes('modal-overlay') || evt.target?.className.includes('modal-close')) {\n evt.preventDefault();\n evt.stopPropagation();\n const modals = document.querySelectorAll('.modal');\n modals.forEach(element => {\n if (element.classList.contains('is-open')) {\n const hiddenClose = element.querySelector('.hidden-close');\n if (hiddenClose) {\n (hiddenClose as HTMLDivElement).click();\n }\n }\n });\n }\n}, false);\n","/**\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 { iframeResizer } from 'iframe-resizer';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n iframeResizer({ log: true, checkOrigin: false }, '.dynamic-iframe-el');\n});\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 };","/* 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 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 { 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.getSlideIndexByData(index);\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}","export 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 = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\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 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};","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}","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 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 { 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}","export 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 = swiper.getSlideIndexByData(newIndex);\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, 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 = swiper.getSlideIndex(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 = swiper.getSlideIndex(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 loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\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}","export 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 = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains(params.slideActiveClass))[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 = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\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 = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\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.destroyed && 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 params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.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 swiper.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 { 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)) {\n const proceed = event.type === 'pointercancel' && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\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 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\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 setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\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}","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, elementIndex } 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 getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\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 setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\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}","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 setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\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 if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}","export default function unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\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};","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\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 { 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 (swiper.__preventObserver__) return;\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}","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 if (swiper.realIndex === index) return;\n if (index < swiper.loopedSlides || index > swiper.slides.length - swiper.loopedSlides) {\n swiper.loopFix({\n direction: index < swiper.loopedSlides ? 'prev' : 'next',\n activeSlideIndex: index,\n slideTo: false\n });\n }\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 const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\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.split(' '));\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\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.split(' '));\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 if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\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 swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...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.split(' ')));\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\ninterface SliderSwiperProps {\n el: HTMLElement;\n}\n\nconst Slider = ({ el }: SliderSwiperProps): void => {\n const sliderSwiper = new Swiper(el, {\n init: false,\n autoHeight: true,\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n pagination: {\n el: '.swiper-pagination',\n clickable: true,\n },\n });\n\n sliderSwiper.init();\n};\n\nexport default Slider;\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","import Cookies from 'js-cookie';\n\ninterface CookieConsentCookie {\n acceptAll: boolean;\n}\n\ninterface CookieConsentSettings {\n cookieName: string;\n}\n\ninterface CookieConsentProps {\n el: HTMLScriptElement;\n props: CookieConsentSettings;\n}\n\nconst getAttributeValue = (source: HTMLElement, attrName: string): string => {\n if (attrName === 'style') {\n return source.getAttribute(attrName) || '';\n }\n return source[attrName] || source.getAttribute(attrName);\n};\n\nconst copyAttributes = (destination: HTMLElement, source: HTMLElement, excludes?: string[]): void => {\n const { attributes } = source;\n const len = attributes.length;\n for (let i = 0; i < len; i += 1) {\n const attrName = attributes[i].nodeName;\n\n if (!excludes?.length || !excludes.includes(attrName)) {\n destination.setAttribute(attrName, getAttributeValue(source, attrName));\n }\n }\n};\n\nconst getCookie = (cookieName: string): CookieConsentCookie | null => {\n try {\n return JSON.parse(Cookies.get(cookieName) || 'null');\n } catch (e) {\n console.error(e);\n return null;\n }\n};\n\nconst REJECT_BTN = '[data-reject]';\nconst ACCEPT_BTN = '[data-accept]';\nconst SCRIPT_SELECTOR = '[data-cc-script]';\nconst IMG_SELECTOR = '[data-cc-img]';\nconst IS_ACTIVE_CLASS = 'is-active';\n\n// will be used for\nconst CookieConsent = ({ el, props }: CookieConsentProps): void => {\n const { cookieName } = props;\n\n const cookieData = getCookie(cookieName);\n\n // if user already accept or reject then just do nothing (arranged by BED)\n if (cookieData) {\n return;\n }\n\n // other than that show the consent banner.\n el.classList.add(IS_ACTIVE_CLASS);\n\n const acceptBtn = el.querySelector(ACCEPT_BTN);\n const rejectBtn = el.querySelector(REJECT_BTN);\n\n // Copy attributes over to the new \"revived\" script\n const allScripts = document.querySelectorAll(SCRIPT_SELECTOR);\n const allImages = document.querySelectorAll(IMG_SELECTOR);\n\n if (!acceptBtn || !rejectBtn) {\n return;\n }\n\n acceptBtn.addEventListener('click', () => {\n // if user accept cookies\n el.classList.remove(IS_ACTIVE_CLASS);\n const cookieValue: CookieConsentCookie = { acceptAll: true };\n Cookies.set(cookieName, JSON.stringify(cookieValue), { expires: 30 });\n\n if (allScripts) {\n allScripts.forEach(currentScript => {\n currentScript.removeAttribute('type');\n\n // create fresh script (with the same code)\n const freshScript = document.createElement('script');\n freshScript.textContent = currentScript.innerHTML;\n\n copyAttributes(freshScript, currentScript);\n currentScript.parentNode?.replaceChild(freshScript, currentScript);\n });\n }\n\n if (allImages) {\n allImages.forEach(currentImage => {\n const freshImage = document.createElement('img');\n const { src } = currentImage.dataset;\n\n if (src) {\n copyAttributes(freshImage, currentImage, ['data-src']);\n freshImage.setAttribute('src', src);\n currentImage.parentNode?.replaceChild(freshImage, currentImage);\n }\n });\n }\n });\n\n rejectBtn.addEventListener('click', () => {\n el.classList.remove(IS_ACTIVE_CLASS);\n const cookieValue: CookieConsentCookie = { acceptAll: false };\n Cookies.set(cookieName, JSON.stringify(cookieValue), { expires: 30 });\n });\n};\n\nexport default CookieConsent;\n","/**\n * components.js\n *\n * Import the JS for your components here.\n *\n */\nimport './BackToTop/BackToTop';\nimport './Modal/Modal';\nimport CopyPageUrl from './SocialShare/SocialShare';\nimport './DynamicIframe/DynamicIframe';\nimport Slider from './Slider/Slider';\nimport TimelineItem from './TimelineItem/TimelineItem';\nimport CookieConsent from './CookieConsent/CookieConsent';\nimport ComponentInit from '../js/utils/ComponentInit';\nimport './UTMTracker/UTMTracker';\n\n// Format:\n// data-component-name: ComponentFunction\n// we shall order these in page load critical first\nconst componentList = { Slider, CopyPageUrl, TimelineItem, CookieConsent };\n\n// eslint-disable-next-line @typescript-eslint/no-confusing-void-expression\nexport default ComponentInit(componentList);\n","import debounce from 'lodash.debounce';\n\ninterface TimelineItemProps {\n el: HTMLElement;\n}\n\nconst DEBOUNCE_VALUE = 10;\n\nconst TimelineItem = ({ el }: TimelineItemProps): void => {\n const windowScrollCheck = (): void => {\n const rect = el.getBoundingClientRect();\n const isInView = (\n rect.top <= 0 ||\n rect.top <= ((window.innerHeight || document.documentElement.clientHeight) / 2)\n );\n\n if (isInView) {\n el.classList.add('in-view');\n }\n };\n\n windowScrollCheck();\n\n window.addEventListener('resize', debounce(windowScrollCheck, DEBOUNCE_VALUE));\n window.addEventListener('scroll', debounce(windowScrollCheck, DEBOUNCE_VALUE));\n};\n\nexport default TimelineItem;\n","import Swiper, { Navigation, Pagination } from 'swiper';\n\nSwiper.use([Navigation, Pagination]);\n\ninterface CardCarouselSwiperProps {\n el: HTMLElement;\n}\n\nconst CardCarousel = ({ el }: CardCarouselSwiperProps): void => {\n const swiperContainer: HTMLElement | null = el.querySelector('.swiper');\n const prevEl: HTMLElement | null = el.querySelector('.card-carousel-prev');\n const nextEl: HTMLElement | null = el.querySelector('.card-carousel-next');\n\n\n if (!swiperContainer) {\n return;\n }\n\n const swiperBreakpoints = {\n 640: { spaceBetween: 24 },\n 1024: { spaceBetween: 32 },\n };\n\n\n const cardCarouselSwiper = new Swiper(swiperContainer, {\n init: false,\n spaceBetween: 16,\n slidesPerView: 'auto',\n breakpoints: swiperBreakpoints,\n watchOverflow: true,\n watchSlidesProgress: true,\n // wrapperClass: 'card-carousel-swiper',\n navigation: {\n nextEl,\n prevEl,\n },\n pagination: {\n el: '.swiper-pagination',\n clickable: true,\n },\n });\n\n cardCarouselSwiper.init();\n};\n\nexport default CardCarousel;\n","import debounce from 'lodash.debounce';\n\ninterface FixedHeaderProps {\n el: HTMLDivElement;\n}\n\nconst FIXED_HEADER_CLASS = 'fixed-header';\nconst HEADER_FIXED_CLASS = 'header-fixed';\nconst HEADER_FIXED_SHOW_CLASS = 'header-fixed-show';\nconst HEADER_FIXED_HIDE_CLASS = 'header-fixed-hide';\nconst DEBOUNCE_VALUE = 10;\n\nconst FixedHeader = ({ el }: FixedHeaderProps): void => {\n el.classList.add(FIXED_HEADER_CLASS);\n let prevScrollY = window.pageYOffset;\n\n const hideFixedHeader = (): void => {\n el.classList.remove(HEADER_FIXED_SHOW_CLASS);\n el.classList.add(HEADER_FIXED_CLASS, HEADER_FIXED_HIDE_CLASS);\n };\n\n const showFixedHeader = (): void => {\n el.classList.remove(HEADER_FIXED_HIDE_CLASS);\n el.classList.add(HEADER_FIXED_CLASS, HEADER_FIXED_SHOW_CLASS);\n };\n\n const cleanFixedHeader = (): void => {\n el.classList.remove(\n HEADER_FIXED_CLASS, HEADER_FIXED_SHOW_CLASS, HEADER_FIXED_HIDE_CLASS\n );\n };\n\n const applyFixedHeader = (): void => {\n el.classList.add(HEADER_FIXED_CLASS);\n };\n\n const windowScrollCheck = (): void => {\n const elHeight = el.offsetHeight;\n const alertBanner = document.querySelector('.alert-banner');\n const alertBannerHeight = alertBanner ? (alertBanner as HTMLDivElement).offsetHeight : 0;\n const headerHeight = el.parentElement ? el.parentElement.offsetHeight + alertBannerHeight : elHeight + alertBannerHeight;\n const subHeaderHeight = headerHeight - elHeight;\n const currentScrollY = window.pageYOffset || document.documentElement.scrollTop;\n\n // if on top of the page\n if (currentScrollY <= headerHeight) {\n // If on top of the page, change back to absolute position\n // Depend on your needs position can be changed\n if (currentScrollY <= subHeaderHeight) {\n cleanFixedHeader();\n }\n // If more than header height and scroll up\n } else if (currentScrollY < prevScrollY) {\n showFixedHeader();\n // If more than header height and scroll down\n } else if (currentScrollY !== prevScrollY) {\n const isFixed = el.classList.contains('header-fixed');\n const isFixedShow = el.classList.contains('header-fixed-show');\n const isFixedHide = el.classList.contains('header-fixed-hide');\n\n // if after header is shown on fixed state\n if (isFixed && isFixedShow) {\n hideFixedHeader();\n // if from absolute then apply fixed position\n } else if (!isFixed && !isFixedHide) {\n applyFixedHeader();\n }\n }\n\n prevScrollY = currentScrollY;\n };\n\n windowScrollCheck();\n\n window.addEventListener('resize', debounce(windowScrollCheck, DEBOUNCE_VALUE));\n window.addEventListener('scroll', debounce(windowScrollCheck, DEBOUNCE_VALUE));\n};\n\nexport default FixedHeader;\n","import debounce from 'lodash.debounce';\n\n\ninterface MainNavProps {\n el: HTMLDivElement;\n}\n\nconst DEBOUNCE_VALUE = 50;\nconst MAIN_NAV_ITEM_CLASS = 'main-nav-item';\nconst MAIN_NAV_ITEM_LINK_CLASS = 'main-nav-item-link';\nconst SUB_NAV_ITEM_CLASS = 'sub-nav-item';\nconst SUB_NAV_ITEM_LINK_CLASS = 'sub-nav-item-link';\nconst MAIN_NAV_ACTIVE_CLASS = 'is-active';\nconst MEGA_MENU_MAIN_NAV_CLASS = 'mega-menu-main-nav';\nconst MEGA_MENU_ITEM_CLASS = 'mega-menu-main-nav-item';\nconst MEGA_MENU_ITEM_LINK_CLASS = 'mega-menu-main-nav-item-link';\nconst MEGA_MENU_SUB_NAV_CLASS = 'mega-menu-sub-nav';\nconst MEGA_MENU_SUB_NAV_ITEM_CLASS = 'mega-menu-sub-nav-item';\nconst MEGA_MENU_SUB_NAV_ITEM_LINK_CLASS = 'mega-menu-sub-nav-item-link';\nconst OUT_FOCUS_SELECTOR = '.header-logo-link, .desktop-search input'; // to close mega menu when focus on the next things.\n\n\n// To calculate height of Mega Menu Sub Nav Wrapper\nfunction getHiddenHeight(el: HTMLDivElement): number {\n if (!el?.cloneNode) {\n return 0;\n }\n\n const clone = el.cloneNode(true) as HTMLDivElement;\n\n Object.assign(clone.style, {\n overflow: 'visible',\n height: 'auto',\n maxHeight: 'none',\n opacity: '0',\n visibility: 'hidden',\n display: 'block',\n });\n\n el.after(clone);\n const height = clone.offsetHeight;\n\n clone.remove();\n\n return height;\n}\n\n// Terms:\n// 1st Level Menu: Main Nav\n// 2nd Level Menu: Mega Menu Main Nav\n// 3rd Level Menu: Mega Menu Sub Nav\n\n// Expected behaviour:\n// 1. Megamenu Desktop open when hover on the \"Main Nav\"\n// 2. When Megamenu opened, the first menu from \"Mega Menu Main Nav\" is always opened at first (reason so there's no empty column)\n// 3. When hover on other \"Mega Menu Main Nav\" it will open other sub menu\n// 4. When the mouse is leaving \"Mega Menu Main Nav\" area it will stay open to the last opened sub nav, until mouse leave on the mega menu\n// 5. When hover back on the \"Main Nav\" refer to number 2.\n\n\nfunction isTouchEnabled(): boolean {\n return ('ontouchstart' in window) ||\n (navigator.maxTouchPoints > 0);\n}\n\nfunction isHasSubmenu(el: HTMLElement): boolean {\n if (!el) {\n return false;\n }\n\n const subNav = el.querySelectorAll('.sub-nav');\n\n return subNav.length > 0;\n}\n\nconst MainNav = ({ el }: MainNavProps): void => {\n const mainNavLinkEls = el.querySelectorAll(`.${MAIN_NAV_ITEM_LINK_CLASS}`);\n const subNavLinkEls = el.querySelectorAll(`.${SUB_NAV_ITEM_LINK_CLASS}`);\n const megaMenuLinkEls = el.querySelectorAll(`.${MEGA_MENU_ITEM_LINK_CLASS}`);\n const megaMenuSubNavEls = el.querySelectorAll(`.${MEGA_MENU_SUB_NAV_CLASS}`);\n const megaMenuMainNavEls = el.querySelectorAll(`.${MEGA_MENU_MAIN_NAV_CLASS}`);\n const outFocusEls = document.querySelectorAll(OUT_FOCUS_SELECTOR);\n\n const closeOpenedMenu = (menuEl: HTMLElement): void => {\n menuEl.classList.remove(MAIN_NAV_ACTIVE_CLASS);\n menuEl.setAttribute('aria-expanded', 'false');\n };\n\n const closeAllMainNav = (): void => {\n mainNavLinkEls.forEach(mainNavLinkEl => {\n const parentEl = mainNavLinkEl.closest(`.${MAIN_NAV_ITEM_CLASS}`);\n if (!parentEl) {\n return;\n }\n\n closeOpenedMenu(parentEl as HTMLElement);\n });\n };\n\n const closeAllMegaMenuNav = (): void => {\n megaMenuLinkEls.forEach(megaMenuLinkEl => {\n const parentEl = megaMenuLinkEl.closest(`.${MEGA_MENU_ITEM_CLASS}`);\n if (!parentEl) {\n return;\n }\n\n closeOpenedMenu(parentEl as HTMLElement);\n });\n };\n\n const closeAllNav = (): void => {\n const allActiveMenus = el.querySelectorAll(`.${MAIN_NAV_ACTIVE_CLASS}`);\n allActiveMenus.forEach(allActiveMenu => {\n closeOpenedMenu(allActiveMenu as HTMLElement);\n });\n };\n\n const openMegaMenuNav = (linkEl: HTMLElement): void => {\n const parentEl = linkEl.closest(`.${MEGA_MENU_ITEM_CLASS}`);\n if (!parentEl) {\n return;\n }\n\n parentEl.setAttribute('aria-expanded', 'true');\n parentEl.classList.add(MAIN_NAV_ACTIVE_CLASS);\n };\n\n const openMainNav = (linkEl: HTMLElement, noAutoFocus?: boolean): void => {\n const parentEl = linkEl.closest(`.${MAIN_NAV_ITEM_CLASS}`);\n if (!parentEl) {\n return;\n }\n\n const currentSubNavLinkEl = parentEl.querySelector(`.${SUB_NAV_ITEM_LINK_CLASS}`);\n const currentMegaMenuLinkEl = parentEl.querySelector(`.${MEGA_MENU_ITEM_LINK_CLASS}`);\n if (!currentSubNavLinkEl && !currentMegaMenuLinkEl) {\n return;\n }\n\n parentEl.setAttribute('aria-expanded', 'true');\n parentEl.classList.add(MAIN_NAV_ACTIVE_CLASS);\n\n const allActiveMenus = parentEl.querySelectorAll(`.sub-nav .${MAIN_NAV_ACTIVE_CLASS}`);\n // if there's 1 active menu then just return otherwise set the first menu as active\n if (allActiveMenus.length) {\n return;\n }\n\n // activate the first menu\n currentMegaMenuLinkEl?.closest(`.${MEGA_MENU_ITEM_CLASS}`)?.classList.add(MAIN_NAV_ACTIVE_CLASS);\n\n if (noAutoFocus) {\n return;\n }\n\n (currentSubNavLinkEl as HTMLAnchorElement)?.focus();\n (currentMegaMenuLinkEl as HTMLAnchorElement)?.focus();\n };\n\n const closeMainNav = (linkEl: HTMLElement): void => {\n const parentEl = linkEl.closest(`.${MAIN_NAV_ITEM_CLASS}`);\n if (!parentEl) {\n return;\n }\n\n const currentSubNavLinkEl = parentEl.querySelector(`.${SUB_NAV_ITEM_LINK_CLASS}`);\n const currentMegaMenuLinkEl = parentEl.querySelector(`.${MEGA_MENU_ITEM_LINK_CLASS}`);\n if (!currentSubNavLinkEl && !currentMegaMenuLinkEl) {\n return;\n }\n\n parentEl.setAttribute('aria-expanded', 'false');\n parentEl.classList.remove(MAIN_NAV_ACTIVE_CLASS);\n };\n\n const focusNextElement = (parentEl: HTMLElement, focusElClass: string): void => {\n if (!parentEl.nextElementSibling) {\n return;\n }\n\n parentEl.classList.remove(MAIN_NAV_ACTIVE_CLASS);\n parentEl.setAttribute('aria-expanded', 'false');\n const nextLinkEl = parentEl.nextElementSibling.querySelector(`.${focusElClass}`);\n if (!nextLinkEl) {\n return;\n }\n\n (nextLinkEl as HTMLAnchorElement).focus();\n parentEl.nextElementSibling.classList.add(MAIN_NAV_ACTIVE_CLASS);\n parentEl.nextElementSibling.setAttribute('aria-expanded', 'true');\n };\n\n const focusPrevElement = (parentEl: HTMLElement, focusElClass: string): void => {\n if (!parentEl.previousElementSibling) {\n return;\n }\n\n parentEl.classList.remove(MAIN_NAV_ACTIVE_CLASS);\n parentEl.setAttribute('aria-expanded', 'false');\n const prevLinkEl = parentEl.previousElementSibling.querySelector(`.${focusElClass}`);\n if (!prevLinkEl) {\n return;\n }\n\n (prevLinkEl as HTMLAnchorElement).focus();\n parentEl.previousElementSibling.classList.add(MAIN_NAV_ACTIVE_CLASS);\n parentEl.previousElementSibling.setAttribute('aria-expanded', 'true');\n };\n\n const focusChildElement = (parentEl: HTMLElement, focusElClass: string): void => {\n const nextLinkEl = parentEl.querySelector(`.${focusElClass}`);\n if (!nextLinkEl) {\n return;\n }\n\n (nextLinkEl as HTMLAnchorElement).focus();\n nextLinkEl.parentElement?.classList.add(MAIN_NAV_ACTIVE_CLASS);\n nextLinkEl.parentElement?.setAttribute('aria-expanded', 'true');\n };\n\n const focusParentElement = (parentEl: HTMLElement, focusElClass: string): void => {\n const mainNavEl = parentEl.closest(`.${MEGA_MENU_ITEM_CLASS}`);\n\n if (!mainNavEl) {\n return;\n }\n\n parentEl.setAttribute('aria-expanded', 'false');\n parentEl.classList.remove(MAIN_NAV_ACTIVE_CLASS);\n\n const nextLinkEl = mainNavEl.querySelector(`.${focusElClass}`);\n if (!nextLinkEl) {\n return;\n }\n\n (nextLinkEl as HTMLAnchorElement).focus();\n // nextLinkEl.parentElement?.classList.add(MAIN_NAV_ACTIVE_CLASS);\n };\n\n const onMainLinkKeyDown = (e: KeyboardEvent): void => {\n const linkEl = e.target as HTMLElement;\n const { key } = e as KeyboardEvent;\n const parentEl: HTMLElement | null = linkEl.closest(`.${MAIN_NAV_ITEM_CLASS}`);\n if (!parentEl) {\n return;\n }\n\n /* eslint-disable indent */\n switch (key) {\n case 'ArrowDown': {\n e.preventDefault();\n closeAllNav();\n openMainNav(linkEl);\n break;\n }\n\n case 'ArrowUp': {\n e.preventDefault();\n closeMainNav(linkEl);\n break;\n }\n\n case 'ArrowRight': {\n e.preventDefault();\n closeAllNav();\n focusNextElement(parentEl, MAIN_NAV_ITEM_LINK_CLASS);\n break;\n }\n\n case 'ArrowLeft': {\n e.preventDefault();\n closeAllNav();\n focusPrevElement(parentEl, MAIN_NAV_ITEM_LINK_CLASS);\n break;\n }\n\n case 'Escape': {\n closeAllNav();\n // closeMainNav(linkEl);\n break;\n }\n\n default:\n }\n /* eslint-enable indent */\n };\n\n const onSubNavLinkKeyDown = (e: KeyboardEvent, subNavItemClass: string, subNavItemLinkClass: string): void => {\n const linkEl = e.target as HTMLElement;\n const { key } = e;\n const parentEl: HTMLElement | null = linkEl.closest(`.${subNavItemClass}`);\n if (!parentEl) {\n return;\n }\n\n /* eslint-disable indent */\n switch (key) {\n case 'ArrowDown': {\n e.preventDefault();\n focusNextElement(parentEl, subNavItemLinkClass);\n break;\n }\n\n case 'ArrowUp': {\n e.preventDefault();\n if (parentEl.previousElementSibling) {\n focusPrevElement(parentEl, subNavItemLinkClass);\n } else {\n // If goes from subnav to parent nav then set focus to parent\n const mainNavEl = parentEl.closest(`.${MAIN_NAV_ITEM_CLASS}`);\n if (!mainNavEl) {\n return;\n }\n\n const mainNavLinkEl = mainNavEl.querySelector(`.${MAIN_NAV_ITEM_LINK_CLASS}`);\n if (!mainNavLinkEl) {\n return;\n }\n\n (mainNavLinkEl as HTMLAnchorElement).focus();\n }\n break;\n }\n\n case 'ArrowRight': {\n e.preventDefault();\n focusChildElement(parentEl, MEGA_MENU_SUB_NAV_ITEM_LINK_CLASS);\n break;\n }\n\n case 'ArrowLeft': {\n e.preventDefault();\n focusParentElement(parentEl, MEGA_MENU_ITEM_LINK_CLASS);\n break;\n }\n\n case 'Escape': {\n closeMainNav(linkEl);\n break;\n }\n\n default:\n }\n /* eslint-enable indent */\n };\n\n\n // if the user touches another part of the site close the util\n window.addEventListener('mouseup', e => {\n if (e.target && el !== e.target && !el.contains(e.target as HTMLElement) && !(e.target as HTMLElement).closest('[data-main-nav]')) {\n closeAllNav();\n }\n });\n\n mainNavLinkEls.forEach(mainNavLinkEl => {\n // mainNavLinkEl.setAttribute('aria-expanded', 'false');\n mainNavLinkEl.addEventListener('keydown', (e => {\n onMainLinkKeyDown(e as KeyboardEvent);\n }));\n\n const parentEl = mainNavLinkEl.closest(`.${MAIN_NAV_ITEM_CLASS}`);\n if (!parentEl) {\n return;\n }\n\n parentEl.addEventListener('mouseleave', (() => {\n if (isTouchEnabled()) {\n return;\n }\n\n closeAllNav();\n }));\n\n parentEl.addEventListener('mouseenter', (() => {\n if (isTouchEnabled()) {\n return;\n }\n\n closeAllMainNav();\n openMainNav(mainNavLinkEl as HTMLElement, true);\n }));\n\n mainNavLinkEl.addEventListener('click', (e => {\n if (!isTouchEnabled()) {\n return;\n }\n\n // fix unclick-able primary nav without submenu\n // the issue come on desktop touchscreen ( laptop with touchscreen )\n if (isTouchEnabled() && !isHasSubmenu(parentEl as HTMLElement)) {\n return;\n }\n\n e.preventDefault();\n\n\n if (parentEl.classList.contains('is-active')) {\n closeMainNav(mainNavLinkEl as HTMLAnchorElement);\n } else {\n closeAllMainNav();\n openMainNav(mainNavLinkEl as HTMLElement, true);\n }\n }));\n });\n\n subNavLinkEls.forEach(subNavLinkEl => {\n subNavLinkEl.addEventListener('keydown', (e => {\n onSubNavLinkKeyDown(e as KeyboardEvent, SUB_NAV_ITEM_CLASS, SUB_NAV_ITEM_LINK_CLASS);\n }));\n });\n\n megaMenuLinkEls.forEach(megaMenuLinkEl => {\n megaMenuLinkEl.addEventListener('keydown', (e => {\n onSubNavLinkKeyDown(e as KeyboardEvent, MEGA_MENU_ITEM_CLASS, MEGA_MENU_ITEM_LINK_CLASS);\n }));\n\n const parentEl = megaMenuLinkEl.closest(`.${MEGA_MENU_ITEM_CLASS}`);\n\n parentEl?.addEventListener('mouseenter', (e => {\n closeAllMegaMenuNav();\n openMegaMenuNav(e.target as HTMLElement);\n }));\n });\n\n\n megaMenuSubNavEls.forEach(megaMenuLinkEl => {\n megaMenuLinkEl.addEventListener('keydown', (e => {\n onSubNavLinkKeyDown(e as KeyboardEvent, MEGA_MENU_SUB_NAV_ITEM_CLASS, MEGA_MENU_SUB_NAV_ITEM_LINK_CLASS);\n }));\n });\n\n\n outFocusEls.forEach(outFocusEl => {\n outFocusEl.addEventListener('focus', () => {\n closeAllNav();\n });\n });\n\n const windowResizeCheck = (): void => {\n megaMenuMainNavEls.forEach(megaMenuMainNavEl => {\n const subNavs = megaMenuMainNavEl.querySelectorAll(`.${MEGA_MENU_SUB_NAV_CLASS}`);\n const subNavHeightArray: number[] = [];\n\n subNavs.forEach(subNav => {\n const subNavHeight = getHiddenHeight(subNav as HTMLDivElement);\n subNavHeightArray.push(subNavHeight);\n });\n\n const maxHeight = Math.max(...subNavHeightArray);\n\n (megaMenuMainNavEl as HTMLDivElement).style.minHeight = `${maxHeight}px`;\n });\n\n closeAllMainNav();\n };\n\n const windowScrollCheck = (): void => {\n closeAllMainNav();\n };\n\n windowResizeCheck();\n\n window.addEventListener('resize', debounce(windowResizeCheck, DEBOUNCE_VALUE));\n window.addEventListener('scroll', debounce(windowScrollCheck, DEBOUNCE_VALUE));\n};\n\nexport default MainNav;\n","interface MobileNavProps {\n el: HTMLDivElement;\n props: {\n collapseOthers?: boolean;\n itemClass?: string;\n triggerClass?: string;\n collapsibleClass?: string;\n backTriggerClass?: string;\n };\n}\n\nconst ITEM_CLASS = 'mobile-nav-item';\nconst TRIGGER_CLASS = 'mobile-nav-item-btn';\nconst COLLAPSIBLE_CLASS = 'mobile-nav-item-content-wrapper';\nconst BACK_TRIGGER_CLASS = 'mobile-nav-back-btn';\nconst OVERFLOW_PARENTS_SELECTOR = '.mobile-nav-container, .mobile-nav-item-content-wrapper';\n\nconst MobileNav = ({ el, props }: MobileNavProps): void => {\n const {\n // collapseOthers,\n itemClass = ITEM_CLASS,\n triggerClass = TRIGGER_CLASS,\n collapsibleClass = COLLAPSIBLE_CLASS,\n backTriggerClass = BACK_TRIGGER_CLASS,\n } = props;\n\n // Accordion({ el, props });\n const itemEls = el.querySelectorAll(`.${itemClass}`);\n\n // Add accordion functionality\n itemEls.forEach(itemEl => {\n const triggerEl: HTMLButtonElement | null = itemEl.querySelector(`.${triggerClass}`);\n const collapsibleEl: HTMLDivElement | null = itemEl.querySelector(`.${collapsibleClass}`);\n\n if (!triggerEl || !collapsibleEl) {\n return;\n }\n\n // set default as close if no is-open class\n if (!itemEl.classList.contains('is-open')) {\n // collapsibleEl.style.height = '0px';\n triggerEl.setAttribute('aria-expanded', 'false');\n }\n\n triggerEl.addEventListener('click', () => {\n if (triggerEl.classList.contains('disabled')) {\n return;\n }\n\n // To disable the parent overflow so we don't have multiple scrollbar with the parent (mostly on mobile landscape issue)\n const affectedParent = itemEl.closest(OVERFLOW_PARENTS_SELECTOR);\n if (affectedParent) {\n affectedParent.scrollTop = 0;\n affectedParent.classList.add('child-is-open');\n }\n\n itemEl.classList.add('is-open');\n triggerEl.classList.remove('disabled');\n triggerEl.setAttribute('aria-expanded', 'true');\n });\n\n const backTriggerEl: HTMLButtonElement | null = itemEl.querySelector(`.${backTriggerClass}`);\n if (!backTriggerEl) {\n return;\n }\n\n backTriggerEl.addEventListener('click', () => {\n if (backTriggerEl.classList.contains('disabled')) {\n return;\n }\n\n if (itemEl.classList.contains('is-open')) {\n // To enable the parent overflow after disabled when open on the child\n const affectedParent = itemEl.closest(OVERFLOW_PARENTS_SELECTOR);\n if (affectedParent) {\n affectedParent.scrollTop = 0;\n affectedParent.classList.remove('child-is-open');\n }\n\n itemEl.classList.remove('is-open');\n triggerEl.classList.remove('disabled');\n triggerEl.setAttribute('aria-expanded', 'false');\n }\n });\n\n // attachEnterAsClick(triggerEl);\n });\n};\n\ninterface CloseAllMenuMobileNavProps {\n el: HTMLDivElement;\n}\n\nexport const closeAllMenuMobileNav = ({ el }: CloseAllMenuMobileNavProps): void => {\n const allIsOpenItems = el.querySelectorAll(`.is-open`);\n allIsOpenItems.forEach(itemEl => {\n const triggerEl = itemEl.querySelector(`.${TRIGGER_CLASS}`) as HTMLButtonElement | null;\n const collapsibleEl = itemEl.querySelector(`.${COLLAPSIBLE_CLASS}`) as HTMLDivElement | null;\n\n if (!triggerEl || !collapsibleEl) {\n return;\n }\n itemEl.classList.remove('is-open');\n el.setAttribute('aria-expanded', 'false');\n triggerEl?.setAttribute('aria-expanded', 'false');\n });\n\n const allChildIsOpenItems = el.querySelectorAll(`.child-is-open`);\n allChildIsOpenItems.forEach(itemEl => {\n itemEl.scrollTop = 0;\n itemEl.classList.remove('child-is-open');\n });\n};\n\nexport default MobileNav;\n","/**\n * sections.js\n *\n * Import the JS for your sections here.\n *\n */\nimport ComponentInit from '../js/utils/ComponentInit';\nimport AlertBanner from './AlertBanner/AlertBanner';\nimport CardCarousel from './CardCarousel/CardCarousel';\nimport FixedHeader from './Header/Shared/FixedHeader';\nimport HeaderSearch from './Header/Shared/HeaderSearch';\nimport MainNav from './Header/Desktop/MainNav';\nimport MobileNav from './Header/Mobile/MobileNav';\nimport NavbarToggler from './Header/Mobile/NavbarToggler';\nimport SearchToggler from './Header/Mobile/SearchToggler';\n\n// import AssetsListing from './AssetsListing/AssetsListing';\n// import LocationListing from './LocationListing/LocationListing';\n// import ArticleListing from './ArticleListing/ArticleListing';\n// import PeopleListing from './PeopleListing/PeopleListing';\n// import SearchBlock from './SearchBlock/SearchBlock';\n\n// import './AlgoliaSearch/AlgoliaSearch';\n\n// // Format:\n// // data-component-name: ComponentFunction\n// // we shall order these in page load critical first\nconst componentList = {\n AlertBanner,\n CardCarousel,\n FixedHeader,\n HeaderSearch,\n MainNav,\n MobileNav,\n NavbarToggler,\n SearchToggler,\n // AssetsListing,\n // LocationListing,\n // ArticleListing,\n // PeopleListing,\n // SearchBlock,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-confusing-void-expression\nexport default ComponentInit(componentList);\n","import Cookies from 'js-cookie';\n\ninterface AlertBannerProps {\n el: HTMLElement;\n}\n\nconst AlertBanner = ({ el }: AlertBannerProps): void => {\n const { cookieName } = el.dataset.alertBanner ? JSON.parse(el.dataset.alertBanner) : undefined;\n const closeIcon = el.querySelector('.alert-banner-close-button');\n const cookie = cookieName ? Cookies.get(cookieName) : undefined;\n\n if (!cookie) {\n el.classList.remove('hide');\n }\n\n closeIcon?.addEventListener('click', () => {\n el.classList.add('hide');\n\n if (cookieName) {\n Cookies.set(cookieName, '1', { expires: 30 });\n }\n });\n};\n\nexport default AlertBanner;\n","interface HeaderSearchProps {\n el: HTMLElement;\n props: {\n url: string;\n param: string;\n escapeFunction: boolean;\n };\n}\n\nconst HeaderSearch = ({ el, props }: HeaderSearchProps): void => {\n const {\n url,\n param,\n escapeFunction,\n } = props;\n\n const search = (inputValue: string): void => {\n const searchUrl = `${url}?${param}=${inputValue}`;\n window.location.href = searchUrl;\n };\n\n const searchInput = el.querySelector('input') as HTMLInputElement;\n\n searchInput.addEventListener('keyup', ({ key }) => {\n if (key === 'Enter') {\n const searchValue = searchInput.value;\n search(searchValue);\n }\n\n if (escapeFunction && key === 'Escape') {\n el.classList.remove('is-open');\n }\n });\n};\n\nexport default HeaderSearch;\n","import debounce from 'lodash.debounce';\nimport { BREAKPOINT_LG } from 'utils/breakpoint';\nimport { closeAllMenuMobileNav } from './MobileNav';\n\ninterface NavbarTogglerProps {\n el: HTMLDivElement;\n props: {\n target: string;\n };\n}\n\nconst DEBOUNCE_VALUE = 100;\n\nconst NavbarToggler = ({ el, props }: NavbarTogglerProps): void => {\n const { target } = props;\n\n const targetEl = document.querySelector(target) as HTMLDivElement | null;\n if (!targetEl) {\n return;\n }\n\n const closeMobileNav = (): void => {\n targetEl.classList.remove('is-open');\n el.classList.remove('disabled');\n el.setAttribute('aria-expanded', 'false');\n closeAllMenuMobileNav({ el: targetEl });\n document.body.classList.remove('modal-opened');\n };\n\n const openMobileNav = (): void => {\n targetEl.classList.add('is-open');\n el.classList.remove('disabled');\n el.setAttribute('aria-expanded', 'true');\n document.body.classList.add('modal-opened');\n };\n\n // set default as close if no is-open class\n if (!targetEl.classList.contains('is-open')) {\n el.setAttribute('aria-expanded', 'false');\n }\n\n el.addEventListener('click', () => {\n if (el.classList.contains('disabled')) {\n return;\n }\n\n if (targetEl.classList.contains('is-open')) {\n closeMobileNav();\n } else {\n openMobileNav();\n }\n });\n\n const windowResizeCheck = (): void => {\n // if menu is opened while transition from mobile to desktop, close the mobile nav\n if (window.innerWidth > BREAKPOINT_LG && targetEl.classList.contains('is-open')) {\n closeMobileNav();\n }\n };\n\n windowResizeCheck();\n window.addEventListener('resize', debounce(windowResizeCheck, DEBOUNCE_VALUE));\n};\n\nexport default NavbarToggler;\n","export const BREAKPOINT_XS = 360;\nexport const BREAKPOINT_SM = 640;\nexport const BREAKPOINT_MD = 768;\nexport const BREAKPOINT_LG = 1024;\nexport const BREAKPOINT_XL = 1280;\nexport const BREAKPOINT_2XL = 1440;\n","import debounce from 'lodash.debounce';\nimport { BREAKPOINT_LG } from 'utils/breakpoint';\n\ninterface SearchTogglerProps {\n el: HTMLDivElement;\n props: {\n target: string;\n };\n}\n\nconst DEBOUNCE_VALUE = 100;\n\nconst SearchToggler = ({ el, props }: SearchTogglerProps): void => {\n const { target } = props;\n\n const targetEl = document.querySelector(target) as HTMLDivElement | null;\n if (!targetEl) {\n return;\n }\n\n const closeSearch = (): void => {\n targetEl.classList.remove('is-open');\n el.classList.remove('disabled');\n el.setAttribute('aria-expanded', 'false');\n };\n\n const openSearch = (): void => {\n targetEl.classList.add('is-open');\n el.classList.remove('disabled');\n el.setAttribute('aria-expanded', 'true');\n const inputEl = targetEl.querySelector('input');\n if (!inputEl) {\n return;\n }\n // clean up the value and focus\n inputEl.value = '';\n inputEl.focus();\n };\n\n // set default as close if no is-open class\n if (!targetEl.classList.contains('is-open')) {\n el.setAttribute('aria-expanded', 'false');\n }\n\n el.addEventListener('click', () => {\n if (el.classList.contains('disabled')) {\n return;\n }\n\n if (targetEl.classList.contains('is-open')) {\n closeSearch();\n } else {\n openSearch();\n }\n });\n\n const windowResizeCheck = (): void => {\n // if menu is opened while transition from mobile to desktop, close the mobile nav\n if (window.innerWidth > BREAKPOINT_LG && targetEl.classList.contains('is-open')) {\n closeSearch();\n }\n };\n\n windowResizeCheck();\n window.addEventListener('resize', debounce(windowResizeCheck, DEBOUNCE_VALUE));\n};\n\nexport default SearchToggler;\n"],"names":["links","document","querySelectorAll","Array","prototype","forEach","call","link","addEventListener","event","preventDefault","tables","table","parentElement","classList","contains","tableWrapper","createElement","setAttribute","parentNode","insertBefore","appendChild","scrollToTopBtn","querySelector","handleScroll","scrollableHeight","documentElement","scrollHeight","clientHeight","scrollTop","add","remove","scrollToTop","window","scrollTo","top","behavior","TrackUTMParams","urlParams","domainsToDecorate","URLSearchParams","location","search","from","keys","some","param","includes","utmParams","params","value","key","getUTMParams","length","href","hostname","URL","domain","error","hasDomainToWatch","urlToDecorate","parsedURL","parsedURLParams","_i","_Object$entries","Object","entries","_Object$entries$_i","set","toString","hash","replace","decorateUrl","contentObserver","MutationObserver","mutationsList","_step","_iterator","_createForOfIteratorHelper","s","n","done","mutation","type","addedNodes","err","e","f","observe","body","childList","subtree","factory","__webpack_modules__","__unused_webpack_module","exports","defineProperty","clearChoices","activateChoices","filterChoices","addChoice","constants_1","_a","label","id","groupId","disabled","elementId","customProperties","placeholder","keyCode","ACTION_TYPES","ADD_CHOICE","results","FILTER_CHOICES","active","ACTIVATE_CHOICES","CLEAR_CHOICES","addGroup","ADD_GROUP","highlightItem","removeItem","addItem","choiceId","ADD_ITEM","REMOVE_ITEM","highlighted","HIGHLIGHT_ITEM","setIsLoading","resetTo","clearAll","CLEAR_ALL","state","RESET_TO","isLoading","SET_IS_LOADING","__spreadArray","this","to","pack","arguments","ar","i","l","slice","concat","__importDefault","mod","__esModule","deepmerge_1","fuse_js_1","choices_1","groups_1","items_1","misc_1","components_1","defaults_1","utils_1","reducers_1","store_1","templates_1","IS_IE11","style","USER_DEFAULTS","Choices","element","userConfig","_this","undefined","allowHTML","console","warn","config","default","all","DEFAULT_CONFIG","defaults","options","arrayMerge","_","sourceArray","invalidConfigOptions","diff","join","passedElement","HTMLInputElement","HTMLSelectElement","TypeError","_isTextElement","TEXT_TYPE","_isSelectOneElement","SELECT_ONE_TYPE","_isSelectMultipleElement","SELECT_MULTIPLE_TYPE","_isSelectElement","searchEnabled","renderSelectedChoices","addItemFilter","re","RegExp","test","bind","WrappedInput","classNames","delimiter","WrappedSelect","template","data","_templates","option","initialised","_store","_initialState","defaultState","_currentState","_prevState","_currentValue","_canSearch","_isScrollingOnIe","_highlightPosition","_wasTap","_placeholderValue","_generatePlaceholderValue","_baseId","generateId","_direction","dir","elementDirection","getComputedStyle","direction","_idNames","itemChoice","_presetGroups","optionGroups","_presetOptions","_presetChoices","choices","_presetItems","items","splitValues","split","push","innerHTML","selected","hasAttribute","parseCustomProperties","dataset","_render","_onFocus","_onBlur","_onKeyUp","_onKeyDown","_onClick","_onTouchMove","_onTouchEnd","_onMouseDown","_onMouseOver","_onFormReset","_onSelectKey","_onEnterKey","_onEscapeKey","_onDirectionKey","_onDeleteKey","isActive","silent","init","get","preventExtensions","templates","enumerable","configurable","_createTemplates","_createElements","_createStructure","subscribe","_addEventListeners","addItems","disable","callbackOnInit","destroy","_removeEventListeners","reveal","containerOuter","unwrap","clearStore","enable","isDisabled","input","item","runEvent","_b","_c","group","getGroupById","dispatch","triggerEvent","EVENTS","groupValue","unhighlightItem","highlightAll","unhighlightAll","removeActiveItemsByValue","activeItems","filter","_removeItem","removeActiveItems","excludedId","removeHighlightedItems","highlightedActiveItems","_triggerChange","showDropdown","preventInputFocus","dropdown","requestAnimationFrame","show","open","distanceFromTopWindow","focus","hideDropdown","preventInputBlur","hide","close","removeActiveDescendant","blur","getValue","valueOnly","values","reduce","selectedItems","itemValue","setValue","_setChoiceOrItem","setChoiceByValue","isArray","val","_findAndSelectChoiceByValue","setChoices","choicesArrayOrFetcher","replaceChoices","ReferenceError","fetcher_1","Promise","resolve","then","_handleLoadingState","catch","removeLoadingState","_startLoading","groupOrChoice","_addGroup","parseInt","valueKey","labelKey","choice","_addChoice","isSelected","_stopLoading","clearInput","shouldSetInputWidth","clear","_isSearching","stateChanged","groups","shouldRenderChoices","shouldRenderItems","_renderChoices","_renderItems","activeGroups","activeChoices","choiceListFragment","createDocumentFragment","choiceList","resetScrollPosition","activePlaceholders","activeChoice","_createChoicesFragment","_createGroupsFragment","childNodes","canAddItem","_canAddItem","response","append","_highlightChoice","notice","_getTemplate","dropdownItem","noResultsText","noChoicesText","itemList","itemListFragment","_createItemsFragment","fragment","shouldSort","sort","sorter","groupChoices","getGroupChoices","dropdownGroup","withinGroup","searchResultLimit","renderChoiceLimit","sortByScore","appendChoice","itemSelectText","rendererableChoices","acc","placeholderChoices","normalChoices","choiceLimit","sortedChoices","shouldSortItems","removeItemButton","map","listItem","change","_selectPlaceholderChoice","placeholderChoice","_addItem","_handleButtonAction","removeItems","itemId","itemToRemove","find","_handleItemAction","hasShiftKey","passedId","_handleChoiceAction","getChoiceById","passedKeyCode","hasActiveDropdown","_handleBackspace","lastItem","hasHighlightedItems","editItems","setWidth","setLoading","placeholderItem","getChild","addLoadingState","loadingText","_handleSearch","isFocussed","searchFloor","searchChoices","hasUnactiveChoices","resultCount","_searchChoices","addItemText","isDuplicateValue","existsInArray","maxItemCount","maxItemText","duplicateItemsAllowed","uniqueItemText","customAddItemText","newValue","trim","currentValue","haystack","searchableChoices","needle","assign","fuseOptions","searchFields","includeMatches","passive","form","addEventListeners","removeEventListener","removeEventListeners","hasFocusedInput","hasItems","hasChildren","keyString","String","fromCharCode","wasPrintableChar","BACK_KEY","KEY_CODES","DELETE_KEY","ENTER_KEY","A_KEY","ESC_KEY","UP_KEY","DOWN_KEY","PAGE_UP_KEY","PAGE_DOWN_KEY","toLowerCase","target","backKey","deleteKey","outerHTML","userHasRemovedValue","canReactivateChoices","canSearch","rawValue","ctrlKey","metaKey","activeElement","enterKey","targetWasButton","highlightedChoice","highlightedState","downKey","pageUpKey","pageDownKey","directionInt","selectableChoiceIdentifier","nextEl","currentEl","getAdjacentEl","isScrolledIntoView","scrollToChildElement","touches","containerInner","stopPropagation","HTMLElement","firstChoice","firstElementChild","isOnScrollbar","offsetX","offsetWidth","offsetLeft","closest","shiftKey","removeFocusState","addFocusState","hasHighlightedItems_1","el","passedEl","indexOf","highlightChoice","setActiveDescendant","_d","_e","_f","_g","passedValue","passedLabel","passedOptionId","prependValue","appendValue","_h","choiceLabel","choiceElementId","isType","getElementsByTagName","Math","floor","Date","valueOf","random","isOptDisabled","args","apply","callbackOnCreateTemplates","userTemplates","strToEl","Container","labelId","position","Input","preventPaste","paste","List","Dropdown","conceal","wrap","searchPlaceholderValue","firstChild","_addPredefinedGroups","_addPredefinedChoices","_addPredefinedItems","placeholderOption","tagName","hasSelectedChoice","firstEnabledChoiceIndex","findIndex","index","object","string","getType","foundChoice","valueComparer","text","placeholderValue","isOpen","isFlipped","shouldFlip","dropdownPos","matchMedia","matches","activeDescendantID","removeAttribute","openState","flippedState","focusState","disabledState","removeChild","loadingState","getBoundingClientRect","bottom","selector","activeState","dropdown_1","container_1","input_1","list_1","wrapped_input_1","wrapped_select_1","isEqualNode","_onPaste","_onInput","sanitise","minWidth","width","scrollPos","height","offsetHeight","node","hasChildNodes","listHeight","listScrollPosition","elementHeight","elementPos","offsetTop","destination","_animateScroll","_scrollDown","strength","easing","distance","_scrollUp","SCROLLING_SPEED","choiceListScrollTop","continueAnimation","WrappedElement","hidden","tabIndex","origStyle","getAttribute","eventType","dispatchEvent","extendStatics","__extends","d","b","setPrototypeOf","__proto__","p","hasOwnProperty","__","constructor","create","_super","optionData","appendDocFragment","DEFAULT_CLASSNAMES","inputCloned","list","listItems","listSingle","listDropdown","itemSelectable","itemDisabled","groupHeading","button","selectedState","noResults","noChoices","sortByAlpha","value1","value2","includeScore","__createBinding","o","m","k","k2","desc","getOwnPropertyDescriptor","writable","__exportStar","tmpEl","cloneObject","generateChars","getRandomNumber","min","max","prefix","name","obj","wrapper","nextSibling","startEl","prop","sibling","parent","str","cleanedInput","firldChild","children","label2","localeCompare","sensitivity","ignorePunctuation","numeric","a","score","scoreA","customArgs","CustomEvent","detail","bubbles","cancelable","array","JSON","parse","stringify","aKeys","bKeys","action","addChoiceAction","addItemAction_1","removeItemAction_1","filterChoicesAction_1","activateChoicesAction_1","addGroupAction","redux_1","loading_1","loading","appReducer","combineReducers","passedState","addItemAction","highlightItemAction_1","index_1","Store","createStore","__REDUX_DEVTOOLS_EXTENSION__","onChange","getState","selectableChoices","reverse","hasActiveOptions","isSelectElement","isSelectOneElement","passedElementType","div","className","isPlaceholder","deletable","REMOVE_ITEM_TEXT","removeButton","choiceGroup","selectText","choiceDisabled","choiceSelectable","inp","autocomplete","autocapitalize","spellcheck","innerText","classes","opt","Option","module","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","Symbol","for","cloneUnlessOtherwiseSpecified","clone","deepmerge","defaultArrayMerge","source","getKeys","getOwnPropertySymbols","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","property","sourceIsArray","propertyIsUnsafe","customMerge","getMergeFunction","mergeObject","Error","prev","next","__webpack_exports__","getTag","r","Fuse","isString","isNumber","isObject","isDefined","isBlank","MISSING_KEY_PROPERTY","INVALID_KEY_WEIGHT_VALUE","hasOwn","KeyStore","_keys","_keyMap","totalWeight","createKey","weight","keyId","toJSON","path","src","getFn","createKeyPath","createKeyId","Config","isCaseSensitive","sortFn","idx","findAllMatches","minMatchCharLength","threshold","useExtendedSearch","arr","deepGet","isObjectLike","isBoolean","result","baseToString","len","ignoreLocation","ignoreFieldNorm","fieldNormWeight","SPACE","FuseIndex","norm","mantissa","cache","Map","pow","numTokens","match","has","parseFloat","round","isCreated","setIndexRecords","setSources","docs","records","setKeys","_keysMap","doc","docIndex","_addString","_addObject","size","removeAt","splice","getValueForItemAtKeyId","record","v","$","keyIndex","subRecords","stack","nestedArrIndex","pop","subRecord","createIndex","myIndex","computeScore$1","pattern","errors","currentLocation","expectedLocation","accuracy","proximity","abs","MAX_BITS","createPatternAlphabet","mask","char","charAt","BitapSearch","chunks","addChunk","startIndex","alphabet","remainder","end","substr","searchIn","isMatch","indices","allIndices","totalScore","hasMatches","patternAlphabet","patternLen","textLen","currentThreshold","bestLocation","computeMatches","matchMask","lastBitArr","finalScore","binMax","binMin","binMid","start","finish","bitArr","j","charMatch","matchmask","convertMaskToIndices","BaseMatch","static","getMatch","multiRegex","singleRegex","exp","FuzzyMatch","super","_bitapSearch","IncludeMatch","searchers","startsWith","endsWith","searchersLen","SPACE_RE","MultiMatchSet","Set","registeredSearchers","createSearcher","searcherClass","condition","LogicalOperator","KeyType","isExpression","query","convertToExplicit","auto","isQueryPath","isPath","isLeaf","LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY","searcher","operator","transformMatches","refIndex","transformScore","_keyStore","setCollection","_docs","_myIndex","predicate","getIndex","limit","_searchStringList","_searchObjectList","_searchLogical","Number","EPSILON","computeScore","transformers","transformer","format","expression","evaluate","_findMatches","res","child","resultMap","expResults","version","parseIndex","parseQuery","register","queryItem","found","token","isMultiMatch","isSingleMatch","numMatches","qLen","pLen","_typeof","iterator","_defineProperty","arg","hint","prim","toPrimitive","_toPrimitive","_toPropertyKey","ownKeys","enumerableOnly","symbols","sym","_objectSpread2","getOwnPropertyDescriptors","defineProperties","formatProdErrorMessage","code","ActionTypes","applyMiddleware","bindActionCreators","compose","legacy_createStore","$$observable","observable","randomString","substring","INIT","REPLACE","PROBE_UNKNOWN_ACTION","reducer","preloadedState","enhancer","_ref2","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","listener","isSubscribed","proto","getPrototypeOf","isPlainObject","listeners","replaceReducer","nextReducer","_ref","outerSubscribe","observer","observeState","unsubscribe","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","nextState","_key","previousStateForKey","nextStateForKey","bindActionCreator","actionCreator","actionCreators","boundActionCreators","_len","funcs","middlewares","store","_dispatch","middlewareAPI","chain","middleware","__webpack_module_cache__","moduleId","cachedModule","getter","definition","toStringTag","_scripts_choices__WEBPACK_IMPORTED_MODULE_0__","_scripts_choices__WEBPACK_IMPORTED_MODULE_0___default","iframeResize","iframeResizer","contentWindow","autoResize","base","bodyBackground","bodyMargin","bodyMarginStr","bodyObserver","bodyPadding","calculateWidth","doubleEventList","resize","click","eventCancelTimer","firstRun","heightCalcModeDefault","heightCalcMode","initLock","initMsg","inPageLinks","interval","intervalTimer","logging","mouseEvents","msgID","msgIdLen","myID","resetRequiredMethods","bodyScroll","documentElementScroll","resizeFrom","sendPermit","targetOriginDefault","tolerance","triggerLocked","triggerLockedTimer","throttledTimer","widthCalcModeDefault","widthCalcMode","win","onMessage","onReady","onPageInfo","customCalcMethods","scrollWidth","eventHandlersByName","passiveSupported","noop","func","context","timeout","previous","later","getHeight","bodyOffset","offset","custom","documentElementOffset","getAllMeasurements","grow","lowestElement","getMaxElement","getAllElements","taggedElement","getTaggedElements","getWidth","scroll","rightMostElement","sizeIFrameThrottled","sizeIFrame","now","remaining","clearTimeout","setTimeout","messageType","processRequestFromParent","clearFix","attr","strBool","readDataFromParent","log","readData","iFrameResizer","depricate","targetOrigin","heightCalculationMethod","widthCalculationMethod","setupCustomCalcMethods","calcMode","calcFunc","readDataFromPage","setBodyStyle","display","checkHeightMode","checkWidthMode","parentIFrame","startEventListeners","manageEventListeners","disconnect","clearInterval","sendMsg","getId","getPageInfo","callback","moveToAnchor","findTarget","reset","resetIFrame","x","y","scrollToOffset","sendMessage","msg","setHeightCalculationMethod","setWidthCalculationMethod","setTargetOrigin","customHeight","customWidth","sendSize","sendMouse","screenY","screenX","addMouseListener","evt","setupMouseEvents","getPagePosition","pageXOffset","scrollLeft","pageYOffset","getElementPosition","elPosition","pagePosition","left","jumpToTarget","jumpPosition","hashData","decodeURIComponent","getElementById","getElementsByName","checkLocationHash","bindAnchors","setupLink","linkClicked","bindLocationHash","initCheck","enableInPageLinks","setupInPageLinks","triggerReset","getData","inPageLink","pageInfo","msgBody","message","getMessageType","isInitMsg","true","false","jQuery","chkLateLoaded","capitalizeFirstLetter","toUpperCase","formatLogMsg","splitName","manageTriggerEvent","eventName","handleEvent","eventNames","method","checkCalcMode","calcModeDefault","modes","forceIntervalTimer","WebKitMutationObserver","initInterval","addImageLoadListners","addImageLoadListener","complete","imageLoaded","imageError","elements","attributeName","removeImageLoadListener","removeFromArray","imageEventTriggered","typeDesc","mutationObserved","mutations","attributes","attributeOldValue","characterData","characterDataOldValue","createMutationObserver","setupBodyMutationObserver","setInterval","retVal","defaultView","side","elementsLength","elVal","maxVal","Side","timer","chkEventThottle","dimensions","tag","triggerEventDesc","currentHeight","currentWidth","checkTolarance","isSizeChangeDetected","lockTrigger","resetPage","hcm","postMessage","readyState","count","logEnabled","hiddenCheckEnabled","msgHeaderLen","msgHeader","msgId","freeze","settings","bodyMarginV1","checkOrigin","enablePublicMethods","maxHeight","Infinity","maxWidth","minHeight","scrolling","sizeHeight","sizeWidth","warningTimeout","onClose","onClosed","onInit","onMouseEnter","onMouseLeave","onResized","onScroll","frameTimer","fn","iFrameResize","each","setupIFrame","info","getMutationObserver","MozMutationObserver","isLogEnabled","iframeId","output","enabled","retStr","self","getMyID","formatLogHeader","iFrameListener","resizeIFrame","ensureInRange","syncResize","setSize","messageData","setPagePosition","on","Dimension","dimension","getMsgBody","sendPageInfoToIframe","iframe","frameId","bodyPosition","iFramePosition","trigger","iframeHeight","iframeWidth","innerHeight","clientWidth","innerWidth","documentHeight","documentWidth","windowHeight","windowWidth","scrollRequestFromChild","addOffset","newPosition","unsetPagePosition","onMouse","mousePos","funcName","chkEvent","retBool","retCode","compStyle","createOutgoingMsg","iFrameReadyMsgReceived","boxSizing","paddingTop","paddingBottom","getPaddingEnds","borderTopWidth","borderBottomWidth","getBorderEnds","loaded","hasSettings","remoteHost","origin","checkList","isMessageFromIFrame","closeIFrame","setListener","sendPageInfo","stop","stopPageInfo","startPageInfoMonitor","actionMsg","removeIframeListeners","chkZero","checkIFrames","settingId","chkDimension","offsetParent","checkIFrame","debouce","fixHiddenIFrames","processDimension","setDimension","doNotSync","jasmine","calleeMsg","noResponseWarning","errorShown","msgTimeout","ensureHasId","checkOptions","copyOptions","processOptions","overflow","setScrolling","addStyle","styleValue","chkMinMax","setLimits","removedNodes","removedNode","createDestroyObserver","resetRequertMethod","removeListeners","anchor","time","tabVisible","visibilityState","sendTriggerMsg","isIFrameResizeEnabled","chkType","iFrames","vendors","setupRequestAnimationFrame","warnDeprecatedOptions","INFINITY","symbolTag","reAsciiWord","reLatin","rsAstralRange","rsComboMarksRange","rsComboSymbolsRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsLowerMisc","rsUpperMisc","rsOptLowerContr","rsOptUpperContr","reOptMod","rsModifier","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","freeGlobal","g","freeSelf","root","Function","deburrLetter","hasUnicode","objectToString","symbolProto","symbolToString","isSymbol","camelCase","word","upperFirst","iteratee","accumulator","initAccum","arrayReduce","guard","hasUnicodeWord","unicodeWords","asciiWords","words","deburr","strSymbols","unicodeToArray","asciiToArray","stringToArray","chr","trailing","baseSlice","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","nativeMax","nativeMin","toNumber","other","isBinary","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","debounced","isInvoking","leadingEdge","cancel","flush","kebabCase","__webpack_require__","globalThis","_regeneratorRuntime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","reject","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isNaN","doneResult","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","accordionItemHeadingClick","contentItem","contentInner","content","accordionItemContentTransitionEnd","accordionItemInit","heading","space","spaceClick","attachEnterAsClick","_content$querySelecto","contentHeight","openAccordionFromUrl","hashElement","accordionButton","_callee","_context","accordionItems","VIDEO_CLASS","_ref3","props","prefixIcon","ariaLabel","_ref4","_ref5","_ref5$classNames","itemListDiv","_ref6","_ref7","icon","iconString","ChevronDownIcon","selectEl","iconUrl","_ref8","_ref9","placeholderClass","optionEl","componentList","component","t","ComponentInit","Video","url","_props$hasPreviewImg","hasPreviewImg","videoData","videoType","videoEl","videoId","getYoutubeId","exec","getVimeoId","fileExt","_cleanUrl$split$pop","getFileExtension","getVideoData","videoContainer","showVideo","insertAdjacentHTML","playBtn","LanguageSelector","GlobeIcon","targetModal","triggers","onShow","c","openTrigger","u","closeTrigger","h","openClass","disableScroll","disableFocus","w","awaitCloseAnimation","E","awaitOpenAnimation","M","A","debugMode","C","modal","registerTriggers","onClick","onKeydown","Boolean","showModal","scrollBehaviour","setFocusToFirstNode","closeModal","retainFocus","getFocusableNodes","closeModalById","MicroModal","_evt$target","_evt$target2","hiddenClose","extend","ssrDocument","nodeName","createEvent","initEvent","createElementNS","importNode","host","pathname","protocol","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","getPropertyValue","Image","screen","cancelAnimationFrame","delay","noExtend","nextSource","nodeType","keysArray","nextIndex","nextKey","__swiper__","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","startPosition","translate","startTime","duration","speed","wrapperEl","scrollSnapType","cssModeFrameID","isOutOfBound","current","animate","getTime","progress","easeProgress","cos","PI","currentPosition","elementStyle","previousSibling","parents","elementOuterSize","includeMargins","support","deviceCached","browser","getSupport","smoothScroll","touch","DocumentTouch","calcSupport","events","handler","priority","eventsListeners","destroyed","once","onceHandler","off","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","emit","unshift","updateSize","isHorizontal","isVertical","updateSlides","getDirectionLabel","getDirectionPropertyValue","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","slideEl","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","transform","currentWebKitTransform","webkitTransform","roundLengths","paddingLeft","paddingRight","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","loop","ceil","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","activeIndex","minusOffset","isElement","swiperSlideOffset","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","nextSlide","nextEls","nextElementSibling","elementNextAll","prevSlide","prevEls","previousElementSibling","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","realIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","getTranslate","axis","virtualTranslate","currentTranslate","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","setTranslate","byController","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","onTranslateToWrapperTransitionEnd","transitionEmit","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSliding","loopFix","_clientLeft","clientLeft","rewind","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","slideRealIndex","activeSlideIndex","byMousewheel","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","prepend","recalcSlides","currentSlideTranslate","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","onTouchStart","touchEventsData","evCache","simulateTouch","pointerType","originalEvent","targetEl","touchEventsTarget","which","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","shadowRoot","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","pointerIndex","cachedEv","pointerId","targetTouch","preventedByNestedSwiper","prevX","prevY","touchReleaseOnEdges","targetTouches","diffX","diffY","sqrt","touchAngle","atan2","zoom","touchMoveStopPropagation","nested","touchesDiff","previousX","previousY","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","loopFixed","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","isSafari","isWebView","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resume","preventClicks","preventClicksPropagation","stopImmediatePropagation","processLazyPreloader","imageEl","lazyEl","lazyPreloaderClass","onLoad","update","dummyEventAttached","dummyEventListener","device","capture","domMethod","swiperMethod","updateOnWindowResize","ios","android","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","points","point","minRatio","resizeObserver","createElements","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","prototypes","eventsEmitter","transition","transitionDuration","moving","isLocked","__preventObserver__","cursor","unsetGrabCursor","attachEvents","detachEvents","wasLocked","lastSlideRightEdge","addClasses","suffixes","resultClasses","prepareClasses","removeClasses","extendedDefaults","Swiper","swipers","newParams","overrides","platform","ua","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getDevice","needPerspectiveFix","major","minor","num","calcBrowser","modules","__modules__","extendParams","swiperParams","passedParams","velocity","clickTimeout","velocities","imagesToLoad","imagesLoaded","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","shadowEl","getWrapperSelector","deleteInstance","cleanStyles","deleteProps","newDefaults","installModule","prototypeGroup","protoMethod","use","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","unobserve","observers","attach","WebkitMutationObserver","observerUpdate","observeParents","observeSlideChildren","containerParents","checkProps","Navigation","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","getEl","toggleEl","subEl","onPrevClick","onNextClick","initButton","destroyButton","_s","pagination","clickable","isHidden","toggle","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","total","firstIndex","midIndex","classesToRemove","suffix","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","api","converter","defaultAttributes","expires","toUTCString","encodeURIComponent","escape","stringifiedAttributes","cookie","write","cookies","jar","parts","read","withAttributes","withConverter","getAttributeValue","attrName","copyAttributes","excludes","IS_ACTIVE_CLASS","Slider","CopyPageUrl","pageUrl","clipboard","writeText","t0","TimelineItem","windowScrollCheck","rect","debounce","CookieConsent","cookieName","cookieData","Cookies","getCookie","acceptBtn","rejectBtn","allScripts","allImages","acceptAll","currentScript","_currentScript$parent","freshScript","replaceChild","currentImage","_currentImage$parentN","freshImage","HEADER_FIXED_CLASS","HEADER_FIXED_SHOW_CLASS","HEADER_FIXED_HIDE_CLASS","MAIN_NAV_ITEM_CLASS","MAIN_NAV_ITEM_LINK_CLASS","SUB_NAV_ITEM_LINK_CLASS","MAIN_NAV_ACTIVE_CLASS","MEGA_MENU_ITEM_CLASS","MEGA_MENU_ITEM_LINK_CLASS","MEGA_MENU_SUB_NAV_CLASS","MEGA_MENU_SUB_NAV_ITEM_LINK_CLASS","isTouchEnabled","maxTouchPoints","TRIGGER_CLASS","COLLAPSIBLE_CLASS","OVERFLOW_PARENTS_SELECTOR","AlertBanner","alertBanner","closeIcon","CardCarousel","swiperContainer","FixedHeader","prevScrollY","elHeight","alertBannerHeight","headerHeight","subHeaderHeight","currentScrollY","isFixed","isFixedShow","isFixedHide","HeaderSearch","escapeFunction","searchInput","inputValue","searchUrl","MainNav","mainNavLinkEls","subNavLinkEls","megaMenuLinkEls","megaMenuSubNavEls","megaMenuMainNavEls","outFocusEls","closeOpenedMenu","menuEl","closeAllMainNav","mainNavLinkEl","parentEl","closeAllNav","allActiveMenu","openMainNav","linkEl","noAutoFocus","_currentMegaMenuLinkE","currentSubNavLinkEl","currentMegaMenuLinkEl","closeMainNav","focusNextElement","focusElClass","nextLinkEl","focusPrevElement","prevLinkEl","onSubNavLinkKeyDown","subNavItemClass","subNavItemLinkClass","mainNavEl","_nextLinkEl$parentEle","_nextLinkEl$parentEle2","focusChildElement","focusParentElement","onMainLinkKeyDown","isHasSubmenu","subNavLinkEl","megaMenuLinkEl","openMegaMenuNav","outFocusEl","windowResizeCheck","megaMenuMainNavEl","subNavs","subNavHeightArray","subNav","subNavHeight","cloneNode","opacity","visibility","after","getHiddenHeight","MobileNav","_props$itemClass","itemClass","_props$triggerClass","triggerClass","_props$collapsibleCla","collapsibleClass","_props$backTriggerCla","backTriggerClass","itemEl","triggerEl","collapsibleEl","affectedParent","backTriggerEl","NavbarToggler","closeMobileNav","closeAllMenuMobileNav","SearchToggler","closeSearch","inputEl","openSearch"],"sourceRoot":""}