{"version":3,"file":"main.js","mappings":"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","sources":["webpack://flow.flowcrmstudy/./node_modules/vanilla-toast/vanilla-toast.js","webpack://flow.flowcrmstudy/webpack/bootstrap","webpack://flow.flowcrmstudy/webpack/runtime/compat get default export","webpack://flow.flowcrmstudy/webpack/runtime/define property getters","webpack://flow.flowcrmstudy/webpack/runtime/hasOwnProperty shorthand","webpack://flow.flowcrmstudy/./node_modules/axios/lib/helpers/bind.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/utils.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/core/AxiosError.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/helpers/toFormData.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/helpers/buildURL.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/core/InterceptorManager.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/defaults/transitional.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/platform/browser/index.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/platform/browser/classes/FormData.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/platform/browser/classes/Blob.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/helpers/formDataToJSON.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/defaults/index.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/core/AxiosHeaders.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/core/transformData.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/cancel/isCancel.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/cancel/CanceledError.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/helpers/cookies.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/core/buildFullPath.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/helpers/combineURLs.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/adapters/xhr.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/helpers/speedometer.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/adapters/adapters.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/helpers/null.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/core/settle.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/helpers/parseProtocol.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/core/dispatchRequest.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/core/mergeConfig.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/env/data.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/helpers/validator.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/core/Axios.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/cancel/CancelToken.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/helpers/HttpStatusCode.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/axios.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/helpers/spread.js","webpack://flow.flowcrmstudy/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/core/utils.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/core/action-details.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/core/holder.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/masked/factory.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/controls/mask-element.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/controls/html-mask-element.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/controls/html-input-mask-element.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/controls/html-contenteditable-mask-element.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/controls/input-history.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/controls/input.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/core/change-details.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/core/continuous-tail-details.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/masked/base.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/masked/pattern/chunk-tail-details.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/masked/pattern/cursor.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/masked/pattern/fixed-definition.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/masked/pattern/input-definition.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/masked/regexp.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/masked/pattern.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/masked/range.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/masked/date.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/masked/dynamic.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/masked/enum.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/masked/number.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/masked/function.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/masked/pipe.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/masked/repeat.js","webpack://flow.flowcrmstudy/./node_modules/imask/esm/index.js","webpack://flow.flowcrmstudy/./wwwroot/src/modules/form.js","webpack://flow.flowcrmstudy/./wwwroot/src/modules/scroll.js","webpack://flow.flowcrmstudy/./wwwroot/src/modules/modal/modal.js","webpack://flow.flowcrmstudy/./wwwroot/src/modules/resize.js","webpack://flow.flowcrmstudy/./node_modules/ssr-window/ssr-window.esm.js","webpack://flow.flowcrmstudy/./node_modules/dom7/dom7.esm.js","webpack://flow.flowcrmstudy/./node_modules/swiper/shared/dom.js","webpack://flow.flowcrmstudy/./node_modules/swiper/shared/utils.js","webpack://flow.flowcrmstudy/./node_modules/swiper/shared/get-support.js","webpack://flow.flowcrmstudy/./node_modules/swiper/shared/get-device.js","webpack://flow.flowcrmstudy/./node_modules/swiper/shared/get-browser.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/events-emitter.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/update/index.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/update/updateSize.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/update/updateSlides.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/update/updateAutoHeight.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/update/updateSlidesOffset.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/update/updateSlidesProgress.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/update/updateProgress.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/update/updateSlidesClasses.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/update/updateActiveIndex.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/update/updateClickedSlide.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/transition/transitionEmit.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/slide/index.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/slide/slideTo.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/slide/slideToLoop.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/slide/slideNext.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/slide/slidePrev.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/slide/slideReset.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/slide/slideToClosest.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/loop/index.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/loop/loopCreate.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/loop/loopFix.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/loop/loopDestroy.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/events/onTouchStart.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/events/onTouchMove.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/events/onTouchEnd.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/events/onResize.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/events/onClick.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/events/onScroll.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/events/index.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/breakpoints/index.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/classes/index.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/classes/addClasses.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/classes/removeClasses.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/defaults.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/moduleExtendParams.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/core.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/translate/index.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/translate/getTranslate.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/translate/setTranslate.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/translate/minTranslate.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/translate/maxTranslate.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/translate/translateTo.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/transition/index.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/transition/setTransition.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/transition/transitionStart.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/transition/transitionEnd.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/grab-cursor/index.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/check-overflow/index.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/images/index.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/images/loadImage.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/images/preloadImages.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/modules/resize/resize.js","webpack://flow.flowcrmstudy/./node_modules/swiper/core/modules/observer/observer.js","webpack://flow.flowcrmstudy/./wwwroot/src/modules/sliders/index.js","webpack://flow.flowcrmstudy/./wwwroot/src/modules/sliders/init-home-slider.js","webpack://flow.flowcrmstudy/./wwwroot/src/modules/sliders/init-whyFlow-slider.js","webpack://flow.flowcrmstudy/./wwwroot/src/modules/sliders/init-about-slider.js","webpack://flow.flowcrmstudy/./wwwroot/src/index.js","webpack://flow.flowcrmstudy/./wwwroot/src/modules/menu.js","webpack://flow.flowcrmstudy/./wwwroot/src/modules/modal/init-modal.js"],"sourcesContent":["(function() {\r\n \"use strict\";\r\n\r\n // VanillaToast class\r\n var VanillaToast = (function() {\r\n function VanillaToast() {\r\n this.queue = new TaskQueue();\r\n this.cancellationTokens = [];\r\n this.element = null;\r\n }\r\n\r\n var constants = {\r\n default: {\r\n className: 'default',\r\n fadeDuration: 400,\r\n fadeInterval: 16,\r\n duration: 2000,\r\n closeButton: false,\r\n immediately: false\r\n },\r\n success: {\r\n className: 'success'\r\n },\r\n info: {\r\n className: 'info'\r\n },\r\n warning: {\r\n className: 'warning'\r\n },\r\n error: {\r\n className: 'error',\r\n duration: 3000,\r\n closeButton: true\r\n }\r\n };\r\n\r\n // create elements.\r\n VanillaToast.prototype.initElement = function(selector) {\r\n var container = document.createElement('div');\r\n var toastBox = document.createElement('div');\r\n var text = document.createElement('div');\r\n var closeButton = document.createElement('span');\r\n\r\n container.setAttribute(\"id\", \"vanilla-toast-container\");\r\n\r\n toastBox.setAttribute(\"id\", \"vanilla-toast\");\r\n\r\n text.setAttribute(\"id\", \"vanilla-toast-text\");\r\n\r\n closeButton.setAttribute(\"id\", \"vanilla-toast-close-button\");\r\n closeButton.innerHTML = '✖';\r\n\r\n toastBox.appendChild(text);\r\n toastBox.appendChild(closeButton);\r\n container.appendChild(toastBox);\r\n\r\n if (selector) {\r\n document.getElementById(seletor).appendChild(containter);\r\n } else {\r\n document.body.appendChild(container);\r\n }\r\n\r\n this.element = {\r\n container: container,\r\n toastBox: toastBox,\r\n text: text,\r\n closeButton: closeButton\r\n };\r\n\r\n _setStyle(this, constants.default);\r\n };\r\n\r\n // cancel current showing toast.\r\n VanillaToast.prototype.cancel = function() {\r\n if (this.cancellationTokens.length) this.cancellationTokens[0].cancel();\r\n };\r\n\r\n // cancel all enqueued toasts.\r\n VanillaToast.prototype.cancelAll = function() {\r\n var length = this.cancellationTokens.length;\r\n for (var i = 0; i < length; ++i) {\r\n (function(token) {\r\n token.cancel();\r\n })(this.cancellationTokens[length - i - 1]);\r\n }\r\n };\r\n\r\n // show toast\r\n VanillaToast.prototype.show = function(text, option, callback) {\r\n var self = this;\r\n if (!self.element) self.initElement();\r\n if (!option) option = {};\r\n // if immediately show option is on, cancel all previous toasts.\r\n if (option.immediately) self.cancelAll();\r\n\r\n var cancellationToken = new CancellationToken();\r\n // enqueue\r\n self.queue.enqueue(function(next) {\r\n // time setting\r\n var fadeDuration = option.fadeDuration || constants.default.fadeDuration;\r\n var fadeInterval = option.fadeInterval || constants.default.fadeInterval;\r\n var fadeStep = Math.min(fadeInterval / fadeDuration, 1);\r\n var duration = option.duration || constants.default.duration;\r\n\r\n // close button setting\r\n self.element.closeButton.style.display =\r\n option.closeButton ? 'inline' : 'none';\r\n\r\n // set text\r\n self.element.text.innerHTML = text;\r\n\r\n // set visible\r\n var s = self.element.toastBox.style;\r\n s.opacity = 0;\r\n s.display = 'inline-block';\r\n\r\n // set styles\r\n _setStyle(self, option);\r\n\r\n // timeoutId\r\n var timeoutId = null;\r\n\r\n // duration timeout callback.\r\n var timeoutCallback = function() {\r\n timeoutId = null;\r\n // release click clickHandler\r\n self.element.toastBox.removeEventListener('click', cancelHandler);\r\n _hide(self, option, cancellationToken, function() {\r\n if (callback) callback();\r\n self.cancellationTokens.shift().dispose();\r\n next();\r\n });\r\n };\r\n\r\n // click for close handler\r\n var cancelHandler = function() {\r\n if (!timeoutId) return;\r\n clearTimeout(timeoutId);\r\n timeoutCallback();\r\n };\r\n\r\n // start fade in.\r\n _fade(s, fadeStep, fadeInterval, cancellationToken, function() {\r\n // show while duration time and hide.\r\n self.element.toastBox.addEventListener('click', cancelHandler);\r\n if (cancellationToken.isCancellationRequested) {\r\n timeoutCallback();\r\n } else {\r\n timeoutId = setTimeout(timeoutCallback, duration);\r\n cancellationToken.register(function() {\r\n cancelHandler();\r\n });\r\n }\r\n });\r\n });\r\n\r\n self.cancellationTokens.push(cancellationToken);\r\n\r\n return self;\r\n };\r\n\r\n // create preset methods\r\n for (var item in constants) {\r\n (function(preset) {\r\n VanillaToast.prototype[preset] = function(text, option, callback) {\r\n if (!option) option = {};\r\n\r\n // copy preset options\r\n for (var propertyName in constants[preset]) {\r\n if (option[propertyName] === undefined)\r\n option[propertyName] = constants[preset][propertyName];\r\n }\r\n\r\n return this.show(text, option, callback);\r\n };\r\n })(item);\r\n }\r\n\r\n // private methods.\r\n\r\n // set style\r\n function _setStyle(self, option) {\r\n self.element.toastBox.className = option.className || constants.default.className;\r\n };\r\n\r\n // hide toast\r\n function _hide(self, option, cancellationToken, callback) {\r\n if (!option) option = {};\r\n\r\n // time setting\r\n var fadeDuration = option.fadeDuration || constants.default.fadeDuration;\r\n var fadeInterval = option.fadeInterval || constants.default.fadeInterval;\r\n var fadeStep = Math.min(fadeInterval / fadeDuration, 1);\r\n\r\n // set visible\r\n var s = self.element.toastBox.style;\r\n s.opacity = 1;\r\n\r\n // start fade out and call callback function.\r\n _fade(s, -fadeStep, fadeInterval, cancellationToken, function() {\r\n s.display = 'none';\r\n if (callback) callback();\r\n });\r\n\r\n return self;\r\n };\r\n\r\n // run fade animation\r\n function _fade(style, step, interval, cancellationToken, callback) {\r\n (function fade() {\r\n if (cancellationToken.isCancellationRequested) {\r\n style.opacity = step < 0 ? 0 : 1;\r\n if (callback) callback();\r\n return;\r\n }\r\n style.opacity = Number(style.opacity) + step;\r\n if (step < 0 && style.opacity < 0) {\r\n if (callback) callback();\r\n } else if (step > 0 && style.opacity >= 1) {\r\n if (callback) callback();\r\n } else {\r\n var timeoutId = setTimeout(function() {\r\n timeoutId = null;\r\n fade();\r\n }, interval);\r\n cancellationToken.register(function() {\r\n if (!timeoutId) return;\r\n clearTimeout(timeoutId);\r\n timeoutId = null;\r\n if (callback) callback();\r\n });\r\n }\r\n })();\r\n };\r\n\r\n return VanillaToast;\r\n })();\r\n\r\n // CancellationToken class\r\n var CancellationToken = (function() {\r\n function CancellationToken() {\r\n this.isCancellationRequested = false;\r\n this.cancelCallbacks = [];\r\n }\r\n\r\n CancellationToken.prototype.cancel = function() {\r\n this.isCancellationRequested = true;\r\n var copiedCallbacks = this.cancelCallbacks.slice();\r\n while (copiedCallbacks.length) copiedCallbacks.shift()();\r\n };\r\n\r\n CancellationToken.prototype.register = function(callback) {\r\n this.cancelCallbacks.push(callback);\r\n };\r\n\r\n CancellationToken.prototype.dispose = function() {\r\n while (this.cancelCallbacks.length) this.cancelCallbacks.shift();\r\n };\r\n\r\n return CancellationToken;\r\n })();\r\n\r\n // TaskQueue class from https://github.com/talsu/async-task-queue\r\n var TaskQueue = (function() {\r\n function TaskQueue() {\r\n this.queue = [];\r\n this.isExecuting = false;\r\n }\r\n\r\n // enqueue job. run immediately.\r\n TaskQueue.prototype.enqueue = function(job) {\r\n // enqueue.\r\n this.queue.push(job);\r\n // call execute.\r\n dequeueAndExecute(this);\r\n };\r\n\r\n // Dequeue and execute job.\r\n function dequeueAndExecute(self) {\r\n if (self.isExecuting) return;\r\n\r\n // Dequeue Job.\r\n var job = self.queue.shift();\r\n if (!job) return;\r\n\r\n //Execute Job.\r\n self.isExecuting = true;\r\n\r\n // Pass next job execute callback.\r\n job(function() {\r\n self.isExecuting = false;\r\n dequeueAndExecute(self);\r\n });\r\n }\r\n\r\n return TaskQueue;\r\n })();\r\n\r\n // export\r\n if (typeof exports !== 'undefined') {\r\n if (typeof module !== 'undefined' && module.exports) {\r\n exports = module.exports = new VanillaToast();\r\n }\r\n exports.vanillaToast = new VanillaToast();\r\n } else {\r\n this.vanillaToast = new VanillaToast();\r\n }\r\n}.call(this));\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n if (reducer(descriptor, name, obj) !== false) {\n reducedDescriptors[name] = descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst isStandardBrowserEnv = (() => {\n let product;\n if (typeof navigator !== 'undefined' && (\n (product = navigator.product) === 'ReactNative' ||\n product === 'NativeScript' ||\n product === 'NS')\n ) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n})();\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\n const isStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n isStandardBrowserEnv,\n isStandardBrowserWebWorkerEnv,\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\nconst DEFAULT_CONTENT_TYPE = {\n 'Content-Type': undefined\n};\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n if (!hasJSONContentType) {\n return data;\n }\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\nutils.freezeMethods(AxiosHeaders.prototype);\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.isStandardBrowserEnv ?\n\n// Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n const cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n// Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })();\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.isStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n const responseType = config.responseType;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n if (platform.isStandardBrowserEnv || platform.isStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else {\n requestHeaders.setContentType('multipart/form-data;', false); // mobile/desktop app frameworks\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (platform.isStandardBrowserEnv) {\n // Add xsrf header\n const xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath))\n && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if(fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n if((adapter = utils.isString(nameOrAdapter) ? knownAdapters[nameOrAdapter.toLowerCase()] : nameOrAdapter)) {\n break;\n }\n }\n\n if (!adapter) {\n if (adapter === false) {\n throw new AxiosError(\n `Adapter ${nameOrAdapter} is not supported by the environment`,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n throw new Error(\n utils.hasOwnProp(knownAdapters, nameOrAdapter) ?\n `Adapter '${nameOrAdapter}' is not available in the build` :\n `Unknown adapter '${nameOrAdapter}'`\n );\n }\n\n if (!utils.isFunction(adapter)) {\n throw new TypeError('adapter is not a function');\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.4.0\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n let contextHeaders;\n\n // Flatten headers\n contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n contextHeaders && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","/** Checks if value is string */\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n\n/** Checks if value is object */\nfunction isObject(obj) {\n var _obj$constructor;\n return typeof obj === 'object' && obj != null && (obj == null || (_obj$constructor = obj.constructor) == null ? void 0 : _obj$constructor.name) === 'Object';\n}\nfunction pick(obj, keys) {\n if (Array.isArray(keys)) return pick(obj, (_, k) => keys.includes(k));\n return Object.entries(obj).reduce((acc, _ref) => {\n let [k, v] = _ref;\n if (keys(v, k)) acc[k] = v;\n return acc;\n }, {});\n}\n\n/** Direction */\nconst DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n\n/** Direction */\n\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n default:\n return direction;\n }\n}\n\n/** Escapes regular expression control chars */\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n}\n\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n const arrA = Array.isArray(a),\n arrB = Array.isArray(b);\n let i;\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n const dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n const regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n const keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n return false;\n}\n\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, isObject, isString, objectIncludes, pick };\n","import { DIRECTION } from './utils.js';\n\n/** Provides details of changing input */\nclass ActionDetails {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n\n constructor(opts) {\n Object.assign(this, opts);\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n if (this.insertedCount) {\n // double check right part\n while (this.value.slice(this.cursorPos) !== this.oldValue.slice(this.oldSelection.end)) {\n if (this.value.length - this.cursorPos < this.oldValue.length - this.oldSelection.end) ++this.oldSelection.end;else ++this.cursorPos;\n }\n }\n }\n\n /** Start changing position */\n get startChangePos() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /** Inserted symbols count */\n get insertedCount() {\n return this.cursorPos - this.startChangePos;\n }\n\n /** Inserted symbols */\n get inserted() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /** Removed symbols count */\n get removedCount() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /** Removed symbols */\n get removed() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /** Unchanged head symbols */\n get head() {\n return this.value.substring(0, this.startChangePos);\n }\n\n /** Unchanged tail symbols */\n get tail() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /** Remove direction */\n get removeDirection() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\n // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n}\n\nexport { ActionDetails as default };\n","/** Applies mask on element */\nfunction IMask(el, opts) {\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n","import { isString, isObject, pick } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n// export function maskedClass(mask: string): typeof MaskedPattern;\n// export function maskedClass(mask: DateConstructor): typeof MaskedDate;\n// export function maskedClass(mask: NumberConstructor): typeof MaskedNumber;\n// export function maskedClass(mask: Array | ArrayConstructor): typeof MaskedDynamic;\n// export function maskedClass(mask: MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass(mask: Masked): typeof Masked;\n// export function maskedClass(mask: typeof Masked): typeof Masked;\n// export function maskedClass(mask: typeof MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: typeof MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: typeof MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: typeof MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: typeof MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: typeof MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: typeof MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: typeof MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass (mask: Mask): Mask;\n// export function maskedClass(mask: RegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: (value: string, ...args: any[]) => boolean): typeof MaskedFunction;\n\n/** Get Masked class by mask type */\nfunction maskedClass(mask) /* TODO */{\n if (mask == null) throw new Error('mask property should be defined');\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\n if (isString(mask)) return IMask.MaskedPattern;\n if (mask === Date) return IMask.MaskedDate;\n if (mask === Number) return IMask.MaskedNumber;\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\n if (IMask.Masked && mask instanceof IMask.Masked) return mask.constructor;\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n return IMask.Masked;\n}\nfunction normalizeOpts(opts) {\n if (!opts) throw new Error('Options in not defined');\n if (IMask.Masked) {\n if (opts.prototype instanceof IMask.Masked) return {\n mask: opts\n };\n\n /*\n handle cases like:\n 1) opts = Masked\n 2) opts = { mask: Masked, ...instanceOpts }\n */\n const {\n mask = undefined,\n ...instanceOpts\n } = opts instanceof IMask.Masked ? {\n mask: opts\n } : isObject(opts) && opts.mask instanceof IMask.Masked ? opts : {};\n if (mask) {\n const _mask = mask.mask;\n return {\n ...pick(mask, (_, k) => !k.startsWith('_')),\n mask: mask.constructor,\n _mask,\n ...instanceOpts\n };\n }\n }\n if (!isObject(opts)) return {\n mask: opts\n };\n return {\n ...opts\n };\n}\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n\n// From masked\n// export default function createMask (opts: Opts): ReturnMasked;\n// // From masked class\n// export default function createMask, ReturnMasked extends Masked=InstanceType> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedDate=MaskedDate> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedNumber=MaskedNumber> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedEnum=MaskedEnum> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedRange=MaskedRange> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedRegExp=MaskedRegExp> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedFunction=MaskedFunction> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedPattern=MaskedPattern> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedDynamic=MaskedDynamic> (opts: Opts): ReturnMasked;\n// // From mask opts\n// export default function createMask, ReturnMasked=Opts extends MaskedOptions ? M : never> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedRegExp=MaskedRegExp> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedFunction=MaskedFunction> (opts: Opts): ReturnMasked;\n\n/** Creates new {@link Masked} depending on mask type */\nfunction createMask(opts) {\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n const nOpts = normalizeOpts(opts);\n const MaskedClass = maskedClass(nOpts.mask);\n if (!MaskedClass) throw new Error(\"Masked class is not found for provided mask \" + nOpts.mask + \", appropriate module needs to be imported manually before creating mask.\");\n if (nOpts.mask === MaskedClass) delete nOpts.mask;\n if (nOpts._mask) {\n nOpts.mask = nOpts._mask;\n delete nOpts._mask;\n }\n return new MaskedClass(nOpts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass, normalizeOpts };\n","import IMask from '../core/holder.js';\n\n/** Generic element API to use with mask */\nclass MaskElement {\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n get selectionStart() {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch {}\n return start != null ? start : this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd() {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch {}\n return end != null ? end : this.value.length;\n }\n\n /** Safely sets element selection */\n select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n try {\n this._unsafeSelect(start, end);\n } catch {}\n }\n\n /** */\n get isActive() {\n return false;\n }\n /** */\n\n /** */\n\n /** */\n}\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n","import MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\nconst KEY_Z = 90;\nconst KEY_Y = 89;\n\n/** Bridge between HTMLElement and {@link Masked} */\nclass HTMLMaskElement extends MaskElement {\n /** HTMLElement to use mask on */\n\n constructor(input) {\n super();\n this.input = input;\n this._onKeydown = this._onKeydown.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onBeforeinput = this._onBeforeinput.bind(this);\n this._onCompositionEnd = this._onCompositionEnd.bind(this);\n }\n get rootElement() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) == null ? void 0 : _this$input$getRootNo2.call(_this$input)) != null ? _this$input$getRootNo : document;\n }\n\n /** Is element in focus */\n get isActive() {\n return this.input === this.rootElement.activeElement;\n }\n\n /** Binds HTMLElement events to mask internal events */\n bindEvents(handlers) {\n this.input.addEventListener('keydown', this._onKeydown);\n this.input.addEventListener('input', this._onInput);\n this.input.addEventListener('beforeinput', this._onBeforeinput);\n this.input.addEventListener('compositionend', this._onCompositionEnd);\n this.input.addEventListener('drop', handlers.drop);\n this.input.addEventListener('click', handlers.click);\n this.input.addEventListener('focus', handlers.focus);\n this.input.addEventListener('blur', handlers.commit);\n this._handlers = handlers;\n }\n _onKeydown(e) {\n if (this._handlers.redo && (e.keyCode === KEY_Z && e.shiftKey && (e.metaKey || e.ctrlKey) || e.keyCode === KEY_Y && e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n if (this._handlers.undo && e.keyCode === KEY_Z && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (!e.isComposing) this._handlers.selectionChange(e);\n }\n _onBeforeinput(e) {\n if (e.inputType === 'historyUndo' && this._handlers.undo) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (e.inputType === 'historyRedo' && this._handlers.redo) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n }\n _onCompositionEnd(e) {\n this._handlers.input(e);\n }\n _onInput(e) {\n if (!e.isComposing) this._handlers.input(e);\n }\n\n /** Unbinds HTMLElement events to mask internal events */\n unbindEvents() {\n this.input.removeEventListener('keydown', this._onKeydown);\n this.input.removeEventListener('input', this._onInput);\n this.input.removeEventListener('beforeinput', this._onBeforeinput);\n this.input.removeEventListener('compositionend', this._onCompositionEnd);\n this.input.removeEventListener('drop', this._handlers.drop);\n this.input.removeEventListener('click', this._handlers.click);\n this.input.removeEventListener('focus', this._handlers.focus);\n this.input.removeEventListener('blur', this._handlers.commit);\n this._handlers = {};\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\n/** Bridge between InputElement and {@link Masked} */\nclass HTMLInputMaskElement extends HTMLMaskElement {\n /** InputElement to use mask on */\n\n constructor(input) {\n super(input);\n this.input = input;\n }\n\n /** Returns InputElement selection start */\n get _unsafeSelectionStart() {\n return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;\n }\n\n /** Returns InputElement selection end */\n get _unsafeSelectionEnd() {\n return this.input.selectionEnd;\n }\n\n /** Sets InputElement selection */\n _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLInputMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n /** Returns HTMLElement selection start */\n get _unsafeSelectionStart() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Returns HTMLElement selection end */\n get _unsafeSelectionEnd() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Sets HTMLElement selection */\n _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /** HTMLElement value */\n get value() {\n return this.input.textContent || '';\n }\n set value(value) {\n this.input.textContent = value;\n }\n}\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n","class InputHistory {\n constructor() {\n this.states = [];\n this.currentIndex = 0;\n }\n get currentState() {\n return this.states[this.currentIndex];\n }\n get isEmpty() {\n return this.states.length === 0;\n }\n push(state) {\n // if current index points before the last element then remove the future\n if (this.currentIndex < this.states.length - 1) this.states.length = this.currentIndex + 1;\n this.states.push(state);\n if (this.states.length > InputHistory.MAX_LENGTH) this.states.shift();\n this.currentIndex = this.states.length - 1;\n }\n go(steps) {\n this.currentIndex = Math.min(Math.max(this.currentIndex + steps, 0), this.states.length - 1);\n return this.currentState;\n }\n undo() {\n return this.go(-1);\n }\n redo() {\n return this.go(+1);\n }\n clear() {\n this.states.length = 0;\n this.currentIndex = 0;\n }\n}\nInputHistory.MAX_LENGTH = 100;\n\nexport { InputHistory as default };\n","import { DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLInputMaskElement from './html-input-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport InputHistory from './input-history.js';\nimport './html-mask-element.js';\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nclass InputMask {\n /**\n View element\n */\n\n /** Internal {@link Masked} model */\n\n constructor(el, opts) {\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLInputMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._rawInputValue = '';\n this.history = new InputHistory();\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onUndo = this._onUndo.bind(this);\n this._onRedo = this._onRedo.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n maskEquals(mask) {\n var _this$masked;\n return mask == null || ((_this$masked = this.masked) == null ? void 0 : _this$masked.maskEquals(mask));\n }\n\n /** Masked */\n get mask() {\n return this.masked.mask;\n }\n set mask(mask) {\n if (this.maskEquals(mask)) return;\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n // TODO \"any\" no idea\n this.masked.updateOptions({\n mask\n });\n return;\n }\n const masked = mask instanceof IMask.Masked ? mask : createMask({\n mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value() {\n return this._value;\n }\n set value(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl('auto');\n }\n\n /** Unmasked value */\n get unmaskedValue() {\n return this._unmaskedValue;\n }\n set unmaskedValue(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl('auto');\n }\n\n /** Raw input value */\n get rawInputValue() {\n return this._rawInputValue;\n }\n set rawInputValue(str) {\n if (this.rawInputValue === str) return;\n this.masked.rawInputValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue() {\n return this.masked.typedValue;\n }\n set typedValue(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl('auto');\n }\n\n /** Display value */\n get displayValue() {\n return this.masked.displayValue;\n }\n\n /** Starts listening to element events */\n _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange,\n undo: this._onUndo,\n redo: this._onRedo\n });\n }\n\n /** Stops listening to element events */\n _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n\n /** Fires custom event */\n _fireEvent(ev, e) {\n const listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(l => l(e));\n }\n\n /** Current selection start */\n get selectionStart() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n }\n set cursorPos(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /** Stores current selection */\n _saveSelection( /* ev */\n ) {\n if (this.displayValue !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n this._unmaskedValue = this.masked.unmaskedValue;\n this._rawInputValue = this.masked.rawInputValue;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl(cursorPos) {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newRawInputValue = this.masked.rawInputValue;\n const newDisplayValue = this.displayValue;\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue || this._rawInputValue !== newRawInputValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n this._rawInputValue = newRawInputValue;\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n if (cursorPos === 'auto') this.alignCursor();else if (cursorPos != null) this.cursorPos = cursorPos;\n if (isChanged) this._fireChangeEvents();\n if (!this._historyChanging && (isChanged || this.history.isEmpty)) this.history.push({\n unmaskedValue: newUnmaskedValue,\n selection: {\n start: this.selectionStart,\n end: this.cursorPos\n }\n });\n }\n\n /** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */\n updateOptions(opts) {\n const {\n mask,\n ...restOpts\n } = opts; // TODO types, yes, mask is optional\n\n const updateMask = !this.maskEquals(mask);\n const updateOpts = this.masked.optionsIsChanged(restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts); // TODO\n\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /** Delays cursor update to support mobile browsers */\n _delayUpdateCursor(cursorPos) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /** Fires custom events */\n _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /** Aborts delayed cursor update */\n _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off(ev, handler) {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput(e) {\n this._inputEvent = e;\n this._abortUpdateCursor();\n const details = new ActionDetails({\n // new state\n value: this.el.value,\n cursorPos: this.cursorPos,\n // old state\n oldValue: this.displayValue,\n oldSelection: this._selection\n });\n const oldRawValue = this.masked.rawInputValue;\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange() {\n if (this.displayValue !== this.el.value) this.updateValue();\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus(ev) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick(ev) {\n this.alignCursorFriendly();\n }\n _onUndo() {\n this._applyHistoryState(this.history.undo());\n }\n _onRedo() {\n this._applyHistoryState(this.history.redo());\n }\n _applyHistoryState(state) {\n if (!state) return;\n this._historyChanging = true;\n this.unmaskedValue = state.unmaskedValue;\n this.el.select(state.selection.start, state.selection.end);\n this._saveSelection();\n this._historyChanging = false;\n }\n\n /** Unbind view events and removes element reference */\n destroy() {\n this._unbindEvents();\n this._listeners.length = 0;\n delete this.el;\n }\n}\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n","import IMask from './holder.js';\n\n/** Provides details of changing model value */\nclass ChangeDetails {\n /** Inserted symbols */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n\n /** Can skip chars */\n\n static normalize(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n }\n constructor(details) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n tailShift: 0,\n skip: false\n }, details);\n }\n\n /** Aggregate changes */\n aggregate(details) {\n this.inserted += details.inserted;\n this.rawInserted += details.rawInserted;\n this.tailShift += details.tailShift;\n this.skip = this.skip || details.skip;\n return this;\n }\n\n /** Total offset considering all changes */\n get offset() {\n return this.tailShift + this.inserted.length;\n }\n get consumed() {\n return Boolean(this.rawInserted) || this.skip;\n }\n equals(details) {\n return this.inserted === details.inserted && this.tailShift === details.tailShift && this.rawInserted === details.rawInserted && this.skip === details.skip;\n }\n}\nIMask.ChangeDetails = ChangeDetails;\n\nexport { ChangeDetails as default };\n","/** Provides details of continuous extracted tail */\nclass ContinuousTailDetails {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n\n constructor(value, from, stop) {\n if (value === void 0) {\n value = '';\n }\n if (from === void 0) {\n from = 0;\n }\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n toString() {\n return this.value;\n }\n extend(tail) {\n this.value += String(tail);\n }\n appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n get state() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n shift() {\n if (!this.value.length) return '';\n const shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n}\n\nexport { ContinuousTailDetails as default };\n","import ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString, DIRECTION, objectIncludes, forceDirection } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Append flags */\n\n/** Extract flags */\n\n// see https://github.com/microsoft/TypeScript/issues/6223\n\n/** Provides common masking stuff */\nclass Masked {\n /** */\n\n /** */\n\n /** Transforms value before mask processing */\n\n /** Transforms each char before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing at the end of editing */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n this._value = '';\n this._update({\n ...Masked.DEFAULTS,\n ...opts\n });\n this._initialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions(opts) {\n if (!this.optionsIsChanged(opts)) return;\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /** Sets new options */\n _update(opts) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset() {\n this._value = '';\n }\n get value() {\n return this._value;\n }\n set value(value) {\n this.resolve(value, {\n input: true\n });\n }\n\n /** Resolve new value */\n resolve(value, flags) {\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n }\n get unmaskedValue() {\n return this.value;\n }\n set unmaskedValue(value) {\n this.resolve(value, {});\n }\n get typedValue() {\n return this.parse ? this.parse(this.value, this) : this.unmaskedValue;\n }\n set typedValue(value) {\n if (this.format) {\n this.value = this.format(value, this);\n } else {\n this.unmaskedValue = String(value);\n }\n }\n\n /** Value that includes raw user input */\n get rawInputValue() {\n return this.extractInput(0, this.displayValue.length, {\n raw: true\n });\n }\n set rawInputValue(value) {\n this.resolve(value, {\n raw: true\n });\n }\n get displayValue() {\n return this.value;\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return Math.min(this.displayValue.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return this.displayValue.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw(ch, flags) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n\n /** Appends char */\n _appendChar(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const consistentState = this.state;\n let details;\n [ch, details] = this.doPrepareChar(ch, flags);\n if (ch) {\n details = details.aggregate(this._appendCharRaw(ch, flags));\n\n // TODO handle `skip`?\n\n // try `autofix` lookahead\n if (!details.rawInserted && this.autofix === 'pad') {\n const noFixState = this.state;\n this.state = consistentState;\n let fixDetails = this.pad(flags);\n const chDetails = this._appendCharRaw(ch, flags);\n fixDetails = fixDetails.aggregate(chDetails);\n\n // if fix was applied or\n // if details are equal use skip restoring state optimization\n if (chDetails.rawInserted || fixDetails.equals(details)) {\n details = fixDetails;\n } else {\n this.state = noFixState;\n }\n }\n }\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.unshift(this.displayValue.length - details.tailShift);\n }\n }\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.shift();\n }\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at the end */\n _appendPlaceholder() {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at the end */\n _appendEager() {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags != null && flags.tail) flags._beforeTailState = this.state;\n let details;\n [str, details] = this.doPrepare(str, flags);\n for (let ci = 0; ci < str.length; ++ci) {\n const d = this._appendChar(str[ci], flags, checkTail);\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;\n details.aggregate(d);\n }\n if ((this.eager === true || this.eager === 'append') && flags != null && flags.input && str) {\n details.aggregate(this._appendEager());\n }\n\n // append tail but aggregate only tailShift\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift;\n // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n return details;\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n this._value = this.displayValue.slice(0, fromPos) + this.displayValue.slice(toPos);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n withValueRefresh(fn) {\n if (this._refreshing || !this._initialized) return fn();\n this._refreshing = true;\n const rawInput = this.rawInputValue;\n const value = this.value;\n const ret = fn();\n this.rawInputValue = rawInput;\n // append lost trailing chars at the end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.displayValue.length), {}, '');\n this.doCommit();\n }\n delete this._refreshing;\n return ret;\n }\n runIsolated(fn) {\n if (this._isolated || !this._initialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n const ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n doSkipInvalid(ch, flags, checkTail) {\n return Boolean(this.skipInvalid);\n }\n\n /** Prepares string before mask processing */\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepare ? this.prepare(str, this, flags) : str);\n }\n\n /** Prepares each char before mask processing */\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepareChar ? this.prepareChar(str, this, flags) : str);\n }\n\n /** Validates if value is acceptable */\n doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n\n /** Does additional processing at the end of editing */\n doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n splice(start, deleteCount, inserted, removeDirection, flags) {\n if (inserted === void 0) {\n inserted = '';\n }\n if (removeDirection === void 0) {\n removeDirection = DIRECTION.NONE;\n }\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n const tailPos = start + deleteCount;\n const tail = this.extractTail(tailPos);\n const eagerRemove = this.eager === true || this.eager === 'remove';\n let oldRawValue;\n if (eagerRemove) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n let startChangePos = start;\n const details = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection);\n\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n details.aggregate(this.remove(startChangePos));\n if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.displayValue.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n return details.aggregate(this.append(inserted, flags, tail));\n }\n maskEquals(mask) {\n return this.mask === mask;\n }\n optionsIsChanged(opts) {\n return !objectIncludes(this, opts);\n }\n typedValueEquals(value) {\n const tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || (this.format ? this.format(value, this) === this.format(this.typedValue, this) : false);\n }\n pad(flags) {\n return new ChangeDetails();\n }\n}\nMasked.DEFAULTS = {\n skipInvalid: true\n};\nMasked.EMPTY_VALUES = [undefined, null, ''];\nIMask.Masked = Masked;\n\nexport { Masked as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nclass ChunksTailDetails {\n /** */\n\n constructor(chunks, from) {\n if (chunks === void 0) {\n chunks = [];\n }\n if (from === void 0) {\n from = 0;\n }\n this.chunks = chunks;\n this.from = from;\n }\n toString() {\n return this.chunks.map(String).join('');\n }\n extend(tailChunk) {\n if (!String(tailChunk)) return;\n tailChunk = isString(tailChunk) ? new ContinuousTailDetails(String(tailChunk)) : tailChunk;\n const lastChunk = this.chunks[this.chunks.length - 1];\n const extendLast = lastChunk && (\n // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\n // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n let firstTailChunk;\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift(); // not possible to be `undefined` because length was checked above\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n }\n\n // if tail chunk still has value\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n appendTo(masked) {\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n const details = new ChangeDetails();\n for (let ci = 0; ci < this.chunks.length; ++ci) {\n const chunk = this.chunks[ci];\n const lastBlockIter = masked._mapPosToBlock(masked.displayValue.length);\n const stop = chunk.stop;\n let chunkBlock;\n if (stop != null && (\n // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n details.aggregate(masked._appendPlaceholder(stop));\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n details.aggregate(tailDetails);\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n get state() {\n return {\n chunks: this.chunks.map(c => c.state),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n }\n set state(state) {\n const {\n chunks,\n ...props\n } = state;\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails();\n chunk.state = cstate;\n return chunk;\n });\n }\n unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n let ci = 0;\n while (ci < this.chunks.length) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.unshift(chunkShiftPos);\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n shift() {\n if (!this.chunks.length) return '';\n let ci = this.chunks.length - 1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n}\n\nexport { ChunksTailDetails as default };\n","import { DIRECTION } from '../../core/utils.js';\n\nclass PatternCursor {\n constructor(masked, pos) {\n this.masked = masked;\n this._log = [];\n const {\n offset,\n index\n } = masked._mapPosToBlock(pos) || (pos < 0 ?\n // first\n {\n index: 0,\n offset: 0\n } :\n // last\n {\n index: this.masked._blocks.length,\n offset: 0\n });\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n get block() {\n return this.masked._blocks[this.index];\n }\n get pos() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n get state() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n }\n set state(s) {\n Object.assign(this, s);\n }\n pushState() {\n this._log.push(this.state);\n }\n popState() {\n const s = this._log.pop();\n if (s) this.state = s;\n return s;\n }\n bindBlock() {\n if (this.block) return;\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.displayValue.length; // TODO this is stupid type error, `block` depends on index that was changed above\n }\n }\n _pushLeft(fn) {\n this.pushState();\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) == null ? void 0 : _this$block.displayValue.length) || 0) {\n var _this$block;\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n _pushRight(fn) {\n this.pushState();\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n pushLeftBeforeFilled() {\n return this._pushLeft(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n pushLeftBeforeInput() {\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(() => {\n if (this.block.isFixed) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushLeftBeforeRequired() {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushRightBeforeFilled() {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n pushRightBeforeInput() {\n return this._pushRight(() => {\n if (this.block.isFixed) return;\n\n // const o = this.offset;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aaX_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n pushRightBeforeRequired() {\n return this._pushRight(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n // TODO check |[*]XX_\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n return true;\n });\n }\n}\n\nexport { PatternCursor as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport '../../core/holder.js';\n\nclass PatternFixedDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n get value() {\n return this._value;\n }\n get unmaskedValue() {\n return this.isUnmasking ? this.value : '';\n }\n get rawInputValue() {\n return this._isRawInput ? this.value : '';\n }\n get displayValue() {\n return this.value;\n }\n reset() {\n this._isRawInput = false;\n this._value = '';\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this._value.length;\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n return this._isRawInput ? toPos - fromPos : 0;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return Boolean(this._value);\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const appendEager = this.eager === true || this.eager === 'append';\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\n const details = new ChangeDetails({\n inserted: this.char,\n rawInserted: isResolved ? this.char : ''\n });\n this._value = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n extractTail() {\n return new ContinuousTailDetails('');\n }\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n append(str, flags, tail) {\n const details = this._appendChar(str[0], flags);\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n return details;\n }\n doCommit() {}\n get state() {\n return {\n _value: this._value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n this._isRawInput = Boolean(state._rawInputValue);\n }\n pad(flags) {\n return this._appendPlaceholder();\n }\n}\n\nexport { PatternFixedDefinition as default };\n","import createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nclass PatternInputDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n const {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager,\n ...maskOpts\n } = opts;\n this.masked = createMask(maskOpts);\n Object.assign(this, {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n });\n }\n reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n return new ChangeDetails();\n }\n get value() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n get unmaskedValue() {\n return this.masked.unmaskedValue;\n }\n get rawInputValue() {\n return this.masked.rawInputValue;\n }\n get displayValue() {\n return this.masked.value && this.displayChar || this.value;\n }\n get isComplete() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const state = this.masked.state;\n // simulate input\n let details = this.masked._appendChar(ch, this.currentMaskFlags(flags));\n if (details.inserted && this.doValidate(flags) === false) {\n details = new ChangeDetails();\n this.masked.state = state;\n }\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n append(str, flags, tail) {\n // TODO probably should be done via _appendChar\n return this.masked.append(str, this.currentMaskFlags(flags), tail);\n }\n _appendPlaceholder() {\n if (this.isFilled || this.isOptional) return new ChangeDetails();\n this.isFilled = true;\n return new ChangeDetails({\n inserted: this.placeholderChar\n });\n }\n _appendEager() {\n return new ChangeDetails();\n }\n extractTail(fromPos, toPos) {\n return this.masked.extractTail(fromPos, toPos);\n }\n appendTail(tail) {\n return this.masked.appendTail(tail);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.value.slice(fromPos, toPos).length;\n }\n doValidate(flags) {\n return this.masked.doValidate(this.currentMaskFlags(flags)) && (!this.parent || this.parent.doValidate(this.currentMaskFlags(flags)));\n }\n doCommit() {\n this.masked.doCommit();\n }\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue,\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n }\n set state(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta;\n return {\n ...flags,\n _beforeTailState: (flags == null || (_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.masked) || (flags == null ? void 0 : flags._beforeTailState)\n };\n }\n pad(flags) {\n return new ChangeDetails();\n }\n}\nPatternInputDefinition.DEFAULT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n\nexport { PatternInputDefinition as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\nclass MaskedRegExp extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const mask = opts.mask;\n if (mask) opts.validate = value => value.search(mask) >= 0;\n super._update(opts);\n }\n}\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport { DIRECTION } from '../core/utils.js';\nimport Masked from './base.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport PatternCursor from './pattern/cursor.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport PatternInputDefinition from './pattern/input-definition.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\n/** Pattern mask */\nclass MaskedPattern extends Masked {\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Single char for filled input */\n\n /** Show placeholder only when needed */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n super({\n ...MaskedPattern.DEFAULTS,\n ...opts,\n definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts == null ? void 0 : opts.definitions)\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n _rebuildMask() {\n const defs = this.definitions;\n this._blocks = [];\n this.exposeBlock = undefined;\n this._stops = [];\n this._maskedBlocks = {};\n const pattern = this.mask;\n if (!pattern || !defs) return;\n let unmaskingBlock = false;\n let optionalBlock = false;\n for (let i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n const p = pattern.slice(i);\n const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n const {\n expose,\n repeat,\n ...bOpts\n } = normalizeOpts(this.blocks[bName]); // TODO type Opts\n const blockOpts = {\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite,\n autofix: this.autofix,\n ...bOpts,\n repeat,\n parent: this\n };\n const maskedBlock = repeat != null ? new IMask.RepeatBlock(blockOpts /* TODO */) : createMask(blockOpts);\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n if (expose) this.exposeBlock = maskedBlock;\n\n // store block index\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n i += bName.length - 1;\n continue;\n }\n }\n let char = pattern[i];\n let isInput = (char in defs);\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n const def = isInput ? new PatternInputDefinition({\n isOptional: optionalBlock,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n ...normalizeOpts(defs[char]),\n parent: this\n }) : new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n this._blocks.push(def);\n }\n }\n get state() {\n return {\n ...super.state,\n _blocks: this._blocks.map(b => b.state)\n };\n }\n set state(state) {\n if (!state) {\n this.reset();\n return;\n }\n const {\n _blocks,\n ...maskedState\n } = state;\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n reset() {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n get isComplete() {\n return this.exposeBlock ? this.exposeBlock.isComplete : this._blocks.every(b => b.isComplete);\n }\n get isFilled() {\n return this._blocks.every(b => b.isFilled);\n }\n get isFixed() {\n return this._blocks.every(b => b.isFixed);\n }\n get isOptional() {\n return this._blocks.every(b => b.isOptional);\n }\n doCommit() {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n get unmaskedValue() {\n return this.exposeBlock ? this.exposeBlock.unmaskedValue : this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.unmaskedValue = unmaskedValue;\n this.appendTail(tail);\n this.doCommit();\n } else super.unmaskedValue = unmaskedValue;\n }\n get value() {\n return this.exposeBlock ? this.exposeBlock.value :\n // TODO return _value when not in change?\n this._blocks.reduce((str, b) => str += b.value, '');\n }\n set value(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.value = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.value = value;\n }\n get typedValue() {\n return this.exposeBlock ? this.exposeBlock.typedValue : super.typedValue;\n }\n set typedValue(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.typedValue = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.typedValue = value;\n }\n get displayValue() {\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\n }\n appendTail(tail) {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n _appendEager() {\n var _this$_mapPosToBlock;\n const details = new ChangeDetails();\n let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index;\n if (startBlockIndex == null) return details;\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) break;\n details.aggregate(d);\n }\n return details;\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const blockIter = this._mapPosToBlock(this.displayValue.length);\n const details = new ChangeDetails();\n if (!blockIter) return details;\n for (let bi = blockIter.index, block; block = this._blocks[bi]; ++bi) {\n var _flags$_beforeTailSta;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n details.aggregate(blockDetails);\n if (blockDetails.consumed) break; // go next char\n }\n return details;\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n return chunkTail;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n if (fromPos === toPos) return '';\n let input = '';\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n return input;\n }\n _findStopBefore(blockIndex) {\n let stopBefore;\n for (let si = 0; si < this._stops.length; ++si) {\n const stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n _appendPlaceholder(toBlockIndex) {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n const startBlockIter = this._mapPosToBlock(this.displayValue.length);\n if (!startBlockIter) return details;\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {\n if (!b.lazy || toBlockIndex != null) {\n var _blocks2;\n details.aggregate(b._appendPlaceholder((_blocks2 = b._blocks) == null ? void 0 : _blocks2.length));\n }\n });\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock(pos) {\n let accVal = '';\n for (let bi = 0; bi < this._blocks.length; ++bi) {\n const block = this._blocks[bi];\n const blockStartPos = accVal.length;\n accVal += block.displayValue;\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.displayValue.length, 0);\n }\n _forEachBlocksInRange(fromPos, toPos, fn) {\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const fromBlockIter = this._mapPosToBlock(fromPos);\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].displayValue.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].displayValue.length);\n }\n\n // process last block\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.displayValue.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return 0;\n }\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.displayValue.length;\n\n // backward flow\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n let total = 0;\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n total += b.totalInputPositions(bFromPos, bToPos);\n });\n return total;\n }\n\n /** Get block by name */\n maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks(name) {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n pad(flags) {\n const details = new ChangeDetails();\n this._forEachBlocksInRange(0, this.displayValue.length, b => details.aggregate(b.pad(flags)));\n return details;\n }\n}\nMaskedPattern.DEFAULTS = {\n ...Masked.DEFAULTS,\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport MaskedPattern from './pattern.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which accepts ranges */\nclass MaskedRange extends MaskedPattern {\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n\n /** Min bound */\n\n /** Max bound */\n\n get _matchFrom() {\n return this.maxLength - String(this.from).length;\n }\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n to = this.to || 0,\n from = this.from || 0,\n maxLength = this.maxLength || 0,\n autofix = this.autofix,\n ...patternOpts\n } = opts;\n this.to = to;\n this.from = from;\n this.maxLength = Math.max(String(to).length, maxLength);\n this.autofix = autofix;\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n let sameCharsCount = 0;\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount;\n patternOpts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(this.maxLength - sameCharsCount);\n super._update(patternOpts);\n }\n get isComplete() {\n return super.isComplete && Boolean(this.value);\n }\n boundaries(str) {\n let minstr = '';\n let maxstr = '';\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/) || [];\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let details;\n [ch, details] = super.doPrepareChar(ch.replace(/\\D/g, ''), flags);\n if (!ch) details.skip = !this.isComplete;\n return [ch, details];\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (!this.autofix || this.value.length + 1 > this.maxLength) return super._appendCharRaw(ch, flags);\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n const [minstr, maxstr] = this.boundaries(this.value + ch);\n if (Number(maxstr) < this.from) return super._appendCharRaw(fromStr[this.value.length], flags);\n if (Number(minstr) > this.to) {\n if (!flags.tail && this.autofix === 'pad' && this.value.length + 1 < this.maxLength) {\n return super._appendCharRaw(fromStr[this.value.length], flags).aggregate(this._appendCharRaw(ch, flags));\n }\n return super._appendCharRaw(toStr[this.value.length], flags);\n }\n return super._appendCharRaw(ch, flags);\n }\n doValidate(flags) {\n const str = this.value;\n const firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n const [minstr, maxstr] = this.boundaries(str);\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && super.doValidate(flags);\n }\n pad(flags) {\n const details = new ChangeDetails();\n if (this.value.length === this.maxLength) return details;\n const value = this.value;\n const padLength = this.maxLength - this.value.length;\n if (padLength) {\n this.reset();\n for (let i = 0; i < padLength; ++i) {\n details.aggregate(super._appendCharRaw('0', flags));\n }\n\n // append tail\n value.split('').forEach(ch => this._appendCharRaw(ch));\n }\n return details;\n }\n}\nIMask.MaskedRange = MaskedRange;\n\nexport { MaskedRange as default };\n","import MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\nimport { isString } from '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\nconst DefaultPattern = 'd{.}`m{.}`Y';\n\n// Make format and parse required when pattern is provided\n\n/** Date mask */\nclass MaskedDate extends MaskedPattern {\n static extractPatternOptions(opts) {\n const {\n mask,\n pattern,\n ...patternOpts\n } = opts;\n return {\n ...patternOpts,\n mask: isString(mask) ? mask : pattern\n };\n }\n\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super(MaskedDate.extractPatternOptions({\n ...MaskedDate.DEFAULTS,\n ...opts\n }));\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n mask,\n pattern,\n blocks,\n ...patternOpts\n } = {\n ...MaskedDate.DEFAULTS,\n ...opts\n };\n const patternBlocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS());\n // adjust year block\n if (opts.min) patternBlocks.Y.from = opts.min.getFullYear();\n if (opts.max) patternBlocks.Y.to = opts.max.getFullYear();\n if (opts.min && opts.max && patternBlocks.Y.from === patternBlocks.Y.to) {\n patternBlocks.m.from = opts.min.getMonth() + 1;\n patternBlocks.m.to = opts.max.getMonth() + 1;\n if (patternBlocks.m.from === patternBlocks.m.to) {\n patternBlocks.d.from = opts.min.getDate();\n patternBlocks.d.to = opts.max.getDate();\n }\n }\n Object.assign(patternBlocks, this.blocks, blocks);\n super._update({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern,\n blocks: patternBlocks\n });\n }\n doValidate(flags) {\n const date = this.date;\n return super.doValidate(flags) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n\n /** Checks if date is exists */\n isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n\n /** Parsed Date */\n get date() {\n return this.typedValue;\n }\n set date(date) {\n this.typedValue = date;\n }\n get typedValue() {\n return this.isComplete ? super.typedValue : null;\n }\n set typedValue(value) {\n super.typedValue = value;\n }\n maskEquals(mask) {\n return mask === Date || super.maskEquals(mask);\n }\n optionsIsChanged(opts) {\n return super.optionsIsChanged(MaskedDate.extractPatternOptions(opts));\n }\n}\nMaskedDate.GET_DEFAULT_BLOCKS = () => ({\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n});\nMaskedDate.DEFAULTS = {\n ...MaskedPattern.DEFAULTS,\n mask: Date,\n pattern: DefaultPattern,\n format: (date, masked) => {\n if (!date) return '';\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: (str, masked) => {\n const [day, month, year] = str.split('.').map(Number);\n return new Date(year, month - 1, day);\n }\n};\nIMask.MaskedDate = MaskedDate;\n\nexport { MaskedDate as default };\n","import { DIRECTION, objectIncludes } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/** Dynamic mask for choosing appropriate mask in run-time */\nclass MaskedDynamic extends Masked {\n constructor(opts) {\n super({\n ...MaskedDynamic.DEFAULTS,\n ...opts\n });\n this.currentMask = undefined;\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n if ('mask' in opts) {\n this.exposeMask = undefined;\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(m => {\n const {\n expose,\n ...maskOpts\n } = normalizeOpts(m);\n const masked = createMask({\n overwrite: this._overwrite,\n eager: this._eager,\n skipInvalid: this._skipInvalid,\n ...maskOpts\n });\n if (expose) this.exposeMask = masked;\n return masked;\n }) : [];\n\n // this.currentMask = this.doDispatch(''); // probably not needed but lets see\n }\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = this._applyDispatch(ch, flags);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags)));\n }\n return details;\n }\n _applyDispatch(appended, flags, tail) {\n if (appended === void 0) {\n appended = '';\n }\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n const inputValue = this.rawInputValue;\n const insertValue = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._rawInputValue : inputValue;\n const tailValue = inputValue.slice(insertValue.length);\n const prevMask = this.currentMask;\n const details = new ChangeDetails();\n const prevMaskState = prevMask == null ? void 0 : prevMask.state;\n\n // clone flags to prevent overwriting `_beforeTailState`\n this.currentMask = this.doDispatch(appended, {\n ...flags\n }, tail);\n\n // restore state after dispatch\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n if (insertValue) {\n this.currentMask.append(insertValue, {\n raw: true\n });\n details.tailShift = this.currentMask.value.length - prevValueBeforeTail.length;\n }\n if (tailValue) {\n details.tailShift += this.currentMask.append(tailValue, {\n raw: true,\n tail: true\n }).tailShift;\n }\n } else if (prevMaskState) {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n return details;\n }\n _appendPlaceholder() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n return details;\n }\n _appendEager() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendEager());\n }\n return details;\n }\n appendTail(tail) {\n const details = new ChangeDetails();\n if (tail) details.aggregate(this._applyDispatch('', {}, tail));\n return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail));\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n return {\n ...flags,\n _beforeTailState: ((_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.currentMaskRef) === this.currentMask && ((_flags$_beforeTailSta2 = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta2.currentMask) || flags._beforeTailState\n };\n }\n doDispatch(appended, flags, tail) {\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n return this.dispatch(appended, this, flags, tail);\n }\n doValidate(flags) {\n return super.doValidate(flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags)));\n }\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepare(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepare(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepareChar(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepareChar(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n reset() {\n var _this$currentMask;\n (_this$currentMask = this.currentMask) == null || _this$currentMask.reset();\n this.compiledMasks.forEach(m => m.reset());\n }\n get value() {\n return this.exposeMask ? this.exposeMask.value : this.currentMask ? this.currentMask.value : '';\n }\n set value(value) {\n if (this.exposeMask) {\n this.exposeMask.value = value;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.value = value;\n }\n get unmaskedValue() {\n return this.exposeMask ? this.exposeMask.unmaskedValue : this.currentMask ? this.currentMask.unmaskedValue : '';\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeMask) {\n this.exposeMask.unmaskedValue = unmaskedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.exposeMask ? this.exposeMask.typedValue : this.currentMask ? this.currentMask.typedValue : '';\n }\n set typedValue(typedValue) {\n if (this.exposeMask) {\n this.exposeMask.typedValue = typedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n return;\n }\n let unmaskedValue = String(typedValue);\n\n // double check it\n if (this.currentMask) {\n this.currentMask.typedValue = typedValue;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n this.unmaskedValue = unmaskedValue;\n }\n get displayValue() {\n return this.currentMask ? this.currentMask.displayValue : '';\n }\n get isComplete() {\n var _this$currentMask2;\n return Boolean((_this$currentMask2 = this.currentMask) == null ? void 0 : _this$currentMask2.isComplete);\n }\n get isFilled() {\n var _this$currentMask3;\n return Boolean((_this$currentMask3 = this.currentMask) == null ? void 0 : _this$currentMask3.isFilled);\n }\n remove(fromPos, toPos) {\n const details = new ChangeDetails();\n if (this.currentMask) {\n details.aggregate(this.currentMask.remove(fromPos, toPos))\n // update with dispatch\n .aggregate(this._applyDispatch());\n }\n return details;\n }\n get state() {\n var _this$currentMask4;\n return {\n ...super.state,\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(m => m.state),\n currentMaskRef: this.currentMask,\n currentMask: (_this$currentMask4 = this.currentMask) == null ? void 0 : _this$currentMask4.state\n };\n }\n set state(state) {\n const {\n compiledMasks,\n currentMaskRef,\n currentMask,\n ...maskedState\n } = state;\n if (compiledMasks) this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]);\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n super.state = maskedState;\n }\n extractInput(fromPos, toPos, flags) {\n return this.currentMask ? this.currentMask.extractInput(fromPos, toPos, flags) : '';\n }\n extractTail(fromPos, toPos) {\n return this.currentMask ? this.currentMask.extractTail(fromPos, toPos) : super.extractTail(fromPos, toPos);\n }\n doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n super.doCommit();\n }\n nearestInputPos(cursorPos, direction) {\n return this.currentMask ? this.currentMask.nearestInputPos(cursorPos, direction) : super.nearestInputPos(cursorPos, direction);\n }\n get overwrite() {\n return this.currentMask ? this.currentMask.overwrite : this._overwrite;\n }\n set overwrite(overwrite) {\n this._overwrite = overwrite;\n }\n get eager() {\n return this.currentMask ? this.currentMask.eager : this._eager;\n }\n set eager(eager) {\n this._eager = eager;\n }\n get skipInvalid() {\n return this.currentMask ? this.currentMask.skipInvalid : this._skipInvalid;\n }\n set skipInvalid(skipInvalid) {\n this._skipInvalid = skipInvalid;\n }\n get autofix() {\n return this.currentMask ? this.currentMask.autofix : this._autofix;\n }\n set autofix(autofix) {\n this._autofix = autofix;\n }\n maskEquals(mask) {\n return Array.isArray(mask) ? this.compiledMasks.every((m, mi) => {\n if (!mask[mi]) return;\n const {\n mask: oldMask,\n ...restOpts\n } = mask[mi];\n return objectIncludes(m, restOpts) && m.maskEquals(oldMask);\n }) : super.maskEquals(mask);\n }\n typedValueEquals(value) {\n var _this$currentMask5;\n return Boolean((_this$currentMask5 = this.currentMask) == null ? void 0 : _this$currentMask5.typedValueEquals(value));\n }\n}\n/** Currently chosen mask */\n/** Currently chosen mask */\n/** Compliled {@link Masked} options */\n/** Chooses {@link Masked} depending on input value */\nMaskedDynamic.DEFAULTS = {\n ...Masked.DEFAULTS,\n dispatch: (appended, masked, flags, tail) => {\n if (!masked.compiledMasks.length) return;\n const inputValue = masked.rawInputValue;\n\n // simulate input\n const inputs = masked.compiledMasks.map((m, index) => {\n const isCurrent = masked.currentMask === m;\n const startInputPos = isCurrent ? m.displayValue.length : m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT);\n if (m.rawInputValue !== inputValue) {\n m.reset();\n m.append(inputValue, {\n raw: true\n });\n } else if (!isCurrent) {\n m.remove(startInputPos);\n }\n m.append(appended, masked.currentMaskFlags(flags));\n m.appendTail(tail);\n return {\n index,\n weight: m.rawInputValue.length,\n totalInputPositions: m.totalInputPositions(0, Math.max(startInputPos, m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT)))\n };\n });\n\n // pop masks with longer values first\n inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions);\n return masked.compiledMasks[inputs[0].index];\n }\n};\nIMask.MaskedDynamic = MaskedDynamic;\n\nexport { MaskedDynamic as default };\n","import MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport ChangeDetails from '../core/change-details.js';\nimport { DIRECTION } from '../core/utils.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport './base.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which validates enum values */\nclass MaskedEnum extends MaskedPattern {\n constructor(opts) {\n super({\n ...MaskedEnum.DEFAULTS,\n ...opts\n }); // mask will be created in _update\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n enum: enum_,\n ...eopts\n } = opts;\n if (enum_) {\n const lengths = enum_.map(e => e.length);\n const requiredLength = Math.min(...lengths);\n const optionalLength = Math.max(...lengths) - requiredLength;\n eopts.mask = '*'.repeat(requiredLength);\n if (optionalLength) eopts.mask += '[' + '*'.repeat(optionalLength) + ']';\n this.enum = enum_;\n }\n super._update(eopts);\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const matchFrom = Math.min(this.nearestInputPos(0, DIRECTION.FORCE_RIGHT), this.value.length);\n const matches = this.enum.filter(e => this.matchValue(e, this.unmaskedValue + ch, matchFrom));\n if (matches.length) {\n if (matches.length === 1) {\n this._forEachBlocksInRange(0, this.value.length, (b, bi) => {\n const mch = matches[0][bi];\n if (bi >= this.value.length || mch === b.value) return;\n b.reset();\n b._appendChar(mch, flags);\n });\n }\n const d = super._appendCharRaw(matches[0][this.value.length], flags);\n if (matches.length === 1) {\n matches[0].slice(this.unmaskedValue.length).split('').forEach(mch => d.aggregate(super._appendCharRaw(mch)));\n }\n return d;\n }\n return new ChangeDetails({\n skip: !this.isComplete\n });\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n // just drop tail\n return new ContinuousTailDetails('', fromPos);\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (fromPos === toPos) return new ChangeDetails();\n const matchFrom = Math.min(super.nearestInputPos(0, DIRECTION.FORCE_RIGHT), this.value.length);\n let pos;\n for (pos = fromPos; pos >= 0; --pos) {\n const matches = this.enum.filter(e => this.matchValue(e, this.value.slice(matchFrom, pos), matchFrom));\n if (matches.length > 1) break;\n }\n const details = super.remove(pos, toPos);\n details.tailShift += pos - fromPos;\n return details;\n }\n get isComplete() {\n return this.enum.indexOf(this.value) >= 0;\n }\n}\n/** Match enum value */\nMaskedEnum.DEFAULTS = {\n ...MaskedPattern.DEFAULTS,\n matchValue: (estr, istr, matchFrom) => estr.indexOf(istr, matchFrom) === matchFrom\n};\nIMask.MaskedEnum = MaskedEnum;\n\nexport { MaskedEnum as default };\n","import { escapeRegExp, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\nvar _MaskedNumber;\n/** Number mask */\nclass MaskedNumber extends Masked {\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super({\n ...MaskedNumber.DEFAULTS,\n ...opts\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n this._updateRegExps();\n }\n _updateRegExps() {\n const start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n const mid = '\\\\d*';\n const end = (this.scale ? \"(\" + escapeRegExp(this.radix) + \"\\\\d{0,\" + this.scale + \"})?\" : '') + '$';\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp(\"[\" + this.mapToRadix.map(escapeRegExp).join('') + \"]\", 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n const parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const [prepCh, details] = super.doPrepareChar(this._removeThousandsSeparators(this.scale && this.mapToRadix.length && (\n /*\n radix should be mapped when\n 1) input is done from keyboard = flags.input && flags.raw\n 2) unmasked value is set = !flags.input && !flags.raw\n and should not be mapped when\n 1) value is set = flags.input && !flags.raw\n 2) raw value is set = !flags.input && flags.raw\n */\n flags.input && flags.raw || !flags.input && !flags.raw) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch), flags);\n if (ch && !prepCh) details.skip = true;\n if (prepCh && !this.allowPositive && !this.value && prepCh !== '-') details.aggregate(this._appendChar('-'));\n return [prepCh, details];\n }\n _separatorsCount(to, extendOnSeparators) {\n if (extendOnSeparators === void 0) {\n extendOnSeparators = false;\n }\n let count = 0;\n for (let pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n return count;\n }\n _separatorsCountFromSlice(slice) {\n if (slice === void 0) {\n slice = this._value;\n }\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags));\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n this._value = this._removeThousandsSeparators(this.value);\n const oldValue = this._value;\n this._value += ch;\n const num = this.number;\n let accepted = !isNaN(num);\n let skip = false;\n if (accepted) {\n let fixedNum;\n if (this.min != null && this.min < 0 && this.number < this.min) fixedNum = this.min;\n if (this.max != null && this.max > 0 && this.number > this.max) fixedNum = this.max;\n if (fixedNum != null) {\n if (this.autofix) {\n this._value = this.format(fixedNum, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n skip || (skip = oldValue === this._value && !flags.tail); // if not changed on tail it's still ok to proceed\n } else {\n accepted = false;\n }\n }\n accepted && (accepted = Boolean(this._value.match(this._numberRegExp)));\n }\n let appendDetails;\n if (!accepted) {\n this._value = oldValue;\n appendDetails = new ChangeDetails();\n } else {\n appendDetails = new ChangeDetails({\n inserted: this._value.slice(oldValue.length),\n rawInserted: skip ? '' : ch,\n skip\n });\n }\n this._value = this._insertThousandsSeparators(this._value);\n const beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n return appendDetails;\n }\n _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n const searchFrom = pos - this.thousandsSeparator.length + 1;\n const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n return -1;\n }\n _adjustRangeWithSeparators(from, to) {\n const separatorAroundFromPos = this._findSeparatorAround(from);\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n const separatorAroundToPos = this._findSeparatorAround(to);\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n const valueBeforePos = this.value.slice(0, fromPos);\n const valueAfterPos = this.value.slice(toPos);\n const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n if (separatorAtLeftPos >= 0) {\n const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n break;\n }\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n const separatorAtRightPos = this._findSeparatorAround(cursorPos);\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n return cursorPos;\n }\n doCommit() {\n if (this.value) {\n const number = this.number;\n let validnum = number;\n\n // check bounds\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = this.format(validnum, this);\n let formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n super.doCommit();\n }\n _normalizeZeros(value) {\n const parts = this._removeThousandsSeparators(value).split(this.radix);\n\n // remove leading zeros\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\n // add leading zero\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n _padFractionalZeros(value) {\n if (!value) return value;\n const parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n doSkipInvalid(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (ch === this.radix || ch === MaskedNumber.UNMASKED_RADIX || this.mapToRadix.includes(ch));\n return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional;\n }\n get unmaskedValue() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, MaskedNumber.UNMASKED_RADIX);\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.parse(this.unmaskedValue, this);\n }\n set typedValue(n) {\n this.rawInputValue = this.format(n, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n }\n\n /** Parsed Number */\n get number() {\n return this.typedValue;\n }\n set number(number) {\n this.typedValue = number;\n }\n get allowNegative() {\n return this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n get allowPositive() {\n return this.min != null && this.min > 0 || this.max != null && this.max > 0;\n }\n typedValueEquals(value) {\n // handle 0 -> '' case (typed = 0 even if value = '')\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\n return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');\n }\n}\n_MaskedNumber = MaskedNumber;\nMaskedNumber.UNMASKED_RADIX = '.';\nMaskedNumber.EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0];\nMaskedNumber.DEFAULTS = {\n ...Masked.DEFAULTS,\n mask: Number,\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: [_MaskedNumber.UNMASKED_RADIX],\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n scale: 2,\n normalizeZeros: true,\n padFractionalZeros: false,\n parse: Number,\n format: n => n.toLocaleString('en-US', {\n useGrouping: false,\n maximumFractionDigits: 20\n })\n};\nIMask.MaskedNumber = MaskedNumber;\n\nexport { MaskedNumber as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by custom Function */\nclass MaskedFunction extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update({\n ...opts,\n validate: opts.mask\n });\n }\n}\nIMask.MaskedFunction = MaskedFunction;\n\nexport { MaskedFunction as default };\n","import createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\n\n/** Mask pipe source and destination types */\nconst PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue'\n};\n/** Creates new pipe function depending on mask type, source and destination options */\nfunction createPipe(arg, from, to) {\n if (from === void 0) {\n from = PIPE_TYPE.MASKED;\n }\n if (to === void 0) {\n to = PIPE_TYPE.MASKED;\n }\n const masked = createMask(arg);\n return value => masked.runIsolated(m => {\n m[from] = value;\n return m[to];\n });\n}\n\n/** Pipes value through mask depending on mask type, source and destination options */\nfunction pipe(value, mask, from, to) {\n return createPipe(mask, from, to)(value);\n}\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n\nexport { PIPE_TYPE, createPipe, pipe };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport MaskedPattern from './pattern.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern mask */\nclass RepeatBlock extends MaskedPattern {\n get repeatFrom() {\n var _ref;\n return (_ref = Array.isArray(this.repeat) ? this.repeat[0] : this.repeat === Infinity ? 0 : this.repeat) != null ? _ref : 0;\n }\n get repeatTo() {\n var _ref2;\n return (_ref2 = Array.isArray(this.repeat) ? this.repeat[1] : this.repeat) != null ? _ref2 : Infinity;\n }\n constructor(opts) {\n super(opts);\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n var _ref3, _ref4, _this$_blocks;\n const {\n repeat,\n ...blockOpts\n } = normalizeOpts(opts); // TODO type\n this._blockOpts = Object.assign({}, this._blockOpts, blockOpts);\n const block = createMask(this._blockOpts);\n this.repeat = (_ref3 = (_ref4 = repeat != null ? repeat : block.repeat) != null ? _ref4 : this.repeat) != null ? _ref3 : Infinity; // TODO type\n\n super._update({\n mask: 'm'.repeat(Math.max(this.repeatTo === Infinity && ((_this$_blocks = this._blocks) == null ? void 0 : _this$_blocks.length) || 0, this.repeatFrom)),\n blocks: {\n m: block\n },\n eager: block.eager,\n overwrite: block.overwrite,\n skipInvalid: block.skipInvalid,\n lazy: block.lazy,\n placeholderChar: block.placeholderChar,\n displayChar: block.displayChar\n });\n }\n _allocateBlock(bi) {\n if (bi < this._blocks.length) return this._blocks[bi];\n if (this.repeatTo === Infinity || this._blocks.length < this.repeatTo) {\n this._blocks.push(createMask(this._blockOpts));\n this.mask += 'm';\n return this._blocks[this._blocks.length - 1];\n }\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = new ChangeDetails();\n for (let bi = (_this$_mapPosToBlock$ = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index) != null ? _this$_mapPosToBlock$ : Math.max(this._blocks.length - 1, 0), block, allocated;\n // try to get a block or\n // try to allocate a new block if not allocated already\n block = (_this$_blocks$bi = this._blocks[bi]) != null ? _this$_blocks$bi : allocated = !allocated && this._allocateBlock(bi); ++bi) {\n var _this$_mapPosToBlock$, _this$_mapPosToBlock, _this$_blocks$bi, _flags$_beforeTailSta;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n if (blockDetails.skip && allocated) {\n // remove the last allocated block and break\n this._blocks.pop();\n this.mask = this.mask.slice(1);\n break;\n }\n details.aggregate(blockDetails);\n if (blockDetails.consumed) break; // go next char\n }\n return details;\n }\n _trimEmptyTail(fromPos, toPos) {\n var _this$_mapPosToBlock2, _this$_mapPosToBlock3;\n if (fromPos === void 0) {\n fromPos = 0;\n }\n const firstBlockIndex = Math.max(((_this$_mapPosToBlock2 = this._mapPosToBlock(fromPos)) == null ? void 0 : _this$_mapPosToBlock2.index) || 0, this.repeatFrom, 0);\n let lastBlockIndex;\n if (toPos != null) lastBlockIndex = (_this$_mapPosToBlock3 = this._mapPosToBlock(toPos)) == null ? void 0 : _this$_mapPosToBlock3.index;\n if (lastBlockIndex == null) lastBlockIndex = this._blocks.length - 1;\n let removeCount = 0;\n for (let blockIndex = lastBlockIndex; firstBlockIndex <= blockIndex; --blockIndex, ++removeCount) {\n if (this._blocks[blockIndex].unmaskedValue) break;\n }\n if (removeCount) {\n this._blocks.splice(lastBlockIndex - removeCount + 1, removeCount);\n this.mask = this.mask.slice(removeCount);\n }\n }\n reset() {\n super.reset();\n this._trimEmptyTail();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._trimEmptyTail(fromPos, toPos);\n return removeDetails;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos == null && this.repeatTo === Infinity) return Infinity;\n return super.totalInputPositions(fromPos, toPos);\n }\n get state() {\n return super.state;\n }\n set state(state) {\n this._blocks.length = state._blocks.length;\n this.mask = this.mask.slice(0, this._blocks.length);\n super.state = state;\n }\n}\nIMask.RepeatBlock = RepeatBlock;\n\nexport { RepeatBlock as default };\n","export { default as InputMask } from './controls/input.js';\nimport IMask from './core/holder.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { default as HTMLInputMaskElement } from './controls/html-input-mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as ChangeDetails } from './core/change-details.js';\nexport { DIRECTION, forceDirection } from './core/utils.js';\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as createMask, normalizeOpts } from './masked/factory.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as ChunksTailDetails } from './masked/pattern/chunk-tail-details.js';\nexport { default as PatternFixedDefinition } from './masked/pattern/fixed-definition.js';\nexport { default as PatternInputDefinition } from './masked/pattern/input-definition.js';\nexport { PIPE_TYPE, createPipe, pipe } from './masked/pipe.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nexport { default as RepeatBlock } from './masked/repeat.js';\nimport './core/action-details.js';\nimport './controls/input-history.js';\nimport './core/continuous-tail-details.js';\nimport './masked/pattern/cursor.js';\n\ntry {\n globalThis.IMask = IMask;\n} catch {}\n\nexport { IMask as default };\n","import vanillaToast from \"vanilla-toast\";\r\nimport axios from \"axios\";\r\nimport IMask from \"imask\";\r\n\r\nconst form = () => {\r\n // const citizenRequest = 'https://localhost:44328/api/v1/flowcrm/find-out-cost'; // debug\r\n const citizenRequest = \"https://2024.api.tgu-dpo.ru/api/v1/flowcrm/find-out-cost\";\r\n\r\n /* Инициализация полей телефона */\r\n (() => {\r\n const phone_consultation = document.getElementById(\"Phone-consultation\"),\r\n phone_free = document.getElementById(\"Phone-free\"),\r\n phone_cost = document.getElementById(\"Phone-cost\");\r\n\r\n if (phone_consultation) {\r\n new IMask(phone_consultation, {\r\n mask: \"+{0} (000) 000-00-00\",\r\n });\r\n }\r\n\r\n if (phone_free) {\r\n new IMask(phone_free, {\r\n mask: \"+{0} (000) 000-00-00\",\r\n });\r\n }\r\n\r\n if (phone_cost) {\r\n new IMask(phone_cost, {\r\n mask: \"+{0} (000) 000-00-00\",\r\n });\r\n }\r\n })();\r\n\r\n /* Блокировка кнопки отправки */\r\n (() => {\r\n function setFormCheckbox(checkbox, btn) {\r\n try {\r\n checkbox.addEventListener(\"change\", function () {\r\n if (checkbox.checked) {\r\n btn.removeAttribute(\"disabled\");\r\n } else {\r\n btn.setAttribute(\"disabled\", \"disabled\");\r\n }\r\n });\r\n } catch (e) {}\r\n }\r\n \r\n setFormCheckbox(\r\n document.querySelector(\"#form-check\"),\r\n document.querySelector(\"#form-check-button\")\r\n );\r\n\r\n setFormCheckbox(\r\n document.querySelector(\"#form-check-consultation\"),\r\n document.querySelector(\"#form-check-button-consultation\")\r\n );\r\n\r\n setFormCheckbox(\r\n document.querySelector(\"#form-check-free\"),\r\n document.querySelector(\"#form-check-button-free\")\r\n );\r\n\r\n setFormCheckbox(\r\n document.querySelector(\"#form-check-cost\"),\r\n document.querySelector(\"#form-check-button-cost\")\r\n );\r\n })();\r\n\r\n /* Валидаторы */ \r\n const validators = {\r\n requried: function (value) {\r\n if (!value || value.length === 0) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n },\r\n email: function (value) {\r\n if (/.+@.+\\..+/.test(value)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n },\r\n phone: function (value) {\r\n if (value.length === 18) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n },\r\n };\r\n\r\n /* Удаление ошибок валидации */\r\n function deleteErrors(form) {\r\n form.querySelectorAll(\".form-invalid\").forEach(function (el) {\r\n el.classList.remove(\"form-invalid\");\r\n });\r\n }\r\n\r\n /* Валидация формы */\r\n function validate(form) {\r\n let result = true;\r\n\r\n Array.from(form.querySelectorAll(\".form__field\")).forEach(function (formField) {\r\n let error = {},\r\n control = formField.querySelector(\"input, textarea\");\r\n\r\n if (formField.querySelector(\".form-required\")) {\r\n if (!validators.requried(control.value, error)) {\r\n control.classList.add(\"form-invalid\");\r\n result = false;\r\n return;\r\n }\r\n }\r\n\r\n if (control.type === \"email\") {\r\n if (!validators.email(control.value, error)) {\r\n control.classList.add(\"form-invalid\");\r\n result = false;\r\n }\r\n }\r\n\r\n if (control.type === \"tel\") {\r\n if (!validators.phone(control.value, error)) {\r\n control.classList.add(\"form-invalid\");\r\n result = false;\r\n }\r\n }\r\n });\r\n \r\n let invalidField = form.querySelector(\".form-invalid\");\r\n if (invalidField) {\r\n invalidField.scrollIntoView({\r\n behavior: \"smooth\",\r\n block: \"center\",\r\n });\r\n }\r\n \r\n return result;\r\n }\r\n\r\n /* Отправка формы */\r\n function send(form, e) {\r\n let sendBtn = form.querySelector('button[type=\"submit\"], input[type=\"submit\"]');\r\n e.preventDefault();\r\n deleteErrors(form);\r\n\r\n let data = {};\r\n\r\n if (!validate(form)) {\r\n return;\r\n }\r\n\r\n sendBtn.disabled = true;\r\n\r\n Array.from(new FormData(form)).forEach(function (formElement) {\r\n let key = formElement[0],\r\n value = formElement[1];\r\n \r\n data[key] = value;\r\n });\r\n \r\n axios.post(citizenRequest, data)\r\n .then(function () {\r\n sendBtn.disabled = false;\r\n successModal();\r\n form.reset();\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n sendBtn.disabled = false;\r\n vanillaToast.error(\r\n \"Пожалуйста, проверьте ваше соединение с сетью или повторите попытку позже\",\r\n {duration: 3000, fadeDuration: 500}\r\n );\r\n });\r\n }\r\n \r\n /* Установка форм */\r\n function setForm(selector) {\r\n let form = document.querySelector(selector);\r\n \r\n if (!form) {\r\n return;\r\n }\r\n\r\n form.addEventListener(\"submit\", function (e) {\r\n send(form, e);\r\n });\r\n }\r\n\r\n /* Модальное окно после отправки формы */\r\n function successModal() {\r\n let btn = document.querySelector(\".success__modal-open\");\r\n\r\n if (!btn) {\r\n btn = document.createElement(\"button\");\r\n btn.classList.add(\"success__modal-open\");\r\n btn.setAttribute(\"data-modal-id\", \"success\");\r\n btn.setAttribute(\"data-modal-close\", \"\");\r\n btn.setAttribute(\"data-modal-open\", \"\");\r\n btn.style.display = \"none\";\r\n\r\n document.body.append(btn);\r\n }\r\n\r\n btn.click();\r\n }\r\n\r\n /* Вызов функций */\r\n setForm(\"#form-main\");\r\n setForm(\"#form-consultation\");\r\n setForm(\"#form-free\");\r\n setForm(\"#form-cost\");\r\n}\r\n\r\nexport default form;\r\n","const scroll = () => {\r\n const smoothLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n \r\n for (let smoothLink of smoothLinks) {\r\n smoothLink.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n const id = smoothLink.getAttribute('href');\r\n let elementPosition = document.querySelector(id).getBoundingClientRect().top;\r\n\r\n window.scrollBy({\r\n top: elementPosition - 120,\r\n behavior: \"smooth\" \r\n });\r\n });\r\n };\r\n}\r\n\r\nexport default scroll;\r\n","export class Modal {\r\n constructor() {\r\n this._modal = document.querySelector('.custom-modal');\r\n this._modal_inset = null;\r\n this._modal_content = null;\r\n this._documentClickHandler = this._documentClickHandler.bind(this);\r\n this.body = document.body;\r\n this._init();\r\n }\r\n\r\n _init() {\r\n this.createModal();\r\n document.addEventListener('click', this._documentClickHandler);\r\n }\r\n\r\n _documentClickHandler(evt) {\r\n const target = evt.target;\r\n\r\n if (target.closest('[data-modal-close]') && target.closest('[data-modal-open]')) {\r\n this.closeModal();\r\n setTimeout(() => {\r\n this._modal_inset.innerHTML = '';\r\n this.openModal(target);\r\n }, 50);\r\n\r\n return;\r\n }\r\n\r\n if (target.closest('[data-modal-close]')) {\r\n this.closeModal();\r\n\r\n return;\r\n } \r\n\r\n if (target.closest('[data-modal-open]')) {\r\n evt.preventDefault();\r\n setTimeout(() => {\r\n this._modal_inset.innerHTML = '';\r\n this.openModal(target);\r\n }, 50);\r\n\r\n return;\r\n }\r\n }\r\n\r\n openModal(element) {\r\n const attr = element.closest('[data-modal-open]').getAttribute(\"data-modal-id\");\r\n this._modal_content = document.getElementById(attr);\r\n this._modal_inset.append(this._modal_content);\r\n this.modal.classList.add('active');\r\n this.body.classList.add('scroll-lock');\r\n }\r\n\r\n closeModal() {\r\n this.modal.classList.remove('active');\r\n this.body.append(this._modal_content);\r\n this.body.classList.remove('scroll-lock');\r\n }\r\n\r\n createModal() {\r\n if (!this.modal) {\r\n this.modal = document.createElement('div');\r\n this.modal.classList.add('custom-modal');\r\n document.body.append(this.modal);\r\n\r\n this.modal.innerHTML = `\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n `\r\n\r\n this._modal_inset = document.querySelector('.custom-modal__inset');\r\n }\r\n }\r\n}","let resize = (func) => {\r\n let currentInnerWidth = window.innerWidth;\r\n\r\n window.addEventListener('resize', () => {\r\n if (window.innerWidth === currentInnerWidth) return;\r\n currentInnerWidth = window.innerWidth;\r\n func();\r\n });\r\n}\r\n\r\nexport default resize;","/**\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","/**\n * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionStart(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionstart', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionstart', fireCallBack);\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\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 }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, transitionStart, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\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\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\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\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\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\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\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\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\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\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\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\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\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\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\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\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\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 passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\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\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'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\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 } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\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\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\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\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\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\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\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\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\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\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};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('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 { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\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\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\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 = $wrapperEl.children(`.${swiper.params.slideClass}`);\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\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\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\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\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\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(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\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\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\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\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\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\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\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\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\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.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\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\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\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each(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 } // Find new height from highest slide in view\n\n\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 } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport 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; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\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\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\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 } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\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\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\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\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('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\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\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\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\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 !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\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\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\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\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\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\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 } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = 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\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\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\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\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[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\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 animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\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 animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\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\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\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\n if (params.rewind && swiper.isBeginning) {\n return swiper.slideTo(swiper.slides.length - 1, speed, runCallbacks, internal);\n }\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\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\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\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\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 $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\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 = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\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 { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\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 return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // 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\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\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\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\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 let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && 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\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\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\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\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\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\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\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\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 {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\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\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\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\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\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\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 } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 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 swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\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\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\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\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\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\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\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';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\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\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\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\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\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\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\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 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}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\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 }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","export default {\n init: true,\n direction: 'horizontal',\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 // 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: 0,\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 // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: 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 // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\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\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\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 $ from '../shared/dom.js';\nimport { extend, now, deleteProps } 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 images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.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 images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n\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\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\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\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\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 }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\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\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\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\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\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 touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\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 isTouchEvent: undefined,\n startMoving: undefined\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'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\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\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\n getSlideClasses(slideEl) {\n const swiper = this;\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(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\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\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\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\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\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\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\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\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\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\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(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\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\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'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\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 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\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], 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 wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\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\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\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; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\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\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\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\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\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[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\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\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\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.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\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\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\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\n return breakpoint || 'max';\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\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\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\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\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\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\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\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';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\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\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import initAboutSlider from \"./init-about-slider\";\r\nimport initHomeSlider from \"./init-home-slider\";\r\nimport initWhyFlowSlider from \"./init-whyFlow-slider\";\r\n\r\nconst sliders = () => {\r\n initHomeSlider();\r\n initWhyFlowSlider();\r\n initAboutSlider();\r\n}\r\n\r\nexport default sliders;","import resize from \"../resize\";\r\nimport Swiper from \"swiper\";\r\n\r\nconst initHomeSlider = () => {\r\n const slider = document.querySelector(\".home-slider\");\r\n let swiper = null;\r\n\r\n function init() {\r\n if (!swiper) {\r\n swiper = new Swiper(slider, {\r\n loop: false,\r\n spaceBetween: 10,\r\n breakpoints: {\r\n 0: {\r\n slidesPerView: 1\r\n },\r\n },\r\n });\r\n }\r\n }\r\n\r\n function destroy() {\r\n if (swiper) {\r\n swiper.destroy();\r\n swiper = null;\r\n }\r\n }\r\n\r\n function resizeSwiper() {\r\n window.innerWidth <= 767\r\n ? init()\r\n : destroy()\r\n }\r\n\r\n slider && resizeSwiper();\r\n slider && resize(resizeSwiper);\r\n};\r\n\r\nexport default initHomeSlider;\r\n","import resize from \"../resize\";\r\nimport Swiper from \"swiper\";\r\n\r\nconst initWhyFlowSlider = () => {\r\n const slider = document.querySelector(\".whyFlow-slider\");\r\n let swiper = null;\r\n\r\n function init() {\r\n if (!swiper) {\r\n swiper = new Swiper(slider, {\r\n loop: false,\r\n spaceBetween: 16,\r\n breakpoints: {\r\n 0: {\r\n slidesPerView: 1.09\r\n },\r\n },\r\n });\r\n }\r\n }\r\n\r\n function destroy() {\r\n if (swiper) {\r\n swiper.destroy();\r\n swiper = null;\r\n }\r\n }\r\n\r\n function resizeSwiper() {\r\n window.innerWidth <= 767\r\n ? init()\r\n : destroy()\r\n }\r\n\r\n slider && resizeSwiper();\r\n slider && resize(resizeSwiper);\r\n};\r\n\r\nexport default initWhyFlowSlider;\r\n","import resize from \"../resize\";\r\nimport Swiper from \"swiper\";\r\n\r\nconst initAboutSlider = () => {\r\n const slider = document.querySelector(\".about-slider\");\r\n let swiper = null;\r\n\r\n function init() {\r\n if (!swiper) {\r\n swiper = new Swiper(slider, {\r\n loop: false,\r\n slidesPerView: \"auto\",\r\n spaceBetween: 0\r\n });\r\n }\r\n }\r\n\r\n function destroy() {\r\n if (swiper) {\r\n swiper.destroy();\r\n swiper = null;\r\n }\r\n }\r\n\r\n function resizeSwiper() {\r\n window.innerWidth <= 767\r\n ? init()\r\n : destroy()\r\n }\r\n\r\n slider && resizeSwiper();\r\n slider && resize(resizeSwiper);\r\n};\r\n\r\nexport default initAboutSlider;\r\n","'use strict';\r\n\r\n/* Стили */\r\nimport '../css/site.scss';\r\n\r\n/* Скрипты */\r\nimport form from './modules/form';\r\nimport scroll from './modules/scroll';\r\nimport { initModal } from './modules/modal/init-modal.js';\r\nimport sliders from './modules/sliders/index.js';\r\nimport menu from './modules/menu.js';\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n form();\r\n initModal();\r\n scroll();\r\n sliders();\r\n menu();\r\n});\r\n","const menu = () => {\r\n /* Dropdown menu */\r\n (() => {\r\n const btn = document.querySelector('.header__menu-item__dropdown'),\r\n menu = document.querySelector('.header__dropdown');\r\n\r\n document.addEventListener('click', (e) => {\r\n let target = e.target;\r\n\r\n if (!target.classList.contains('header__menu-item__dropdown')) {\r\n menu.classList.remove('active');\r\n btn.classList.remove('active');\r\n } else if (target.classList.contains('header__menu-item__dropdown')) {\r\n menu.classList.add('active');\r\n btn.classList.add('active');\r\n }\r\n })\r\n })();\r\n\r\n /* Мобильное меню */\r\n (() => {\r\n const burgerButton = document.querySelector('.header__burger'),\r\n burgerMenu = document.querySelector('.popup-mob');\r\n\r\n if (!burgerButton) {\r\n return;\r\n }\r\n \r\n burgerButton.addEventListener('click', () => {\r\n if (burgerButton.classList.contains('active')) {\r\n burgerButton.classList.remove('active');\r\n burgerMenu.classList.remove('active');\r\n document.body.style.overflow = 'visible';\r\n \r\n } else {\r\n burgerButton.classList.add('active');\r\n burgerMenu.classList.add('active');\r\n document.body.style.overflow = 'hidden';\r\n }\r\n });\r\n \r\n document.addEventListener('click', (event) => {\r\n const target = event.target;\r\n \r\n if (target.closest('.popup-mob__container')) {\r\n burgerButton.classList.remove('active');\r\n burgerMenu?.classList.remove('active');\r\n document.body.style.overflow = 'visible';\r\n }\r\n });\r\n })();\r\n}\r\n\r\nexport default menu;","import { Modal } from './modal';\r\nlet modal;\r\n\r\nconst initModal = () => {\r\n modal = new Modal();\r\n};\r\n\r\nexport {initModal, modal};"],"names":["VanillaToast","this","queue","TaskQueue","cancellationTokens","element","constants","default","className","fadeDuration","fadeInterval","duration","closeButton","immediately","success","info","warning","error","item","prototype","initElement","selector","container","document","createElement","toastBox","text","setAttribute","innerHTML","appendChild","getElementById","seletor","containter","body","_setStyle","cancel","length","cancelAll","i","show","option","callback","self","cancellationToken","CancellationToken","enqueue","next","fadeStep","Math","min","style","display","s","opacity","timeoutId","timeoutCallback","removeEventListener","cancelHandler","_fade","_hide","shift","dispose","clearTimeout","addEventListener","isCancellationRequested","setTimeout","register","push","preset","propertyName","undefined","step","interval","fade","Number","cancelCallbacks","copiedCallbacks","slice","isExecuting","dequeueAndExecute","job","module","exports","vanillaToast","call","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","hasOwnProperty","bind","fn","thisArg","apply","arguments","toString","getPrototypeOf","kindOf","cache","create","thing","str","toLowerCase","kindOfTest","type","typeOfTest","isArray","Array","isUndefined","isArrayBuffer","isString","isFunction","isNumber","isObject","isPlainObject","val","Symbol","toStringTag","iterator","isDate","isFile","isBlob","isFileList","isURLSearchParams","forEach","allOwnKeys","l","keys","getOwnPropertyNames","len","findKey","_key","_global","globalThis","window","global","isContextDefined","context","isTypedArray","TypedArray","Uint8Array","isHTMLForm","isRegExp","reduceDescriptors","reducer","descriptors","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","defineProperties","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","toUpperCase","isAsyncFn","isBuffer","constructor","isFormData","kind","FormData","append","isArrayBufferView","result","ArrayBuffer","isView","buffer","isBoolean","isStream","pipe","merge","caseless","assignValue","targetKey","extend","b","trim","replace","stripBOM","content","charCodeAt","inherits","superConstructor","props","value","assign","toFlatObject","sourceObj","destObj","filter","propFilter","merged","endsWith","searchString","position","String","lastIndex","indexOf","toArray","arr","forEachEntry","done","pair","matchAll","regExp","matches","exec","hasOwnProp","freezeMethods","writable","set","Error","toObjectSet","arrayOrString","delimiter","define","split","toCamelCase","m","p1","p2","noop","toFiniteNumber","defaultValue","isFinite","generateString","size","alphabet","random","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isThenable","then","catch","AxiosError","message","code","config","request","response","captureStackTrace","utils","toJSON","description","number","fileName","lineNumber","columnNumber","status","from","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","path","dots","concat","map","token","join","predicates","test","formData","options","TypeError","metaTokens","indexes","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","Buffer","JSON","stringify","some","isFlatArray","el","index","exposedHelpers","build","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","toFormData","encoder","_encode","buildURL","url","serializeFn","serialize","serializedParams","hashmarkIndex","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","id","clear","h","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","isBrowser","classes","URLSearchParams","isStandardBrowserEnv","product","navigator","isStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","protocols","buildPath","isNumericKey","isLast","arrayToObject","entries","parsePropPath","DEFAULT_CONTENT_TYPE","defaults","transitional","transitionalDefaults","adapter","transformRequest","data","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","formDataToJSON","setContentType","platform","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","env","rawValue","parser","parse","e","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","method","ignoreDuplicateOf","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","line","substring","parseHeaders","tokens","tokensRE","parseTokens","has","matcher","delete","deleted","deleteHeader","normalize","format","normalized","w","char","formatHeader","targets","asStrings","first","computed","accessor","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","configurable","buildAccessors","transformData","fns","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","write","expires","domain","secure","cookie","Date","toGMTString","read","RegExp","decodeURIComponent","remove","now","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","msie","userAgent","urlParsingNode","originURL","resolveURL","href","protocol","host","search","hash","hostname","port","pathname","charAt","location","requestURL","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","samplesCount","bytes","timestamps","firstSampleTS","head","tail","chunkLength","startedAt","bytesCount","passed","round","speedometer","loaded","total","lengthComputable","progressBytes","rate","progress","estimated","event","knownAdapters","http","xhr","XMLHttpRequest","Promise","resolve","reject","requestData","requestHeaders","onCanceled","cancelToken","unsubscribe","signal","auth","username","password","unescape","btoa","fullPath","onloadend","responseHeaders","getAllResponseHeaders","ERR_BAD_REQUEST","floor","settle","err","responseText","statusText","open","paramsSerializer","onreadystatechange","readyState","responseURL","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","withCredentials","isURLSameOrigin","cookies","setRequestHeader","onDownloadProgress","onUploadProgress","upload","abort","subscribe","aborted","parseProtocol","send","throwIfCancellationRequested","throwIfRequested","dispatchRequest","adapters","nameOrAdapter","reason","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","decompress","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","configValue","validators","deprecatedWarnings","validator","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","InterceptorManager","configOrUrl","contextHeaders","boolean","function","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","responseInterceptorChain","promise","chain","newConfig","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","splice","c","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","axios","createInstance","defaultConfig","instance","VERSION","Cancel","all","promises","spread","isAxiosError","payload","formToJSON","_obj$constructor","pick","_","k","includes","reduce","acc","_ref","v","DIRECTION","escapeRegExp","objectIncludes","arrA","arrB","dateA","dateB","getTime","regexpA","regexpB","ActionDetails","startChangePos","oldValue","oldSelection","start","insertedCount","cursorPos","end","inserted","substr","removedCount","max","removed","removeDirection","IMask","InputMask","maskedClass","mask","MaskedRegExp","MaskedPattern","MaskedDate","MaskedNumber","MaskedDynamic","Masked","Function","MaskedFunction","normalizeOpts","instanceOpts","_mask","startsWith","createMask","nOpts","MaskedClass","MaskElement","selectionStart","_unsafeSelectionStart","selectionEnd","_unsafeSelectionEnd","select","_unsafeSelect","isActive","HTMLMaskElement","input","super","_onKeydown","_onInput","_onBeforeinput","_onCompositionEnd","rootElement","_this$input$getRootNo","_this$input$getRootNo2","_this$input","getRootNode","activeElement","bindEvents","drop","click","focus","commit","_handlers","redo","keyCode","shiftKey","metaKey","ctrlKey","preventDefault","undo","isComposing","selectionChange","inputType","unbindEvents","HTMLInputMaskElement","setSelectionRange","HTMLContenteditableMaskElement","root","selection","getSelection","anchorOffset","focusOffset","createRange","range","setStart","firstChild","setEnd","lastChild","removeAllRanges","addRange","textContent","InputHistory","states","currentIndex","currentState","isEmpty","state","MAX_LENGTH","go","steps","isContentEditable","tagName","masked","_unmaskedValue","_rawInputValue","history","_saveSelection","_onChange","_onDrop","_onFocus","_onClick","_onUndo","_onRedo","alignCursor","alignCursorFriendly","_bindEvents","updateValue","maskEquals","_this$masked","updateOptions","unmaskedValue","updateControl","rawInputValue","typedValue","typedValueEquals","displayValue","_unbindEvents","_fireEvent","ev","listeners","_cursorChanging","_changingCursorPos","pos","_selection","newUnmaskedValue","newValue","newRawInputValue","newDisplayValue","isChanged","_fireChangeEvents","_historyChanging","restOpts","updateMask","updateOpts","optionsIsChanged","updateCursor","_delayUpdateCursor","_abortUpdateCursor","_inputEvent","isComplete","nearestInputPos","on","handler","off","hIndex","details","oldRawValue","offset","raw","doCommit","stopPropagation","_applyHistoryState","destroy","ChangeDetails","prep","rawInserted","tailShift","skip","aggregate","consumed","Boolean","equals","ContinuousTailDetails","stop","appendTo","_appendPlaceholder","beforePos","shiftChar","_update","DEFAULTS","_initialized","withValueRefresh","reset","flags","extractInput","isFilled","direction","totalInputPositions","fromPos","toPos","extractTail","appendTail","_appendCharRaw","ch","_appendChar","checkTail","consistentState","doPrepareChar","autofix","noFixState","fixDetails","pad","chDetails","consistentTail","appended","doValidate","beforeTailState","overwrite","tailDetails","_appendEager","_beforeTailState","doPrepare","ci","doSkipInvalid","eager","_refreshing","rawInput","ret","runIsolated","_isolated","skipInvalid","prepare","prepareChar","validate","parent","deleteCount","tailPos","eagerRemove","forceDirection","valLength","tval","EMPTY_VALUES","ChunksTailDetails","chunks","tailChunk","lastChunk","extendLast","firstTailChunk","blockIndex","chunk","lastBlockIter","_mapPosToBlock","chunkBlock","_stops","_blocks","remainChars","cstate","chunkShiftPos","PatternCursor","_log","ok","block","_blockStartPos","pushState","popState","bindBlock","_pushLeft","_this$block","_pushRight","pushLeftBeforeFilled","isFixed","pushLeftBeforeInput","pushLeftBeforeRequired","isOptional","pushRightBeforeFilled","pushRightBeforeInput","pushRightBeforeRequired","PatternFixedDefinition","isUnmasking","_isRawInput","maxPos","appendEager","isResolved","PatternInputDefinition","placeholderChar","displayChar","lazy","maskOpts","currentMaskFlags","boundPos","_flags$_beforeTailSta","DEFAULT_DEFINITIONS","definitions","_rebuildMask","defs","exposeBlock","_maskedBlocks","pattern","unmaskingBlock","optionalBlock","blocks","p","bNames","bName","sort","expose","repeat","bOpts","blockOpts","maskedBlock","RepeatBlock","isInput","STOP_CHAR","ESCAPE_CHAR","def","maskedState","bi","every","_this$_mapPosToBlock","startBlockIndex","blockIter","blockDetails","chunkTail","_forEachBlocksInRange","bFromPos","bToPos","blockChunk","_findStopBefore","stopBefore","si","toBlockIndex","startBlockIter","endBlockIndex","_blocks2","accVal","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","cursor","maskedBlocks","indices","gi","InputDefinition","FixedDefinition","MaskedRange","_matchFrom","maxLength","to","patternOpts","fromStr","padStart","toStr","sameCharsCount","boundaries","minstr","maxstr","placeholder","num","padEnd","padLength","extractPatternOptions","patternBlocks","GET_DEFAULT_BLOCKS","Y","getFullYear","getMonth","getDate","date","isDateExist","day","month","year","currentMask","exposeMask","compiledMasks","_overwrite","_eager","_skipInvalid","_applyDispatch","prevValueBeforeTail","inputValue","insertValue","tailValue","prevMask","prevMaskState","doDispatch","_flags$_beforeTailSta2","currentMaskRef","dispatch","currentDetails","_this$currentMask","_this$currentMask2","_this$currentMask3","_this$currentMask4","mi","_autofix","oldMask","_this$currentMask5","inputs","isCurrent","startInputPos","weight","i1","i2","MaskedEnum","enum","enum_","eopts","lengths","requiredLength","optionalLength","matchFrom","matchValue","mch","_MaskedNumber","estr","istr","_updateRegExps","allowNegative","scale","radix","_numberRegExp","_mapToRadixRegExp","mapToRadix","_thousandsSeparatorRegExp","thousandsSeparator","_removeThousandsSeparators","_insertThousandsSeparators","parts","prepCh","allowPositive","_separatorsCount","extendOnSeparators","count","_separatorsCountFromSlice","_adjustRangeWithSeparators","prevBeforeTailValue","prevBeforeTailSeparatorsCount","appendDetails","accepted","isNaN","fixedNum","UNMASKED_RADIX","beforeTailValue","beforeTailSeparatorsCount","_findSeparatorAround","searchFrom","separatorPos","separatorAroundFromPos","separatorAroundToPos","valueBeforePos","valueAfterPos","separatorAtLeftPos","separatorAtLeftEndPos","separatorAtRightPos","validnum","formatted","normalizeZeros","_normalizeZeros","padFractionalZeros","_padFractionalZeros","sign","zeros","dropFractional","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","toLocaleString","useGrouping","maximumFractionDigits","PIPE_TYPE","MASKED","UNMASKED","TYPED","createPipe","arg","repeatFrom","Infinity","repeatTo","_ref2","_ref3","_ref4","_this$_blocks","_blockOpts","_allocateBlock","allocated","_this$_mapPosToBlock$","_this$_blocks$bi","_trimEmptyTail","_this$_mapPosToBlock2","_this$_mapPosToBlock3","firstBlockIndex","lastBlockIndex","removeCount","phone_consultation","phone_free","phone_cost","citizenRequest","setFormCheckbox","checkbox","btn","checked","removeAttribute","querySelector","requried","email","phone","setForm","form","sendBtn","querySelectorAll","classList","deleteErrors","formField","control","add","invalidField","scrollIntoView","behavior","disabled","formElement","post","log","_step","_iterator","_createForOfIteratorHelper","_loop","smoothLink","getAttribute","elementPosition","getBoundingClientRect","top","scrollBy","f","Modal","_classCallCheck","_modal","_modal_inset","_modal_content","_documentClickHandler","_init","createModal","evt","_this","closest","closeModal","openModal","attr","modal","func","currentInnerWidth","innerWidth","src","ssrDocument","blur","nodeName","createEvent","initEvent","children","childNodes","getElementsByTagName","createElementNS","importNode","origin","getDocument","doc","ssrWindow","replaceState","back","CustomEvent","getComputedStyle","getPropertyValue","Image","screen","matchMedia","requestAnimationFrame","cancelAnimationFrame","getWindow","win","Dom7","items","proto","__proto__","makeReactive","arrayFlat","res","arrayFilter","$","html","toCreate","tempParent","qsa","nodeType","uniqueArray","arrayUnique","noTrigger","shortcut","args","trigger","Methods","addClass","classNames","removeClass","hasClass","contains","toggleClass","toggle","attrs","attrName","removeAttr","transform","transition","transitionDuration","eventType","targetSelector","capture","handleLiveEvent","eventData","dom7EventData","is","parents","handleEvent","events","j","dom7LiveListeners","proxyListener","dom7Listeners","dom7proxy","detail","bubbles","cancelable","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","box","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","left","css","each","compareWith","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","els","newChild","tempDiv","prepend","insertBefore","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parentNode","find","foundElements","found","removeChild","nextTick","delay","noExtend","nextSource","node","HTMLElement","keysArray","nextIndex","nextKey","getOwnPropertyDescriptor","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","supportsPassive","gestures","calcSupport","priority","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","emit","updateSize","width","height","$el","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","marginRight","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","webkitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","visibleSlides","ceil","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","transitionEmit","runCallbacks","slideTo","internal","initial","indexAsNumber","animating","preventInteractionOnTransition","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","setTranslate","transitionStart","isH","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","destroyed","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","rewind","slidePrev","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","getTranslate","loopDestroy","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","which","button","isTouched","isMoved","noSwipingClass","shadowRoot","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","onTouchEnd","touchEndTime","timeDiff","pathTree","composedPath","lastClickTime","currentPos","stopIndex","groupSize","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","dummyEventAttached","dummyEventListener","touchEvents","device","domMethod","swiperMethod","passiveListeners","passive","move","updateOnWindowResize","ios","android","attachEvents","detachEvents","isGridEnabled","addClasses","suffixes","prefix","resultClasses","prepareClasses","fill","containerModifierClass","emitContainerClasses","removeClasses","init","resizeObserver","createElements","virtualTranslate","breakpointsBase","simulateTouch","uniqueNavElements","preloadImages","updateOnImagesReady","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","update","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","byController","x","y","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","moving","isLocked","unsetGrabCursor","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","currentHeight","innerHeight","points","point","minRatio","wasLocked","lastSlideIndex","lastSlideRightEdge","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","swipers","newParams","overrides","ua","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getDevice","isSafari","isWebView","calcBrowser","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","getWrapper","wrapper","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","prototypeGroup","protoMethod","observer","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","slider","resizeSwiper","resize","initHomeSlider","initWhyFlowSlider","initAboutSlider","burgerButton","burgerMenu","menu","scroll","sliders"],"sourceRoot":""}