{"version":3,"file":"index.4beb189e.js","sources":["../../../node_modules/.pnpm/@hotwired+stimulus@3.1.0/node_modules/@hotwired/stimulus/dist/stimulus.js","../../../node_modules/.pnpm/ssr-window@4.0.2/node_modules/ssr-window/ssr-window.esm.js","../../../node_modules/.pnpm/dom7@4.0.4/node_modules/dom7/dom7.esm.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/shared/dom.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/shared/utils.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/shared/get-support.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/shared/get-device.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/shared/get-browser.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/modules/resize/resize.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/modules/observer/observer.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/events-emitter.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/update/updateSize.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/update/updateSlides.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/update/updateAutoHeight.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/update/updateSlidesOffset.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/update/updateSlidesProgress.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/update/updateProgress.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/update/updateSlidesClasses.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/update/updateActiveIndex.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/update/updateClickedSlide.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/update/index.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/translate/getTranslate.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/translate/setTranslate.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/translate/minTranslate.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/translate/maxTranslate.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/translate/translateTo.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/translate/index.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/transition/setTransition.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/transition/transitionEmit.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/transition/transitionStart.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/transition/transitionEnd.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/transition/index.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/slide/slideTo.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/slide/slideToLoop.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/slide/slideNext.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/slide/slidePrev.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/slide/slideReset.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/slide/slideToClosest.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/slide/slideToClickedSlide.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/slide/index.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/loop/loopCreate.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/loop/loopFix.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/loop/loopDestroy.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/loop/index.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/grab-cursor/setGrabCursor.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/grab-cursor/index.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/events/onTouchStart.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/events/onTouchMove.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/events/onTouchEnd.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/events/onResize.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/events/onClick.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/events/onScroll.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/events/index.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/breakpoints/setBreakpoint.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/breakpoints/getBreakpoint.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/breakpoints/index.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/classes/addClasses.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/classes/removeClasses.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/classes/index.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/images/loadImage.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/images/preloadImages.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/images/index.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/check-overflow/index.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/defaults.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/moduleExtendParams.js","../../../node_modules/.pnpm/swiper@8.3.2/node_modules/swiper/core/core.js","../../../node_modules/.pnpm/vanilla-lazyload@17.8.3/node_modules/vanilla-lazyload/dist/lazyload.esm.js","../../../assets/scripts/controller/home.controller.ts","../../../assets/scripts/controller/form.controller.ts","../../../assets/scripts/controller/lang.controller.ts","../../../assets/scripts/controller/modal.controller.ts","../../../assets/scripts/component.ts","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/bind.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/utils.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/buildURL.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/InterceptorManager.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/normalizeHeaderName.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/AxiosError.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/defaults/transitional.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/toFormData.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/settle.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/cookies.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/isAbsoluteURL.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/combineURLs.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/buildFullPath.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/parseHeaders.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/isURLSameOrigin.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/cancel/CanceledError.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/parseProtocol.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/adapters/xhr.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/null.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/defaults/index.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/transformData.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/cancel/isCancel.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/dispatchRequest.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/mergeConfig.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/env/data.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/validator.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/core/Axios.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/cancel/CancelToken.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/spread.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/helpers/isAxiosError.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/lib/axios.js","../../../node_modules/.pnpm/axios@0.27.2/node_modules/axios/index.js","../../../node_modules/.pnpm/nprogress@0.2.0/node_modules/nprogress/nprogress.js","../../../assets/scripts/action.ts","../../../assets/scripts/cookie-bar.ts","../../../assets/scripts/scroller.ts","../../../assets/scripts/index.ts"],"sourcesContent":["/*\nStimulus 3.1.0\nCopyright © 2022 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n }\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map;\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(eventListener => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(eventListener => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values())\n .reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map;\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions).sort().forEach(key => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n eventOptions: matches[9] ? parseEventOptions(matches[9]) : {},\n identifier: matches[5],\n methodName: matches[7]\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions.split(\":\").reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nclass Action {\n constructor(element, index, descriptor) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n static forToken(token) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content));\n }\n toString() {\n const eventNameSuffix = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventNameSuffix}->${this.identifier}#${this.methodName}`;\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`);\n for (const { name, value } of Array.from(this.element.attributes)) {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n}\nconst defaultEventNames = {\n \"a\": e => \"click\",\n \"button\": e => \"click\",\n \"form\": e => \"submit\",\n \"details\": e => \"toggle\",\n \"input\": e => e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\",\n \"select\": e => \"change\",\n \"textarea\": e => \"input\"\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n if (this.willBeInvokedByEvent(event) && this.shouldBeInvokedPerSelf(event)) {\n this.processStopPropagation(event);\n this.processPreventDefault(event);\n this.invokeWithEvent(event);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n processStopPropagation(event) {\n if (this.eventOptions.stop) {\n event.stopPropagation();\n }\n }\n processPreventDefault(event) {\n if (this.eventOptions.prevent) {\n event.preventDefault();\n }\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n const { params } = this.action;\n const actionEvent = Object.assign(event, { params });\n this.method.call(this.controller, actionEvent);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n shouldBeInvokedPerSelf(event) {\n if (this.action.eventOptions.self === true) {\n return this.action.element === event.target;\n }\n else {\n return true;\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set;\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(node, attributeName) {\n const element = node;\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map;\n this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map(attribute => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some(set => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey)\n .filter(([key, values]) => values.has(value))\n .map(([key, values]) => key);\n }\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map;\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap;\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach(token => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach(token => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens)\n .findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(content => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap;\n this.valuesByTokenByElement = new WeakMap;\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map;\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return { value };\n }\n catch (error) {\n return { error };\n }\n }\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map;\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach(binding => this.delegate.bindingDisconnected(binding));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null)\n return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n }\n catch (error) {\n if (!(error instanceof TypeError))\n throw error;\n throw new TypeError(`Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`);\n }\n }\n }\n get valueDescriptors() {\n const { valueDescriptorMap } = this;\n return Object.keys(valueDescriptorMap).map(key => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach(key => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap;\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach(name => values.add(name));\n return values;\n }, new Set));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map(key => [key, definition[key]]) : [];\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, { [key]: descriptor });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return (object) => [\n ...Object.getOwnPropertyNames(object),\n ...Object.getOwnPropertySymbols(object)\n ];\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended }\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () { this.a.call(this); };\n const b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b;\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor)\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap;\n this.connectedContexts = new Set;\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap;\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set;\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target\n || this.findTarget(targetName)\n || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName)\n ], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map(element => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const { identifier } = this;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = (element) => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n }\n findElement(selector) {\n return this.element.matches(selector)\n ? this.element\n : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [\n ...this.element.matches(selector) ? [this.element] : [],\n ...this.queryElements(selector).filter(this.containsElement)\n ];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap;\n this.scopeReferenceCounts = new WeakMap;\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const { element, content: identifier } = token;\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map;\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap;\n this.modulesByIdentifier = new Map;\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find(context => context.element == element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.disconnectContextForScope(scope));\n }\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: identifier => `data-${identifier}-target`\n};\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n static start(element, schema) {\n const application = new Application(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({ identifier, controllerConstructor });\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach(definition => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach(identifier => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map(context => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({ application: this }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise(resolve => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n }\n else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const { classes } = this;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n }\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n }\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n }\n }\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n }\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n }\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n }\n }\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, { [attributeName]: valueDescriptor });\n }, {});\n }\n }\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const { key, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n }\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n }\n }\n };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition,\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array: return \"array\";\n case Boolean: return \"boolean\";\n case Number: return \"number\";\n case Object: return \"object\";\n case String: return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\": return \"boolean\";\n case \"number\": return \"number\";\n case \"string\": return \"string\";\n }\n if (Array.isArray(defaultValue))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const typeFromObject = parseValueTypeConstant(payload.typeObject.type);\n if (!typeFromObject)\n return;\n const defaultValueType = parseValueTypeDefault(payload.typeObject.default);\n if (typeFromObject !== defaultValueType) {\n const propertyPath = payload.controller ? `${payload.controller}.${payload.token}` : payload.token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${payload.typeObject.default}\" is of type \"${defaultValueType}\".`);\n }\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const typeFromObject = parseValueTypeObject({\n controller: payload.controller,\n token: payload.token,\n typeObject: payload.typeDefinition\n });\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeDefinition);\n const typeFromConstant = parseValueTypeConstant(payload.typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n const propertyPath = payload.controller ? `${payload.controller}.${payload.typeDefinition}` : payload.token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${payload.token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const defaultValue = typeDefinition.default;\n if (defaultValue !== undefined)\n return defaultValue;\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const key = `${dasherize(payload.token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() { return defaultValueForDefinition(payload.typeDefinition); },\n get hasCustomDefaultValue() { return parseValueTypeDefault(payload.typeDefinition) !== undefined; },\n reader: readers[type],\n writer: writers[type] || writers.default\n };\n}\nconst defaultValuesByType = {\n get array() { return []; },\n boolean: false,\n number: 0,\n get object() { return {}; },\n string: \"\"\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value);\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n }\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {\n }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing];\nController.targets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\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 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, 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) {\n if (delay === void 0) {\n delay = 0;\n }\n\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) {\n if (axis === void 0) {\n axis = 'x';\n }\n\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() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[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(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\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(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\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 (overrides === void 0) {\n overrides = {};\n }\n\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 };","import { getWindow } from 'ssr-window';\nexport default function Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = 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 animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\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 });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\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(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n\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}","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler() {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\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 (!self.eventsListeners || self.destroyed) return self;\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.eventsListeners || self.destroyed) return self;\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 || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\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};","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\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","import $ from '../../shared/dom.js';\nexport 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) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n\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}","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n\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, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n\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 getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","export default function transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\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 transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\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, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\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, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\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 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, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\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, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\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 const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (threshold === void 0) {\n threshold = 0.5;\n }\n\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 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 { 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 && swiper.params.loopedSlidesLimit) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n $(el).attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < swiper.loopedSlides; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlides.push(slides.eq(index)[0]);\n prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\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 loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.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 ? '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 setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\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) {\n if (base === void 0) {\n base = this;\n }\n\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\n if (!found && !el.getRootNode) {\n return null;\n }\n\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, $targetEl[0]) : $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\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\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 if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\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 if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\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 }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // 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(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\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(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","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 } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\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 { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n\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}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\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 }, {\n 'watch-progress': params.watchSlidesProgress\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}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\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 loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\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};","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 loopedSlidesLimit: true,\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 maxBackfaceHiddenSlides: 10,\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 if (obj === void 0) {\n obj = {};\n }\n\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() {\n let el;\n let params;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\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 if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\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, exact) {\n if (view === void 0) {\n view = 'current';\n }\n\n if (exact === void 0) {\n exact = false;\n }\n\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) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n\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 changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n\n swiper.update();\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 if (!$el.children) {\n return $($el).children(getWrapperSelector());\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, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n\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;","const runningOnBrowser = typeof window !== \"undefined\";\n\nconst isBot =\n (runningOnBrowser && !(\"onscroll\" in window)) ||\n (typeof navigator !== \"undefined\" && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent));\n\nconst supportsIntersectionObserver = runningOnBrowser && \"IntersectionObserver\" in window;\n\nconst supportsClassList = runningOnBrowser && \"classList\" in document.createElement(\"p\");\n\nconst isHiDpi = runningOnBrowser && window.devicePixelRatio > 1;\n\nconst defaultSettings = {\n elements_selector: \".lazy\",\n container: isBot || runningOnBrowser ? document : null,\n threshold: 300,\n thresholds: null,\n data_src: \"src\",\n data_srcset: \"srcset\",\n data_sizes: \"sizes\",\n data_bg: \"bg\",\n data_bg_hidpi: \"bg-hidpi\",\n data_bg_multi: \"bg-multi\",\n data_bg_multi_hidpi: \"bg-multi-hidpi\",\n data_bg_set: \"bg-set\",\n data_poster: \"poster\",\n class_applied: \"applied\",\n class_loading: \"loading\",\n class_loaded: \"loaded\",\n class_error: \"error\",\n class_entered: \"entered\",\n class_exited: \"exited\",\n unobserve_completed: true,\n unobserve_entered: false,\n cancel_on_exit: true,\n callback_enter: null,\n callback_exit: null,\n callback_applied: null,\n callback_loading: null,\n callback_loaded: null,\n callback_error: null,\n callback_finish: null,\n callback_cancel: null,\n use_native: false,\n restore_on_error: false,\n};\n\nconst getExtendedSettings = (customSettings) => {\n return Object.assign({}, defaultSettings, customSettings);\n};\n\n/* Creates instance and notifies it through the window element */\nconst createInstance = function(classObj, options) {\n let event;\n const eventString = \"LazyLoad::Initialized\";\n const instance = new classObj(options);\n try {\n // Works in modern browsers\n event = new CustomEvent(eventString, { detail: { instance } });\n } catch (err) {\n // Works in Internet Explorer (all versions)\n event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(eventString, false, false, { instance });\n }\n window.dispatchEvent(event);\n};\n\n/* Auto initialization of one or more instances of lazyload, depending on the \n options passed in (plain object or an array) */\nconst autoInitialize = (classObj, options) => {\n if (!options) {\n return;\n }\n if (!options.length) {\n // Plain object\n createInstance(classObj, options);\n } else {\n // Array of objects\n for (let i = 0, optionsItem; (optionsItem = options[i]); i += 1) {\n createInstance(classObj, optionsItem);\n }\n }\n};\n\nconst SRC = \"src\";\nconst SRCSET = \"srcset\";\nconst SIZES = \"sizes\";\nconst POSTER = \"poster\";\nconst ORIGINALS = \"llOriginalAttrs\";\nconst DATA = \"data\";\n\nconst statusLoading = \"loading\";\nconst statusLoaded = \"loaded\";\nconst statusApplied = \"applied\";\nconst statusEntered = \"entered\";\nconst statusError = \"error\";\nconst statusNative = \"native\";\n\nconst dataPrefix = \"data-\";\nconst statusDataName = \"ll-status\";\n\nconst getData = (element, attribute) => {\n return element.getAttribute(dataPrefix + attribute);\n};\n\nconst setData = (element, attribute, value) => {\n var attrName = dataPrefix + attribute;\n if (value === null) {\n element.removeAttribute(attrName);\n return;\n }\n element.setAttribute(attrName, value);\n};\n\nconst getStatus = (element) => getData(element, statusDataName);\nconst setStatus = (element, status) => setData(element, statusDataName, status);\nconst resetStatus = (element) => setStatus(element, null);\n\nconst hasEmptyStatus = (element) => getStatus(element) === null;\nconst hasStatusLoading = (element) => getStatus(element) === statusLoading;\nconst hasStatusError = (element) => getStatus(element) === statusError;\nconst hasStatusNative = (element) => getStatus(element) === statusNative;\n\nconst statusesAfterLoading = [statusLoading, statusLoaded, statusApplied, statusError];\nconst hadStartedLoading = (element) => statusesAfterLoading.indexOf(getStatus(element)) >= 0;\n\nconst safeCallback = (callback, arg1, arg2, arg3) => {\n\tif (!callback) {\n\t\treturn;\n\t}\n\n\tif (arg3 !== undefined) {\n\t\tcallback(arg1, arg2, arg3);\n\t\treturn;\n\t}\n\tif (arg2 !== undefined) {\n\t\tcallback(arg1, arg2);\n\t\treturn;\n\t}\n\tcallback(arg1);\n};\n\nconst addClass = (element, className) => {\n\tif (supportsClassList) {\n\t\telement.classList.add(className);\n\t\treturn;\n\t}\n\telement.className += (element.className ? \" \" : \"\") + className;\n};\n\nconst removeClass = (element, className) => {\n\tif (supportsClassList) {\n\t\telement.classList.remove(className);\n\t\treturn;\n\t}\n\telement.className = element.className.\n\t\treplace(new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\"), \" \").\n\t\treplace(/^\\s+/, \"\").\n\t\treplace(/\\s+$/, \"\");\n};\n\nconst addTempImage = (element) => {\n element.llTempImage = document.createElement(\"IMG\");\n};\n\nconst deleteTempImage = (element) => {\n delete element.llTempImage;\n};\n\nconst getTempImage = (element) => element.llTempImage;\n\nconst unobserve = (element, instance) => {\n if (!instance) return;\n const observer = instance._observer;\n if (!observer) return;\n observer.unobserve(element);\n};\n\nconst resetObserver = (observer) => {\n observer.disconnect();\n};\n\nconst unobserveEntered = (element, settings, instance) => {\n if (settings.unobserve_entered) unobserve(element, instance);\n};\n\nconst updateLoadingCount = (instance, delta) => {\n if (!instance) return;\n instance.loadingCount += delta;\n};\n\nconst decreaseToLoadCount = (instance) => {\n if (!instance) return;\n instance.toLoadCount -= 1;\n};\n\nconst setToLoadCount = (instance, value) => {\n if (!instance) return;\n instance.toLoadCount = value;\n};\n\nconst isSomethingLoading = (instance) => instance.loadingCount > 0;\n\nconst haveElementsToLoad = (instance) => instance.toLoadCount > 0;\n\nconst getSourceTags = (parentTag) => {\n let sourceTags = [];\n for (let i = 0, childTag; (childTag = parentTag.children[i]); i += 1) {\n if (childTag.tagName === \"SOURCE\") {\n sourceTags.push(childTag);\n }\n }\n return sourceTags;\n};\n\nconst forEachPictureSource = (element, fn) => {\n const parent = element.parentNode;\n if (!parent || parent.tagName !== \"PICTURE\") {\n return;\n }\n let sourceTags = getSourceTags(parent);\n sourceTags.forEach(fn);\n};\n\nconst forEachVideoSource = (element, fn) => {\n let sourceTags = getSourceTags(element);\n sourceTags.forEach(fn);\n};\n\nconst attrsSrc = [SRC];\nconst attrsSrcPoster = [SRC, POSTER];\nconst attrsSrcSrcsetSizes = [SRC, SRCSET, SIZES];\nconst attrsData = [DATA];\n\nconst hasOriginalAttrs = (element) => !!element[ORIGINALS];\nconst getOriginalAttrs = (element) => element[ORIGINALS];\nconst deleteOriginalAttrs = (element) => delete element[ORIGINALS];\n\n// ## SAVE ##\n\nconst setOriginalsObject = (element, attributes) => {\n if (hasOriginalAttrs(element)) {\n return;\n }\n const originals = {};\n attributes.forEach((attribute) => {\n originals[attribute] = element.getAttribute(attribute);\n });\n element[ORIGINALS] = originals;\n};\n\nconst saveOriginalBackgroundStyle = (element) => {\n if (hasOriginalAttrs(element)) {\n return;\n }\n element[ORIGINALS] = { backgroundImage: element.style.backgroundImage };\n};\n\n// ## RESTORE ##\n\nconst setOrResetAttribute = (element, attrName, value) => {\n if (!value) {\n element.removeAttribute(attrName);\n return;\n }\n element.setAttribute(attrName, value);\n};\n\nconst restoreOriginalAttrs = (element, attributes) => {\n if (!hasOriginalAttrs(element)) {\n return;\n }\n const originals = getOriginalAttrs(element);\n attributes.forEach((attribute) => {\n setOrResetAttribute(element, attribute, originals[attribute]);\n });\n};\n\nconst restoreOriginalBgImage = (element) => {\n if (!hasOriginalAttrs(element)) {\n return;\n }\n const originals = getOriginalAttrs(element);\n element.style.backgroundImage = originals.backgroundImage;\n};\n\nconst manageApplied = (element, settings, instance) => {\n addClass(element, settings.class_applied);\n setStatus(element, statusApplied);\n // Instance is not provided when loading is called from static class\n if (!instance) return;\n if (settings.unobserve_completed) {\n // Unobserve now because we can't do it on load\n unobserve(element, settings);\n }\n safeCallback(settings.callback_applied, element, instance);\n};\n\nconst manageLoading = (element, settings, instance) => {\n addClass(element, settings.class_loading);\n setStatus(element, statusLoading);\n // Instance is not provided when loading is called from static class\n if (!instance) return;\n updateLoadingCount(instance, +1);\n safeCallback(settings.callback_loading, element, instance);\n};\n\nconst setAttributeIfValue = (element, attrName, value) => {\n if (!value) {\n return;\n }\n element.setAttribute(attrName, value);\n};\n\nconst setImageAttributes = (element, settings) => {\n setAttributeIfValue(element, SIZES, getData(element, settings.data_sizes));\n setAttributeIfValue(element, SRCSET, getData(element, settings.data_srcset));\n setAttributeIfValue(element, SRC, getData(element, settings.data_src));\n};\n\nconst setSourcesImg = (imgEl, settings) => {\n forEachPictureSource(imgEl, (sourceTag) => {\n setOriginalsObject(sourceTag, attrsSrcSrcsetSizes);\n setImageAttributes(sourceTag, settings);\n });\n setOriginalsObject(imgEl, attrsSrcSrcsetSizes);\n setImageAttributes(imgEl, settings);\n};\n\nconst setSourcesIframe = (iframe, settings) => {\n setOriginalsObject(iframe, attrsSrc);\n setAttributeIfValue(iframe, SRC, getData(iframe, settings.data_src));\n};\n\nconst setSourcesVideo = (videoEl, settings) => {\n forEachVideoSource(videoEl, (sourceEl) => {\n setOriginalsObject(sourceEl, attrsSrc);\n setAttributeIfValue(sourceEl, SRC, getData(sourceEl, settings.data_src));\n });\n setOriginalsObject(videoEl, attrsSrcPoster);\n\n setAttributeIfValue(videoEl, POSTER, getData(videoEl, settings.data_poster));\n setAttributeIfValue(videoEl, SRC, getData(videoEl, settings.data_src));\n videoEl.load();\n};\n\nconst setSourcesObject = (object, settings) => {\n setOriginalsObject(object, attrsData);\n setAttributeIfValue(object, DATA, getData(object, settings.data_src));\n};\n\nconst setBackground = (element, settings, instance) => {\n const bg1xValue = getData(element, settings.data_bg);\n const bgHiDpiValue = getData(element, settings.data_bg_hidpi);\n const bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;\n if (!bgDataValue) return;\n element.style.backgroundImage = `url(\"${bgDataValue}\")`;\n getTempImage(element).setAttribute(SRC, bgDataValue);\n manageLoading(element, settings, instance);\n};\n\n// NOTE: THE TEMP IMAGE TRICK CANNOT BE DONE WITH data-multi-bg\n// BECAUSE INSIDE ITS VALUES MUST BE WRAPPED WITH URL() AND ONE OF THEM\n// COULD BE A GRADIENT BACKGROUND IMAGE\nconst setMultiBackground = (element, settings, instance) => {\n const bg1xValue = getData(element, settings.data_bg_multi);\n const bgHiDpiValue = getData(element, settings.data_bg_multi_hidpi);\n const bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;\n if (!bgDataValue) {\n return;\n }\n element.style.backgroundImage = bgDataValue;\n manageApplied(element, settings, instance);\n};\n\nconst setImgsetBackground = (element, settings, instance) => {\n const bgImgSetDataValue = getData(element, settings.data_bg_set);\n if (!bgImgSetDataValue) {\n return;\n }\n const imgSetValues = bgImgSetDataValue.split(\"|\");\n let bgImageValues = imgSetValues.map((value) => `image-set(${value})`);\n element.style.backgroundImage = bgImageValues.join();\n // Temporary fix for Chromeium with the -webkit- prefix\n if (element.style.backgroundImage === '') {\n bgImageValues = imgSetValues.map((value) => `-webkit-image-set(${value})`);\n element.style.backgroundImage = bgImageValues.join();\n }\n manageApplied(element, settings, instance);\n};\n\nconst setSourcesFunctions = {\n IMG: setSourcesImg,\n IFRAME: setSourcesIframe,\n VIDEO: setSourcesVideo,\n OBJECT: setSourcesObject\n};\n\nconst setSourcesNative = (element, settings) => {\n const setSourcesFunction = setSourcesFunctions[element.tagName];\n if (!setSourcesFunction) {\n return;\n }\n setSourcesFunction(element, settings);\n};\n\nconst setSources = (element, settings, instance) => {\n const setSourcesFunction = setSourcesFunctions[element.tagName];\n if (!setSourcesFunction) {\n return;\n }\n setSourcesFunction(element, settings);\n manageLoading(element, settings, instance);\n};\n\nconst elementsWithLoadEvent = [\"IMG\", \"IFRAME\", \"VIDEO\", \"OBJECT\"];\nconst hasLoadEvent = (element) => elementsWithLoadEvent.indexOf(element.tagName) > -1;\n\nconst checkFinish = (settings, instance) => {\n if (instance && !isSomethingLoading(instance) && !haveElementsToLoad(instance)) {\n safeCallback(settings.callback_finish, instance);\n }\n};\n\nconst addEventListener = (element, eventName, handler) => {\n element.addEventListener(eventName, handler);\n element.llEvLisnrs[eventName] = handler;\n};\n\nconst removeEventListener = (element, eventName, handler) => {\n element.removeEventListener(eventName, handler);\n};\n\nconst hasEventListeners = (element) => {\n return !!element.llEvLisnrs;\n};\n\nconst addEventListeners = (element, loadHandler, errorHandler) => {\n if (!hasEventListeners(element)) element.llEvLisnrs = {};\n const loadEventName = element.tagName === \"VIDEO\" ? \"loadeddata\" : \"load\";\n addEventListener(element, loadEventName, loadHandler);\n addEventListener(element, \"error\", errorHandler);\n};\n\nconst removeEventListeners = (element) => {\n if (!hasEventListeners(element)) {\n return;\n }\n const eventListeners = element.llEvLisnrs;\n for (let eventName in eventListeners) {\n const handler = eventListeners[eventName];\n removeEventListener(element, eventName, handler);\n }\n delete element.llEvLisnrs;\n};\n\nconst doneHandler = (element, settings, instance) => {\n deleteTempImage(element);\n updateLoadingCount(instance, -1);\n decreaseToLoadCount(instance);\n removeClass(element, settings.class_loading);\n if (settings.unobserve_completed) {\n unobserve(element, instance);\n }\n};\n\nconst loadHandler = (event, element, settings, instance) => {\n const goingNative = hasStatusNative(element);\n doneHandler(element, settings, instance);\n addClass(element, settings.class_loaded);\n setStatus(element, statusLoaded);\n safeCallback(settings.callback_loaded, element, instance);\n if (!goingNative) checkFinish(settings, instance);\n};\n\nconst errorHandler = (event, element, settings, instance) => {\n const goingNative = hasStatusNative(element);\n doneHandler(element, settings, instance);\n addClass(element, settings.class_error);\n setStatus(element, statusError);\n safeCallback(settings.callback_error, element, instance);\n if (settings.restore_on_error) restoreOriginalAttrs(element, attrsSrcSrcsetSizes);\n if (!goingNative) checkFinish(settings, instance);\n};\n\nconst addOneShotEventListeners = (element, settings, instance) => {\n const elementToListenTo = getTempImage(element) || element;\n if (hasEventListeners(elementToListenTo)) {\n // This happens when loading is retried twice\n return;\n }\n const _loadHandler = (event) => {\n loadHandler(event, element, settings, instance);\n removeEventListeners(elementToListenTo);\n };\n const _errorHandler = (event) => {\n errorHandler(event, element, settings, instance);\n removeEventListeners(elementToListenTo);\n };\n addEventListeners(elementToListenTo, _loadHandler, _errorHandler);\n};\n\nconst loadBackground = (element, settings, instance) => {\n addTempImage(element);\n addOneShotEventListeners(element, settings, instance);\n saveOriginalBackgroundStyle(element);\n setBackground(element, settings, instance);\n setMultiBackground(element, settings, instance);\n setImgsetBackground(element, settings, instance);\n};\n\nconst loadRegular = (element, settings, instance) => {\n addOneShotEventListeners(element, settings, instance);\n setSources(element, settings, instance);\n};\n\nconst load = (element, settings, instance) => {\n if (hasLoadEvent(element)) {\n loadRegular(element, settings, instance);\n } else {\n loadBackground(element, settings, instance);\n }\n};\n\nconst loadNative = (element, settings, instance) => {\n element.setAttribute(\"loading\", \"lazy\");\n addOneShotEventListeners(element, settings, instance);\n setSourcesNative(element, settings);\n setStatus(element, statusNative);\n};\n\nconst removeImageAttributes = (element) => {\n element.removeAttribute(SRC);\n element.removeAttribute(SRCSET);\n element.removeAttribute(SIZES);\n};\n\nconst resetSourcesImg = (element) => {\n forEachPictureSource(element, (sourceTag) => {\n removeImageAttributes(sourceTag);\n });\n removeImageAttributes(element);\n};\n\nconst restoreImg = (imgEl) => {\n forEachPictureSource(imgEl, (sourceEl) => {\n restoreOriginalAttrs(sourceEl, attrsSrcSrcsetSizes);\n });\n restoreOriginalAttrs(imgEl, attrsSrcSrcsetSizes);\n};\n\nconst restoreVideo = (videoEl) => {\n forEachVideoSource(videoEl, (sourceEl) => {\n restoreOriginalAttrs(sourceEl, attrsSrc);\n });\n restoreOriginalAttrs(videoEl, attrsSrcPoster);\n videoEl.load();\n};\n\nconst restoreIframe = (iframeEl) => {\n restoreOriginalAttrs(iframeEl, attrsSrc);\n};\n\nconst restoreObject = (objectEl) => {\n restoreOriginalAttrs(objectEl, attrsData);\n};\n\nconst restoreFunctions = {\n IMG: restoreImg,\n IFRAME: restoreIframe,\n VIDEO: restoreVideo,\n OBJECT: restoreObject\n};\n\nconst restoreAttributes = (element) => {\n const restoreFunction = restoreFunctions[element.tagName];\n if (!restoreFunction) {\n restoreOriginalBgImage(element);\n return;\n }\n restoreFunction(element);\n};\n\nconst resetClasses = (element, settings) => {\n if (hasEmptyStatus(element) || hasStatusNative(element)) {\n return;\n }\n removeClass(element, settings.class_entered);\n removeClass(element, settings.class_exited);\n removeClass(element, settings.class_applied);\n removeClass(element, settings.class_loading);\n removeClass(element, settings.class_loaded);\n removeClass(element, settings.class_error);\n};\n\nconst restore = (element, settings) => {\n restoreAttributes(element);\n resetClasses(element, settings);\n resetStatus(element);\n deleteOriginalAttrs(element);\n};\n\nconst cancelLoading = (element, entry, settings, instance) => {\n if (!settings.cancel_on_exit) return;\n if (!hasStatusLoading(element)) return;\n if (element.tagName !== \"IMG\") return; //Works only on images\n removeEventListeners(element);\n resetSourcesImg(element);\n restoreImg(element);\n removeClass(element, settings.class_loading);\n updateLoadingCount(instance, -1);\n resetStatus(element);\n safeCallback(settings.callback_cancel, element, entry, instance);\n};\n\nconst onEnter = (element, entry, settings, instance) => {\n const dontLoad = hadStartedLoading(element); /* Save status \n before setting it, to prevent loading it again. Fixes #526. */\n setStatus(element, statusEntered);\n addClass(element, settings.class_entered);\n removeClass(element, settings.class_exited);\n unobserveEntered(element, settings, instance);\n safeCallback(settings.callback_enter, element, entry, instance);\n if (dontLoad) return;\n load(element, settings, instance);\n};\n\nconst onExit = (element, entry, settings, instance) => {\n if (hasEmptyStatus(element)) return; //Ignore the first pass, at landing\n addClass(element, settings.class_exited);\n cancelLoading(element, entry, settings, instance);\n safeCallback(settings.callback_exit, element, entry, instance);\n};\n\nconst tagsWithNativeLazy = [\"IMG\", \"IFRAME\", \"VIDEO\"];\n\nconst shouldUseNative = (settings) =>\n settings.use_native && \"loading\" in HTMLImageElement.prototype;\n\nconst loadAllNative = (elements, settings, instance) => {\n elements.forEach((element) => {\n if (tagsWithNativeLazy.indexOf(element.tagName) === -1) {\n return;\n }\n loadNative(element, settings, instance);\n });\n setToLoadCount(instance, 0);\n};\n\nconst isIntersecting = (entry) => entry.isIntersecting || entry.intersectionRatio > 0;\n\nconst getObserverSettings = (settings) => ({\n root: settings.container === document ? null : settings.container,\n rootMargin: settings.thresholds || settings.threshold + \"px\"\n});\n\nconst intersectionHandler = (entries, settings, instance) => {\n entries.forEach((entry) =>\n isIntersecting(entry)\n ? onEnter(entry.target, entry, settings, instance)\n : onExit(entry.target, entry, settings, instance)\n );\n};\n\nconst observeElements = (observer, elements) => {\n elements.forEach((element) => {\n observer.observe(element);\n });\n};\n\nconst updateObserver = (observer, elementsToObserve) => {\n resetObserver(observer);\n observeElements(observer, elementsToObserve);\n};\n\nconst setObserver = (settings, instance) => {\n if (!supportsIntersectionObserver || shouldUseNative(settings)) {\n return;\n }\n instance._observer = new IntersectionObserver((entries) => {\n intersectionHandler(entries, settings, instance);\n }, getObserverSettings(settings));\n};\n\nconst toArray = (nodeSet) => Array.prototype.slice.call(nodeSet);\n\nconst queryElements = (settings) =>\n settings.container.querySelectorAll(settings.elements_selector);\n\nconst excludeManagedElements = (elements) => toArray(elements).filter(hasEmptyStatus);\n\nconst hasError = (element) => hasStatusError(element);\nconst filterErrorElements = (elements) => toArray(elements).filter(hasError);\n\nconst getElementsToLoad = (elements, settings) =>\n excludeManagedElements(elements || queryElements(settings));\n\nconst retryLazyLoad = (settings, instance) => {\n const errorElements = filterErrorElements(queryElements(settings));\n errorElements.forEach((element) => {\n removeClass(element, settings.class_error);\n resetStatus(element);\n });\n instance.update();\n};\n\nconst setOnlineCheck = (settings, instance) => {\n if (!runningOnBrowser) {\n return;\n }\n instance._onlineHandler = () => {\n retryLazyLoad(settings, instance);\n };\n window.addEventListener(\"online\", instance._onlineHandler);\n};\n\nconst resetOnlineCheck = (instance) => {\n if (!runningOnBrowser) {\n return;\n }\n window.removeEventListener(\"online\", instance._onlineHandler);\n};\n\nconst LazyLoad = function (customSettings, elements) {\n const settings = getExtendedSettings(customSettings);\n this._settings = settings;\n this.loadingCount = 0;\n setObserver(settings, this);\n setOnlineCheck(settings, this);\n this.update(elements);\n};\n\nLazyLoad.prototype = {\n update: function (givenNodeset) {\n const settings = this._settings;\n const elementsToLoad = getElementsToLoad(givenNodeset, settings);\n setToLoadCount(this, elementsToLoad.length);\n\n if (isBot || !supportsIntersectionObserver) {\n this.loadAll(elementsToLoad);\n return;\n }\n if (shouldUseNative(settings)) {\n loadAllNative(elementsToLoad, settings, this);\n return;\n }\n\n updateObserver(this._observer, elementsToLoad);\n },\n\n destroy: function () {\n // Observer\n if (this._observer) {\n this._observer.disconnect();\n }\n // Clean handlers\n resetOnlineCheck(this);\n // Clean custom attributes on elements\n queryElements(this._settings).forEach((element) => {\n deleteOriginalAttrs(element);\n });\n // Delete all internal props\n delete this._observer;\n delete this._settings;\n delete this._onlineHandler;\n delete this.loadingCount;\n delete this.toLoadCount;\n },\n\n loadAll: function (elements) {\n const settings = this._settings;\n const elementsToLoad = getElementsToLoad(elements, settings);\n elementsToLoad.forEach((element) => {\n unobserve(element, this);\n load(element, settings, this);\n });\n },\n\n restoreAll: function() {\n const settings = this._settings;\n queryElements(settings).forEach((element) => {\n restore(element, settings);\n });\n }\n};\n\nLazyLoad.load = (element, customSettings) => {\n const settings = getExtendedSettings(customSettings);\n load(element, settings);\n};\n\nLazyLoad.resetStatus = (element) => {\n resetStatus(element);\n};\n\n// Automatic instances creation if required (useful for async script loading)\nif (runningOnBrowser) {\n autoInitialize(LazyLoad, window.lazyLoadOptions);\n}\n\nexport { LazyLoad as default };\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n\tstatic targets = [\n\t\t'productKey',\n\t\t'key',\n\t\t'simple',\n\t\t'advanced',\n\t\t'form',\n\t\t'spinner',\n\t\t'usesimple',\n\t\t'useadvanced',\n\t\t'error',\n\t\t'more',\n\t\t'type',\n\t\t'alert',\n\t\t'iconClose',\n\t\t'iconCheck',\n\t\t'simpleTitle',\n\t\t'advancedTitle',\n\t\t'previousCompany',\n\t]\n\tprivate limit = 25\n\tdeclare readonly keyTarget: HTMLFormElement\n\tdeclare readonly productKeyTarget: HTMLInputElement\n\tdeclare readonly formTarget: HTMLElement\n\tdeclare readonly spinnerTarget: HTMLElement\n\tdeclare readonly simpleTarget: HTMLFormElement\n\tdeclare readonly advancedTarget: HTMLFormElement\n\tdeclare readonly usesimpleTarget: HTMLFormElement\n\tdeclare readonly useadvancedTarget: HTMLFormElement\n\tdeclare readonly errorTarget: HTMLElement\n\tdeclare readonly moreTarget: HTMLElement\n\tdeclare readonly typeTarget: HTMLInputElement\n\tdeclare readonly alertTarget: HTMLInputElement\n\tdeclare readonly iconCloseTarget: HTMLElement\n\tdeclare readonly iconCheckTarget: HTMLElement\n\tdeclare readonly simpleTitleTarget: HTMLElement\n\tdeclare readonly advancedTitleTarget: HTMLElement\n\tdeclare readonly previousCompanyTarget: HTMLElement\n\n\tconnect() {\n\t\tsetTimeout(() => {\n\t\t\tthis.handleCloseAlert()\n\t\t}, 30000)\n\t\tthis.handleInitProductKey()\n\t}\n\n\thandleSubmitForm() {\n\t\tif (this.spinnerTarget) {\n\t\t\tthis.spinnerTarget.classList.remove('is-hidden')\n\t\t}\n\t}\n\n\thandleChangeProductKey(e: Event) {\n\t\tconst t = e.target as HTMLInputElement\n\t\tconst { value } = t\n\t\tlet chars = [...value].filter(ch => ch !== '-')\n\t\tif (chars.length > this.limit) {\n\t\t\tchars = chars.slice(0, this.limit)\n\t\t}\n\t\tt.value = this.formatValue(chars)\n\t\tif (this.productKeyTarget) {\n\t\t\tthis.productKeyTarget.value = t.value\n\t\t}\n\t\tif (t.value.length === this.limit + 4) {\n\t\t\tthis.usesimpleTarget.removeAttribute('data-disabled')\n\t\t\tthis.useadvancedTarget.removeAttribute('data-disabled')\n\t\t\tif (!this.errorTarget.classList.contains('hidden')) {\n\t\t\t\tthis.errorTarget.classList.add('hidden')\n\t\t\t}\n\t\t\tthis.keyTarget.classList.add('success')\n\t\t\tthis.keyTarget.classList.remove('error')\n\t\t\tthis.showCheckIcon()\n\t\t}\n\t\tif (t.value.length !== this.limit + 4) {\n\t\t\tthis.usesimpleTarget.setAttribute('data-disabled', '')\n\t\t\tthis.useadvancedTarget.setAttribute('data-disabled', '')\n\t\t}\n\t}\n\n\thandleBlurProductKey(e: Event) {\n\t\tconst t = e.target as HTMLInputElement\n\t\tif (\n\t\t\tt.value.length === this.limit + 4 &&\n\t\t\t!this.errorTarget.classList.contains('hidden')\n\t\t) {\n\t\t\tthis.errorTarget.classList.add('hidden')\n\t\t\tthis.keyTarget.classList.remove('error')\n\t\t\tthis.keyTarget.classList.add('success')\n\t\t\tthis.showCheckIcon()\n\t\t}\n\t\tif (t.value.length !== this.limit + 4) {\n\t\t\tthis.errorTarget.classList.remove('hidden')\n\t\t\tthis.keyTarget.classList.add('error')\n\t\t\tthis.keyTarget.classList.remove('success')\n\t\t\tthis.showCloseIcon()\n\t\t}\n\t\tif (this.productKeyTarget) {\n\t\t\tthis.productKeyTarget.value = t.value\n\t\t}\n\t}\n\n\thandleChangeUsed(e: Event) {\n\t\tconsole.log(this.previousCompanyTarget)\n\t\tif (!this.previousCompanyTarget) {\n\t\t\treturn\n\t\t}\n\t\tconst { value } = e.target as HTMLInputElement\n\t\tconsole.log(value.length > 0)\n\t\tif (value.length > 0) {\n\t\t\tthis.previousCompanyTarget.classList.remove('hidden')\n\t\t} else {\n\t\t\tif (!this.previousCompanyTarget.classList.contains('hidden')) {\n\t\t\t\tthis.previousCompanyTarget.classList.add('hidden')\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate handleInitProductKey() {\n\t\tif (!this.productKeyTarget) {\n\t\t\treturn\n\t\t}\n\t\tif (this.productKeyTarget.value.length === this.limit + 4) {\n\t\t\tthis.errorTarget.classList.add('hidden')\n\t\t\tthis.keyTarget.classList.remove('error')\n\t\t\tthis.keyTarget.classList.add('success')\n\t\t\tthis.showCheckIcon()\n\t\t}\n\t}\n\n\tprivate showCheckIcon() {\n\t\tthis.iconCheckTarget.classList.remove('hidden')\n\t\tif (!this.iconCloseTarget.classList.contains('hidden')) {\n\t\t\tthis.iconCloseTarget.classList.add('hidden')\n\t\t}\n\t}\n\n\tprivate showCloseIcon() {\n\t\tthis.iconCloseTarget.classList.remove('hidden')\n\t\tif (!this.iconCheckTarget.classList.contains('hidden')) {\n\t\t\tthis.iconCheckTarget.classList.add('hidden')\n\t\t}\n\t}\n\n\tprivate formatValue(chars: string[]) {\n\t\tlet result: string[] = []\n\t\tfor (let i = 0, { length } = chars; i < length; i++) {\n\t\t\tresult = [...result, chars[i]]\n\t\t\tif ((i + 1) % 5 === 0 && i < this.limit - 1) {\n\t\t\t\tresult = [...result, '-']\n\t\t\t}\n\t\t}\n\t\tconst res = result.join('')\n\t\treturn res.endsWith('-') ? res.substring(0, res.length - 1) : res\n\t}\n\n\thandleShowSimpleForm() {\n\t\tthis.formTarget.classList.remove('hidden')\n\t\tthis.simpleTarget.classList.remove('hidden')\n\t\tthis.simpleTitleTarget.classList.remove('hidden')\n\t\tif (!this.advancedTitleTarget.classList.contains('hidden')) {\n\t\t\tthis.advancedTitleTarget.classList.add('hidden')\n\t\t}\n\t\tif (!this.advancedTarget.classList.contains('hidden')) {\n\t\t\tthis.advancedTarget.classList.add('hidden')\n\t\t}\n\t\tif (this.moreTarget.classList.contains('hidden')) {\n\t\t\tthis.moreTarget.classList.remove('hidden')\n\t\t}\n\t\tthis.typeTarget.value = 'simple'\n\t}\n\n\thandleShowAdvancedForm() {\n\t\tthis.formTarget.classList.remove('hidden')\n\t\tthis.simpleTarget.classList.remove('hidden')\n\t\tthis.simpleTitleTarget.classList.add('hidden')\n\t\tthis.advancedTitleTarget.classList.remove('hidden')\n\t\tthis.advancedTarget.classList.remove('hidden')\n\t\tif (!this.moreTarget.classList.contains('hidden')) {\n\t\t\tthis.moreTarget.classList.add('hidden')\n\t\t}\n\t\tthis.typeTarget.value = 'advanced'\n\t}\n\n\thandleShowAdvanced() {\n\t\tthis.advancedTarget.classList.remove('hidden')\n\t\tthis.simpleTitleTarget.classList.add('hidden')\n\t\tthis.advancedTitleTarget.classList.remove('hidden')\n\t\tif (!this.moreTarget.classList.contains('hidden')) {\n\t\t\tthis.moreTarget.classList.add('hidden')\n\t\t}\n\t\tthis.typeTarget.value = 'advanced'\n\t}\n\n\thandleCloseAlert() {\n\t\tif (!this.alertTarget) {\n\t\t\treturn\n\t\t}\n\t\tthis.alertTarget.parentNode?.removeChild(this.alertTarget)\n\t\twindow.history.pushState({}, '', '/')\n\t}\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n\tstatic targets = ['select']\n\n\tdeclare readonly selectTarget: HTMLSelectElement\n\n\thandleChangeLang(e: Event) {\n\t\tconst { value } = e.target as HTMLOptionElement\n\t\twindow.location.replace('/' + value)\n\t}\n}\n","import { Controller, ActionEvent } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n\tprivate readonly MODAL_NAME_PARAM = 'data-modal-name-param'\n\n\tstatic targets = ['modal', 'modal-handler']\n\n\tdeclare readonly modalTargets: HTMLElement[]\n\tdeclare readonly modalHandlerTargets: HTMLElement[]\n\n\tconnect() {\n\t\tthis.openOnLoad()\n\t}\n\n\tprivate openOnLoad() {\n\t\tif (!window.location.hash.length) {\n\t\t\treturn\n\t\t}\n\t\tconst modal = this.findModal(window.location.hash.substring(1))\n\t\tif (!modal) {\n\t\t\treturn\n\t\t}\n\t\tif (modal.classList.contains('is-hidden')) {\n\t\t\tmodal.classList.remove('is-hidden')\n\t\t}\n\t}\n\n\thandleOpen(e: ActionEvent) {\n\t\tconst modal = this.findModal(e.params.name)\n\t\tif (!modal) {\n\t\t\treturn\n\t\t}\n\t\tif (modal.classList.contains('is-hidden')) {\n\t\t\tmodal.classList.remove('is-hidden')\n\t\t\twindow.location.hash = modal.getAttribute(this.MODAL_NAME_PARAM) || ''\n\t\t}\n\t}\n\n\thandleClose(e: ActionEvent) {\n\t\tconst modal = this.findModal(e.params.name)\n\t\tif (!modal) {\n\t\t\treturn\n\t\t}\n\t\tif (!modal.classList.contains('is-hidden')) {\n\t\t\tmodal.classList.add('is-hidden')\n\t\t\twindow.location.hash = ''\n\t\t}\n\t}\n\n\tprivate findModal(name: string) {\n\t\treturn Array.from(this.modalTargets).find(\n\t\t\tm => m.getAttribute(this.MODAL_NAME_PARAM) === name,\n\t\t)\n\t}\n}\n","import type { Event } from './types'\n\nexport abstract class Component {\n\tprotected constructor(private events: Event[] = []) {}\n\n\tprotected event = (element: any, type: string, listener: any) => {\n\t\tthis.events = this.events.filter(event => {\n\t\t\tif (event.element === element && event.type === type && String(event.listener) === String(listener)) {\n\t\t\t\tevent.element.removeEventListener(event.type, event.listener)\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t})\n\n\t\tthis.events.push({ element, type, listener })\n\n\t\telement.addEventListener(type, listener)\n\t}\n}\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\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 && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var 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 {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar 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 * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\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 */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\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 */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\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 (var 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 for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\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 * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n 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 * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\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 * @return {string} content value without BOM\n */\nfunction 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\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\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} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.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 * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction 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 var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","'use strict';\n\nvar utils = require('./../utils');\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 * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\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 */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: 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 */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\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 */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\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 * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\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: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar 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// eslint-disable-next-line func-names\n].forEach(function(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 = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\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 */\nmodule.exports = function settle(resolve, reject, response) {\n var 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\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.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 var 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 var 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);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = 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 * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\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 * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\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} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.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 var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var 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 var 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 var 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);\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var 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) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var 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 var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: 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, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var 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 (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\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', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : 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 if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].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);\n });\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\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\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n 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 setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\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: require('./env/FormData')\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\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\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();\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 * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = 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 response.data,\n response.headers,\n config.transformResponse\n );\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 reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\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 * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(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(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var 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 };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\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 * @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 function(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 * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\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 var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var 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\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(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 {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function 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 // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\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 // filter out skipped interceptors\n var requestInterceptorChain = [];\n var 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 var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\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: method,\n url: 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: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(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) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function 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\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var 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 */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\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 * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\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\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/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};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","module.exports = require('./lib/axios');","/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress\n * @license MIT */\n\n;(function(root, factory) {\n\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.NProgress = factory();\n }\n\n})(this, function() {\n var NProgress = {};\n\n NProgress.version = '0.2.0';\n\n var Settings = NProgress.settings = {\n minimum: 0.08,\n easing: 'ease',\n positionUsing: '',\n speed: 200,\n trickle: true,\n trickleRate: 0.02,\n trickleSpeed: 800,\n showSpinner: true,\n barSelector: '[role=\"bar\"]',\n spinnerSelector: '[role=\"spinner\"]',\n parent: 'body',\n template: '
'\n };\n\n /**\n * Updates configuration.\n *\n * NProgress.configure({\n * minimum: 0.1\n * });\n */\n NProgress.configure = function(options) {\n var key, value;\n for (key in options) {\n value = options[key];\n if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value;\n }\n\n return this;\n };\n\n /**\n * Last number.\n */\n\n NProgress.status = null;\n\n /**\n * Sets the progress bar status, where `n` is a number from `0.0` to `1.0`.\n *\n * NProgress.set(0.4);\n * NProgress.set(1.0);\n */\n\n NProgress.set = function(n) {\n var started = NProgress.isStarted();\n\n n = clamp(n, Settings.minimum, 1);\n NProgress.status = (n === 1 ? null : n);\n\n var progress = NProgress.render(!started),\n bar = progress.querySelector(Settings.barSelector),\n speed = Settings.speed,\n ease = Settings.easing;\n\n progress.offsetWidth; /* Repaint */\n\n queue(function(next) {\n // Set positionUsing if it hasn't already been set\n if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS();\n\n // Add transition\n css(bar, barPositionCSS(n, speed, ease));\n\n if (n === 1) {\n // Fade out\n css(progress, { \n transition: 'none', \n opacity: 1 \n });\n progress.offsetWidth; /* Repaint */\n\n setTimeout(function() {\n css(progress, { \n transition: 'all ' + speed + 'ms linear', \n opacity: 0 \n });\n setTimeout(function() {\n NProgress.remove();\n next();\n }, speed);\n }, speed);\n } else {\n setTimeout(next, speed);\n }\n });\n\n return this;\n };\n\n NProgress.isStarted = function() {\n return typeof NProgress.status === 'number';\n };\n\n /**\n * Shows the progress bar.\n * This is the same as setting the status to 0%, except that it doesn't go backwards.\n *\n * NProgress.start();\n *\n */\n NProgress.start = function() {\n if (!NProgress.status) NProgress.set(0);\n\n var work = function() {\n setTimeout(function() {\n if (!NProgress.status) return;\n NProgress.trickle();\n work();\n }, Settings.trickleSpeed);\n };\n\n if (Settings.trickle) work();\n\n return this;\n };\n\n /**\n * Hides the progress bar.\n * This is the *sort of* the same as setting the status to 100%, with the\n * difference being `done()` makes some placebo effect of some realistic motion.\n *\n * NProgress.done();\n *\n * If `true` is passed, it will show the progress bar even if its hidden.\n *\n * NProgress.done(true);\n */\n\n NProgress.done = function(force) {\n if (!force && !NProgress.status) return this;\n\n return NProgress.inc(0.3 + 0.5 * Math.random()).set(1);\n };\n\n /**\n * Increments by a random amount.\n */\n\n NProgress.inc = function(amount) {\n var n = NProgress.status;\n\n if (!n) {\n return NProgress.start();\n } else {\n if (typeof amount !== 'number') {\n amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95);\n }\n\n n = clamp(n + amount, 0, 0.994);\n return NProgress.set(n);\n }\n };\n\n NProgress.trickle = function() {\n return NProgress.inc(Math.random() * Settings.trickleRate);\n };\n\n /**\n * Waits for all supplied jQuery promises and\n * increases the progress as the promises resolve.\n *\n * @param $promise jQUery Promise\n */\n (function() {\n var initial = 0, current = 0;\n\n NProgress.promise = function($promise) {\n if (!$promise || $promise.state() === \"resolved\") {\n return this;\n }\n\n if (current === 0) {\n NProgress.start();\n }\n\n initial++;\n current++;\n\n $promise.always(function() {\n current--;\n if (current === 0) {\n initial = 0;\n NProgress.done();\n } else {\n NProgress.set((initial - current) / initial);\n }\n });\n\n return this;\n };\n\n })();\n\n /**\n * (Internal) renders the progress bar markup based on the `template`\n * setting.\n */\n\n NProgress.render = function(fromStart) {\n if (NProgress.isRendered()) return document.getElementById('nprogress');\n\n addClass(document.documentElement, 'nprogress-busy');\n \n var progress = document.createElement('div');\n progress.id = 'nprogress';\n progress.innerHTML = Settings.template;\n\n var bar = progress.querySelector(Settings.barSelector),\n perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0),\n parent = document.querySelector(Settings.parent),\n spinner;\n \n css(bar, {\n transition: 'all 0 linear',\n transform: 'translate3d(' + perc + '%,0,0)'\n });\n\n if (!Settings.showSpinner) {\n spinner = progress.querySelector(Settings.spinnerSelector);\n spinner && removeElement(spinner);\n }\n\n if (parent != document.body) {\n addClass(parent, 'nprogress-custom-parent');\n }\n\n parent.appendChild(progress);\n return progress;\n };\n\n /**\n * Removes the element. Opposite of render().\n */\n\n NProgress.remove = function() {\n removeClass(document.documentElement, 'nprogress-busy');\n removeClass(document.querySelector(Settings.parent), 'nprogress-custom-parent');\n var progress = document.getElementById('nprogress');\n progress && removeElement(progress);\n };\n\n /**\n * Checks if the progress bar is rendered.\n */\n\n NProgress.isRendered = function() {\n return !!document.getElementById('nprogress');\n };\n\n /**\n * Determine which positioning CSS rule to use.\n */\n\n NProgress.getPositioningCSS = function() {\n // Sniff on document.body.style\n var bodyStyle = document.body.style;\n\n // Sniff prefixes\n var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' :\n ('MozTransform' in bodyStyle) ? 'Moz' :\n ('msTransform' in bodyStyle) ? 'ms' :\n ('OTransform' in bodyStyle) ? 'O' : '';\n\n if (vendorPrefix + 'Perspective' in bodyStyle) {\n // Modern browsers with 3D support, e.g. Webkit, IE10\n return 'translate3d';\n } else if (vendorPrefix + 'Transform' in bodyStyle) {\n // Browsers without 3D support, e.g. IE9\n return 'translate';\n } else {\n // Browsers without translate() support, e.g. IE7-8\n return 'margin';\n }\n };\n\n /**\n * Helpers\n */\n\n function clamp(n, min, max) {\n if (n < min) return min;\n if (n > max) return max;\n return n;\n }\n\n /**\n * (Internal) converts a percentage (`0..1`) to a bar translateX\n * percentage (`-100%..0%`).\n */\n\n function toBarPerc(n) {\n return (-1 + n) * 100;\n }\n\n\n /**\n * (Internal) returns the correct CSS for changing the bar's\n * position given an n percentage, and speed and ease from Settings\n */\n\n function barPositionCSS(n, speed, ease) {\n var barCSS;\n\n if (Settings.positionUsing === 'translate3d') {\n barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' };\n } else if (Settings.positionUsing === 'translate') {\n barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' };\n } else {\n barCSS = { 'margin-left': toBarPerc(n)+'%' };\n }\n\n barCSS.transition = 'all '+speed+'ms '+ease;\n\n return barCSS;\n }\n\n /**\n * (Internal) Queues a function to be executed.\n */\n\n var queue = (function() {\n var pending = [];\n \n function next() {\n var fn = pending.shift();\n if (fn) {\n fn(next);\n }\n }\n\n return function(fn) {\n pending.push(fn);\n if (pending.length == 1) next();\n };\n })();\n\n /**\n * (Internal) Applies css properties to an element, similar to the jQuery \n * css method.\n *\n * While this helper does assist with vendor prefixed property names, it \n * does not perform any manipulation of values prior to setting styles.\n */\n\n var css = (function() {\n var cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ],\n cssProps = {};\n\n function camelCase(string) {\n return string.replace(/^-ms-/, 'ms-').replace(/-([\\da-z])/gi, function(match, letter) {\n return letter.toUpperCase();\n });\n }\n\n function getVendorProp(name) {\n var style = document.body.style;\n if (name in style) return name;\n\n var i = cssPrefixes.length,\n capName = name.charAt(0).toUpperCase() + name.slice(1),\n vendorName;\n while (i--) {\n vendorName = cssPrefixes[i] + capName;\n if (vendorName in style) return vendorName;\n }\n\n return name;\n }\n\n function getStyleProp(name) {\n name = camelCase(name);\n return cssProps[name] || (cssProps[name] = getVendorProp(name));\n }\n\n function applyCss(element, prop, value) {\n prop = getStyleProp(prop);\n element.style[prop] = value;\n }\n\n return function(element, properties) {\n var args = arguments,\n prop, \n value;\n\n if (args.length == 2) {\n for (prop in properties) {\n value = properties[prop];\n if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value);\n }\n } else {\n applyCss(element, args[1], args[2]);\n }\n }\n })();\n\n /**\n * (Internal) Determines if an element or space separated list of class names contains a class name.\n */\n\n function hasClass(element, name) {\n var list = typeof element == 'string' ? element : classList(element);\n return list.indexOf(' ' + name + ' ') >= 0;\n }\n\n /**\n * (Internal) Adds a class to an element.\n */\n\n function addClass(element, name) {\n var oldList = classList(element),\n newList = oldList + name;\n\n if (hasClass(oldList, name)) return; \n\n // Trim the opening space.\n element.className = newList.substring(1);\n }\n\n /**\n * (Internal) Removes a class from an element.\n */\n\n function removeClass(element, name) {\n var oldList = classList(element),\n newList;\n\n if (!hasClass(element, name)) return;\n\n // Replace the class name.\n newList = oldList.replace(' ' + name + ' ', ' ');\n\n // Trim the opening and closing spaces.\n element.className = newList.substring(1, newList.length - 1);\n }\n\n /**\n * (Internal) Gets a space separated list of the class names on the element. \n * The list is wrapped with a single space on each end to facilitate finding \n * matches within the list.\n */\n\n function classList(element) {\n return (' ' + (element.className || '') + ' ').replace(/\\s+/gi, ' ');\n }\n\n /**\n * (Internal) Removes an element from the DOM.\n */\n\n function removeElement(element) {\n element && element.parentNode && element.parentNode.removeChild(element);\n }\n\n return NProgress;\n});\n\n","import axios from 'axios'\nimport NProgress from 'nprogress'\n\nimport type { Redraw, ActionResponse, ErrorResponse } from './types'\nimport { Component } from './component'\n\ndeclare global {\n\tinterface Window {\n\t\tlangCode: string\n\t}\n}\n\nexport class Action extends Component {\n\tredrawCallback: (() => void) | null = null\n\n\tconstructor() {\n\t\tsuper()\n\t\tNProgress.configure({ showSpinner: false })\n\t}\n\n\tprivate redraw(redraw: Redraw) {\n\t\tconst keys = Object.keys(redraw)\n\t\tconst values = Object.values(redraw)\n\t\tfor (let r = 0, { length } = keys; r < length; r++) {\n\t\t\tconst key = keys[r]\n\t\t\tconst value = values[r]\n\t\t\tconst parser = new DOMParser()\n\t\t\tconst controls = document.querySelectorAll(`[id=\"${key}\"]`)\n\t\t\tfor (let i = 0, controlLen = controls.length; i < controlLen; i++) {\n\t\t\t\tconst html = parser.parseFromString(value.html, 'text/html')\n\t\t\t\tconst elements = Array.from(html.body.children)\n\t\t\t\tconst control = controls[i]\n\t\t\t\tif (control) {\n\t\t\t\t\tif (value.mode === 'replace') {\n\t\t\t\t\t\tcontrol.parentNode?.replaceChild(html.body.childNodes[0], control)\n\t\t\t\t\t}\n\t\t\t\t\tif (value.mode === 'append') {\n\t\t\t\t\t\tfor (let j = 0, childrenLen = elements.length; j < childrenLen; j++) {\n\t\t\t\t\t\t\tcontrol.appendChild(elements[j])\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (value.mode === 'append-multiple') {\n\t\t\t\t\t\tconst el = html.body.childNodes[0] as HTMLElement\n\t\t\t\t\t\tfor (let j = 0, childrenLen = el.children.length; j < childrenLen; j++) {\n\t\t\t\t\t\t\tcontrol.appendChild(el.children[j])\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (value.mode === 'discard') {\n\t\t\t\t\t\tconst subcontrol = control.querySelector(`[data-gowl-subcontrol=\"${value.sub}\"]`)\n\t\t\t\t\t\tif (subcontrol) {\n\t\t\t\t\t\t\tsubcontrol.parentNode?.removeChild(subcontrol)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (this.redrawCallback) {\n\t\t\tthis.redrawCallback()\n\t\t}\n\t\tdispatchEvent(new CustomEvent('on:redraw'))\n\t}\n\n\tprivate buildChangeUrl(el: HTMLInputElement) {\n\t\tlet url = el.getAttribute('data-href') || ''\n\t\tif (typeof el.getAttribute('data-query') !== 'undefined') {\n\t\t\treturn url + window.location.search\n\t\t}\n\t\tconst shouldChecked = el.getAttribute('type') === 'checkbox'\n\t\tif (shouldChecked) {\n\t\t\turl += `&checked=${el.checked}`\n\t\t} else {\n\t\t\turl += `&value=${el.value}`\n\t\t}\n\t\tconst search = window.location.search.replace('?', '')\n\t\tif (search) {\n\t\t\turl += `&${search}`\n\t\t}\n\t\treturn url\n\t}\n\n\tprivate handleRedirect(path: string) {\n\t\tif (path === 'this') {\n\t\t\twindow.location.reload()\n\t\t\treturn\n\t\t}\n\t\twindow.location.replace(path)\n\t}\n\n\tprivate getFormJSON(form: HTMLFormElement) {\n\t\tif (!form) {\n\t\t\treturn {}\n\t\t}\n\n\t\tconst fields = Array.from(form.querySelectorAll('[name]'))\n\t\tconst result = {} as { [key: string]: any }\n\n\t\tfor (let i = 0, { length } = fields; i < length; i++) {\n\t\t\tconst field = fields[i]\n\t\t\tconst name = field.getAttribute('name')\n\t\t\tif (!name) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tconst fieldset = field.closest('fieldset')\n\t\t\tif (fieldset && field instanceof HTMLInputElement && field.getAttribute('type') === 'checkbox') {\n\t\t\t\tconst groupName = fieldset.getAttribute('name') || ''\n\t\t\t\tconst hasParent = name.indexOf(':') > -1\n\t\t\t\tif (hasParent) {\n\t\t\t\t\tif (!result[groupName]) {\n\t\t\t\t\t\tresult[groupName] = {}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst parts = name.split(':')\n\t\t\t\t\tif (parts.length == 2) {\n\t\t\t\t\t\tconst key = parts[0]\n\t\t\t\t\t\tconst value = parts[1]\n\t\t\t\t\t\tconst isKeyNumber = !isNaN(Number(key)) && key.length > 0\n\t\t\t\t\t\tconst isValueNumber = !isNaN(Number(value)) && value.length > 0\n\t\t\t\t\t\tif (!result[groupName][isKeyNumber ? Number(key) : key]) {\n\t\t\t\t\t\t\tresult[groupName] = {\n\t\t\t\t\t\t\t\t...result[groupName],\n\t\t\t\t\t\t\t\t[isKeyNumber ? Number(key) : key]: [],\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (field.checked) {\n\t\t\t\t\t\t\tresult[groupName] = {\n\t\t\t\t\t\t\t\t...result[groupName],\n\t\t\t\t\t\t\t\t[isKeyNumber ? Number(key) : key]: [\n\t\t\t\t\t\t\t\t\t...result[groupName][isKeyNumber ? Number(key) : key],\n\t\t\t\t\t\t\t\t\tisValueNumber ? Number(value) : value,\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!hasParent) {\n\t\t\t\t\tif (!result[groupName]) {\n\t\t\t\t\t\tresult[groupName] = []\n\t\t\t\t\t}\n\t\t\t\t\tconst isNumber = !isNaN(Number(field.value)) && field.value.length > 0\n\t\t\t\t\tif (field.checked) {\n\t\t\t\t\t\tresult[groupName] = [...result[groupName], isNumber ? Number(field.value) : field.value]\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (field instanceof HTMLTextAreaElement) {\n\t\t\t\tresult[name] = field.value\n\t\t\t}\n\t\t\tif (field instanceof HTMLInputElement) {\n\t\t\t\tconst type = field.getAttribute('type')\n\t\t\t\tif (type === 'checkbox') {\n\t\t\t\t\tresult[name] = field.checked\n\t\t\t\t}\n\t\t\t\tif (type === 'radio' && field.checked) {\n\t\t\t\t\tconst isNumber = !isNaN(Number(field.value)) && field.value.length > 0\n\t\t\t\t\tresult[name] = isNumber ? Number(field.value) : field.value\n\t\t\t\t}\n\t\t\t\tif (type === 'hidden' && field.getAttribute('data-multiselect-value') !== null) {\n\t\t\t\t\tconst formObjectName = field.getAttribute('data-form-object')\n\t\t\t\t\tif (formObjectName) {\n\t\t\t\t\t\tconst objectName = field.name.replace(formObjectName, '').toLowerCase()\n\t\t\t\t\t\tif (!result[formObjectName]) {\n\t\t\t\t\t\t\tresult[formObjectName] = {}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult[formObjectName][objectName] = field.value\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult[name] = field.value\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (type !== 'checkbox' && type !== 'radio' && type !== 'hidden') {\n\t\t\t\t\tconst isNumber = !isNaN(Number(field.value)) && field.value.length > 0 && type === 'number'\n\t\t\t\t\tresult[name] = isNumber ? Number(field.value) : field.value\n\t\t\t\t}\n\t\t\t\tif (type === 'hidden' && field.getAttribute('data-multiselect-value') === null) {\n\t\t\t\t\tconst isNumber = !isNaN(Number(field.value)) && field.value.length > 0\n\t\t\t\t\tconst isBoolean = !!field.getAttribute('data-equal')\n\t\t\t\t\tif (isNumber) {\n\t\t\t\t\t\tresult[name] = Number(field.value)\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tif (isBoolean) {\n\t\t\t\t\t\tresult[name] = field.getAttribute('data-equal') === field.value\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tresult[name] = field.value\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result\n\t}\n\n\tmanual(action: string, data: any) {\n\t\tNProgress.start()\n\t\tdispatchEvent(new CustomEvent('on:start'))\n\t\treturn axios\n\t\t\t.post(`/${window.langCode}${action}`, data)\n\t\t\t.then(({ data }) => {\n\t\t\t\tif (data) {\n\t\t\t\t\tif (data.redraw) {\n\t\t\t\t\t\tthis.redraw(data.redraw)\n\t\t\t\t\t\tthis.init()\n\t\t\t\t\t}\n\t\t\t\t\tif (data.redirect) {\n\t\t\t\t\t\tthis.handleRedirect(data.redirect)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdispatchEvent(new CustomEvent('on:complete'))\n\t\t\t\tNProgress.done()\n\t\t\t})\n\t\t\t.catch((err: ErrorResponse) => {\n\t\t\t\tif (err.response?.data) {\n\t\t\t\t\tconst { redraw } = err.response.data\n\t\t\t\t\tif (redraw) {\n\t\t\t\t\t\tthis.redraw(redraw)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdispatchEvent(new CustomEvent('on:complete'))\n\t\t\t\tNProgress.done()\n\t\t\t})\n\t}\n\n\tprivate handleForm(el: HTMLFormElement) {\n\t\tthis.event(el, 'submit', e => {\n\t\t\tNProgress.start()\n\t\t\tdispatchEvent(new CustomEvent('on:start'))\n\t\t\te.preventDefault()\n\t\t\taxios\n\t\t\t\t.post(el.action, this.getFormJSON(el))\n\t\t\t\t.then(({ data }) => {\n\t\t\t\t\tif (data) {\n\t\t\t\t\t\tif (data.redraw) {\n\t\t\t\t\t\t\tthis.redraw(data.redraw)\n\t\t\t\t\t\t\tthis.init()\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.redirect) {\n\t\t\t\t\t\t\tthis.handleRedirect(data.redirect)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdispatchEvent(new CustomEvent('on:complete'))\n\t\t\t\t\tNProgress.done()\n\t\t\t\t})\n\t\t\t\t.catch((err: ErrorResponse) => {\n\t\t\t\t\tif (err.response?.data) {\n\t\t\t\t\t\tconst { redraw } = err.response.data\n\t\t\t\t\t\tif (redraw) {\n\t\t\t\t\t\t\tthis.redraw(redraw)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdispatchEvent(new CustomEvent('on:complete'))\n\t\t\t\t\tNProgress.done()\n\t\t\t\t})\n\t\t})\n\t}\n\n\tprivate handleClick(el: HTMLElement) {\n\t\tthis.event(el, 'click', e => {\n\t\t\tNProgress.start()\n\t\t\tdispatchEvent(new CustomEvent('on:start'))\n\t\t\te.stopPropagation()\n\t\t\te.preventDefault()\n\t\t\taxios\n\t\t\t\t.post(el.getAttribute('href') || el.getAttribute('data-href') || '')\n\t\t\t\t.then(({ data }) => {\n\t\t\t\t\tif (data) {\n\t\t\t\t\t\tif (data.redraw) {\n\t\t\t\t\t\t\tthis.redraw(data.redraw)\n\t\t\t\t\t\t\tthis.init()\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.redirect) {\n\t\t\t\t\t\t\tthis.handleRedirect(data.redirect)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdispatchEvent(new CustomEvent('on:complete'))\n\t\t\t\t\tNProgress.done()\n\t\t\t\t})\n\t\t\t\t.catch((err: ErrorResponse) => {\n\t\t\t\t\tif (err.response?.data) {\n\t\t\t\t\t\tconst { redraw } = err.response.data\n\t\t\t\t\t\tif (redraw) {\n\t\t\t\t\t\t\tthis.redraw(redraw)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdispatchEvent(new CustomEvent('on:complete'))\n\t\t\t\t\tNProgress.done()\n\t\t\t\t})\n\t\t})\n\t}\n\n\tprivate handleChange(el: HTMLInputElement) {\n\t\tthis.event(el, 'change', e => {\n\t\t\tNProgress.start()\n\t\t\tdispatchEvent(new CustomEvent('on:start'))\n\t\t\te.preventDefault()\n\t\t\tsetTimeout(() => {\n\t\t\t\taxios\n\t\t\t\t\t.post(this.buildChangeUrl(el as HTMLInputElement), {\n\t\t\t\t\t\tvalue: el.value,\n\t\t\t\t\t})\n\t\t\t\t\t.then(({ data }) => {\n\t\t\t\t\t\tif (data) {\n\t\t\t\t\t\t\tif (data.redraw) {\n\t\t\t\t\t\t\t\tthis.redraw(data.redraw)\n\t\t\t\t\t\t\t\tthis.init()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (data.redirect) {\n\t\t\t\t\t\t\t\tthis.handleRedirect(data.redirect)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdispatchEvent(new CustomEvent('on:complete'))\n\t\t\t\t\t\tNProgress.done()\n\t\t\t\t\t})\n\t\t\t\t\t.catch((err: ErrorResponse) => {\n\t\t\t\t\t\tif (err.response?.data) {\n\t\t\t\t\t\t\tconst { redraw } = err.response.data\n\t\t\t\t\t\t\tif (redraw) {\n\t\t\t\t\t\t\t\tthis.redraw(redraw)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdispatchEvent(new CustomEvent('on:complete'))\n\t\t\t\t\t\tNProgress.done()\n\t\t\t\t\t})\n\t\t\t}, 250)\n\t\t})\n\t}\n\n\tprivate initClicks() {\n\t\tconst clicks = document.querySelectorAll('a[data-action],button[data-action]')\n\t\tfor (let i = 0, { length } = clicks; i < length; i++) {\n\t\t\tconst click = clicks[i]\n\t\t\tthis.handleClick(click)\n\t\t}\n\t}\n\n\tprivate initChanges() {\n\t\tconst targets = document.querySelectorAll('[data-action=\"change\"]')\n\t\tfor (let i = 0, { length } = targets; i < length; i++) {\n\t\t\tconst target = targets[i]\n\t\t\tthis.handleChange(target)\n\t\t}\n\t}\n\n\tprivate initForms() {\n\t\tconst forms = document.querySelectorAll('form')\n\t\tfor (let i = 0, { length } = forms; i < length; i++) {\n\t\t\tconst form = forms[i]\n\t\t\tthis.handleForm(form)\n\t\t}\n\t}\n\n\tinit() {\n\t\tthis.initForms()\n\t\tthis.initClicks()\n\t\tthis.initChanges()\n\n\t\tthis.event(window, 'dispatch:redraw', (e: Event) => {\n\t\t\tconst event = e as CustomEvent\n\t\t\tif (event.detail.redraw) {\n\t\t\t\tthis.redraw(event.detail.redraw)\n\t\t\t}\n\t\t\tif (event.detail.redirect) {\n\t\t\t\tthis.handleRedirect(event.detail.redirect)\n\t\t\t}\n\t\t})\n\t}\n}\n","import { Component } from './component'\nimport { Action } from './action'\n\ndeclare global {\n\tinterface Window {\n\t\ttrackCookies: {\n\t\t\tallowed: {\n\t\t\t\ttech: boolean\n\t\t\t\tanalytic: boolean\n\t\t\t\tpreference: boolean\n\t\t\t\tmarketing: boolean\n\t\t\t}\n\t\t\tused: boolean\n\t\t}\n\t}\n}\n\nexport class CookieBar extends Component {\n\tprotected action = new Action()\n\n\tconstructor() {\n\t\tsuper()\n\t}\n\n\tprivate getCookies() {\n\t\treturn document.querySelector('[data-cookies]')\n\t}\n\n\tprivate getCookiesContent() {\n\t\treturn document.querySelector('[data-cookies-content]')\n\t}\n\n\tprivate getCookiesSettings() {\n\t\treturn document.querySelector('[data-cookies-settings]')\n\t}\n\n\tprivate getAllowHandlers() {\n\t\treturn document.querySelectorAll(\n\t\t\t'[data-cookies-allow-handler]',\n\t\t)\n\t}\n\n\tprivate getSettingsHandler() {\n\t\treturn document.querySelector(\n\t\t\t'[data-cookies-settings-handler]',\n\t\t)\n\t}\n\n\tprivate getSelectionHandler() {\n\t\treturn document.querySelector(\n\t\t\t'[data-cookies-selection-handler]',\n\t\t)\n\t}\n\n\tprivate getBasicHandler() {\n\t\treturn document.querySelector('[data-cookies-allow-basic]')\n\t}\n\n\tprivate getAnalyticCookie() {\n\t\treturn document.querySelector('[data-cookies-analytic]')\n\t}\n\n\tprivate getPreferenceCookie() {\n\t\treturn document.querySelector('[data-cookies-preference]')\n\t}\n\n\tprivate getMarketingCookie() {\n\t\treturn document.querySelector('[data-cookies-marketing]')\n\t}\n\n\tprivate initSettingsHandler() {\n\t\tthis.getSettingsHandler()?.addEventListener('click', () => {\n\t\t\tthis.getCookiesContent()?.setAttribute('style', 'display: none;')\n\t\t\tthis.getCookiesSettings()?.removeAttribute('style')\n\t\t})\n\t}\n\n\tprivate initSelectionHandler() {\n\t\tthis.getSelectionHandler()?.addEventListener('click', async () => {\n\t\t\tthis.getCookies()?.setAttribute('style', 'display: none;')\n\t\t\tthis.getCookiesContent()?.setAttribute('style', 'display: none;')\n\t\t\tthis.getCookiesSettings()?.setAttribute('style', 'display: none;')\n\n\t\t\tthis.action.manual('/track', {\n\t\t\t\t...window.trackCookies,\n\t\t\t\tused: true,\n\t\t\t})\n\t\t})\n\t}\n\n\tprivate initBasicHandler() {\n\t\tthis.getBasicHandler()?.addEventListener('click', () => {\n\t\t\tthis.action.manual('/track', {\n\t\t\t\tallowed: {\n\t\t\t\t\ttech: true,\n\t\t\t\t\tanalytic: false,\n\t\t\t\t\tpreference: false,\n\t\t\t\t\tmarketing: false,\n\t\t\t\t},\n\t\t\t\tused: true,\n\t\t\t})\n\t\t})\n\t}\n\n\tprivate initAllowHandler() {\n\t\tthis.getAllowHandlers().forEach(item => {\n\t\t\titem.addEventListener('click', () => {\n\t\t\t\tconst analyticCookie = this.getAnalyticCookie()\n\t\t\t\tconst preferenceCookie = this.getPreferenceCookie()\n\t\t\t\tconst marketingCookie = this.getMarketingCookie()\n\n\t\t\t\tif (analyticCookie) {\n\t\t\t\t\tanalyticCookie.checked = true\n\t\t\t\t}\n\n\t\t\t\tif (preferenceCookie) {\n\t\t\t\t\tpreferenceCookie.checked = true\n\t\t\t\t}\n\n\t\t\t\tif (marketingCookie) {\n\t\t\t\t\tmarketingCookie.checked = true\n\t\t\t\t}\n\n\t\t\t\tthis.action.manual('/track', {\n\t\t\t\t\tallowed: {\n\t\t\t\t\t\ttech: true,\n\t\t\t\t\t\tanalytic: true,\n\t\t\t\t\t\tpreference: true,\n\t\t\t\t\t\tmarketing: true,\n\t\t\t\t\t},\n\t\t\t\t\tused: true,\n\t\t\t\t})\n\n\t\t\t\t// localStorage.setItem(\n\t\t\t\t// \tCOOKIES_KEY,\n\t\t\t\t// \tJSON.stringify({\n\t\t\t\t// \t\tallowed: {\n\t\t\t\t// \t\t\ttech: true,\n\t\t\t\t// \t\t\tanalytic: true,\n\t\t\t\t// \t\t\tpreference: true,\n\t\t\t\t// \t\t\tmarketing: true,\n\t\t\t\t// \t\t},\n\t\t\t\t// \t\tused: true,\n\t\t\t\t// \t}),\n\t\t\t\t// )\n\t\t\t\t// this.getCookies()?.setAttribute('style', 'display: none;')\n\t\t\t\t// window.location.reload()\n\t\t\t})\n\t\t})\n\t}\n\n\tprivate initAnalyticCookies() {\n\t\tthis.getAnalyticCookie()?.addEventListener('change', e => {\n\t\t\tconst t = e.target as HTMLInputElement\n\t\t\twindow.trackCookies = {\n\t\t\t\t...window.trackCookies,\n\t\t\t\tallowed: {\n\t\t\t\t\t...window.trackCookies.allowed,\n\t\t\t\t\tanalytic: t.checked,\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate initPreferenceCookies() {\n\t\tthis.getPreferenceCookie()?.addEventListener('change', e => {\n\t\t\tconst t = e.target as HTMLInputElement\n\t\t\twindow.trackCookies = {\n\t\t\t\t...window.trackCookies,\n\t\t\t\tallowed: {\n\t\t\t\t\t...window.trackCookies.allowed,\n\t\t\t\t\tpreference: t.checked,\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate initMarketingCookies() {\n\t\tthis.getMarketingCookie()?.addEventListener('change', e => {\n\t\t\tconst t = e.target as HTMLInputElement\n\t\t\twindow.trackCookies = {\n\t\t\t\t...window.trackCookies,\n\t\t\t\tallowed: {\n\t\t\t\t\t...window.trackCookies.allowed,\n\t\t\t\t\tmarketing: t.checked,\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\t}\n\n\tinit() {\n\t\tif (window.trackCookies.used) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!window.trackCookies.used) {\n\t\t\tthis.getCookies()?.removeAttribute('style')\n\t\t}\n\n\t\tthis.initAnalyticCookies()\n\t\tthis.initPreferenceCookies()\n\t\tthis.initMarketingCookies()\n\t\tthis.initSettingsHandler()\n\t\tthis.initSelectionHandler()\n\t\tthis.initBasicHandler()\n\t\tthis.initAllowHandler()\n\t}\n}\n","import { Component } from './component'\n\nexport class Scroller extends Component {\n\tconstructor() {\n\t\tsuper()\n\t}\n\n\tprivate getScrollAnchors() {\n\t\treturn Array.from(document.querySelectorAll('a')).filter(a =>\n\t\t\ta.getAttribute('href')?.startsWith('#'),\n\t\t)\n\t}\n\n\tprivate handleSmoothScroll(anchor: HTMLAnchorElement) {\n\t\tconst id = anchor.getAttribute('href')?.substring(1)\n\t\tif (!id) {\n\t\t\treturn\n\t\t}\n\n\t\tconst target = document.getElementById(id)\n\t\tif (!target) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.event(anchor, 'click', (e: Event) => {\n\t\t\te.preventDefault()\n\t\t\te.stopPropagation()\n\t\t\ttarget.scrollIntoView({ behavior: 'smooth', block: 'start' })\n\t\t})\n\t}\n\n\tprivate initSmoothScrolls() {\n\t\tfor (const anchor of this.getScrollAnchors()) {\n\t\t\tthis.handleSmoothScroll(anchor)\n\t\t}\n\t}\n\n\tinit() {\n\t\tthis.initSmoothScrolls()\n\t}\n}\n","import { Application } from '@hotwired/stimulus'\nimport Swiper from 'swiper'\nimport Lazyload from 'vanilla-lazyload'\n\nimport HomeController from './controller/home.controller'\nimport FormController from './controller/form.controller'\nimport LangController from './controller/lang.controller'\nimport ModalController from './controller/modal.controller'\nimport { CookieBar } from './cookie-bar'\nimport { Scroller } from './scroller'\n\ndeclare global {\n\tinterface Window {\n\t\tStimulus: Application\n\t}\n}\n\nwindow.Stimulus = Application.start()\nwindow.Stimulus.register('home', HomeController)\nwindow.Stimulus.register('form', FormController)\nwindow.Stimulus.register('lang', LangController)\nwindow.Stimulus.register('modal', ModalController)\n\ndocument.addEventListener('DOMContentLoaded', () => {\n\tconst lazyload = new Lazyload()\n\tconst cookieBar = new CookieBar()\n\tconst scroller = new Scroller()\n\tcookieBar.init()\n\tscroller.init()\n\n\tconst urls = new Swiper('.swiper-urls', {\n\t\tslidesPerView: 3,\n\t\tspaceBetween: 40,\n\t\tloop: true,\n\t\tautoplay: {\n\t\t\tdelay: 5000,\n\t\t\tdisableOnInteraction: true,\n\t\t},\n\t\tbreakpoints: {\n\t\t\t480: {\n\t\t\t\tslidesPerView: 1,\n\t\t\t\tspaceBetween: 20,\n\t\t\t},\n\t\t\t640: {\n\t\t\t\tslidesPerView: 2,\n\t\t\t\tspaceBetween: 20,\n\t\t\t},\n\t\t\t991: {\n\t\t\t\tslidesPerView: 3,\n\t\t\t\tspaceBetween: 30,\n\t\t\t},\n\t\t},\n\t})\n})\n"],"names":["EventListener","eventTarget","eventName","eventOptions","binding","event","extendedEvent","extendEvent","left","right","leftIndex","rightIndex","stopImmediatePropagation","Dispatcher","application","eventListener","listeners","map","error","message","detail","eventListenerMap","cacheKey","parts","key","descriptorPattern","parseActionDescriptorString","descriptorString","matches","parseEventTarget","parseEventOptions","eventTargetName","options","token","stringifyEventTarget","camelize","value","_","char","capitalize","dasherize","tokenize","Action","element","index","descriptor","getDefaultEventNameForElement","eventNameSuffix","params","pattern","name","match","typecast","defaultEventNames","e","tagName","o_O","Binding","context","action","method","target","currentTarget","actionEvent","identifier","controller","ElementObserver","delegate","mutations","callback","mutation","node","attributeName","nodes","tree","processor","AttributeObserver","StringMapObserver","oldValue","attribute","add","fetch","del","prune","values","Multimap","set","size","TokenListObserver","unmatchedTokens","matchedTokens","tokens","previousTokens","currentTokens","firstDifferingIndex","zip","previousToken","currentToken","tokensAreEqual","tokenString","parseTokenString","content","length","ValueListObserver","parseResult","valuesByToken","BindingObserver","ValueObserver","receiver","defaultValue","writer","rawValue","rawOldValue","changedMethodName","changedMethod","valueDescriptorMap","descriptors","hasMethodName","TargetObserver","_a","Context","module","scope","functionName","methodName","args","readInheritableStaticArrayValues","constructor","propertyName","ancestors","getAncestorsForConstructor","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","definition","bless","shadow","getBlessedProperties","properties","shadowConstructor","extend","shadowProperties","getShadowProperties","blessedProperties","blessing","prototype","getOwnKeys","getShadowedDescriptor","shadowingDescriptor","object","extendWithReflect","extended","testReflectExtension","b","blessDefinition","Module","ClassMap","DataMap","Guide","logger","warnedKeys","attributeValueContainsToken","TargetSet","targetName","targetNames","targets","selector","targetDescriptor","revisedAttributeName","Scope","schema","ScopeObserver","scopesByIdentifier","referenceCount","Router","contexts","defaultSchema","Application","__async","domReady","controllerConstructor","head","rest","resolve","ClassPropertiesBlessing","classDefinition","propertiesForClassDefinition","classes","TargetPropertiesBlessing","targetDefinition","propertiesForTargetDefinition","ValuePropertiesBlessing","valueDefinitionPairs","propertyDescriptorMap","result","valueDefinitionPair","valueDescriptor","parseValueDefinitionPair","propertiesForValueDefinitionPair","read","write","typeDefinition","valueDescriptorForTokenAndTypeDefinition","parseValueTypeConstant","constant","parseValueTypeDefault","parseValueTypeObject","payload","typeFromObject","defaultValueType","propertyPath","parseValueTypeDefinition","typeFromDefaultValue","typeFromConstant","type","defaultValueForDefinition","defaultValuesByType","readers","writers","array","writeString","writeJSON","Controller","prefix","bubbles","cancelable","isObject","obj","src","ssrDocument","getDocument","doc","ssrWindow","id","getWindow","win","makeReactive","proto","Dom7","items","arrayFlat","arr","res","el","arrayFilter","arrayUnique","uniqueArray","i","qsa","a","$","window","document","html","toCreate","tempParent","addClass","classNames","c","removeClass","toggleClass","className","hasClass","attr","attrs","attrName","removeAttr","transform","transition","duration","on","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","parents","k","handleEvent","events","j","off","handlers","handler","trigger","evt","data","dataIndex","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","outerHeight","offset","box","body","clientTop","clientLeft","scrollTop","scrollLeft","css","props","prop","each","filter","text","is","compareWith","child","eq","returnIndex","append","els","newChild","tempDiv","prepend","next","nextAll","nextEls","prev","prevAll","prevEls","parent","closest","find","foundElements","found","children","childNodes","remove","Methods","deleteProps","nextTick","delay","now","getComputedStyle","style","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","o","isNode","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","setCSSProperty","varName","varValue","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","startTime","time","dir","isOutOfBound","current","animate","progress","easeProgress","currentPosition","support","calcSupport","supportsPassive","opts","getSupport","deviceCached","calcDevice","_temp","userAgent","platform","ua","device","screenWidth","screenHeight","android","ipad","ipod","iphone","windows","macos","iPadScreens","getDevice","overrides","browser","calcBrowser","isSafari","getBrowser","Resize","emit","observer","animationFrame","resizeHandler","createObserver","entries","width","height","newWidth","newHeight","_ref2","contentBoxSize","contentRect","removeObserver","orientationChangeHandler","Observer","extendParams","observers","attach","ObserverFunc","observerUpdate","init","containerParents","destroy","eventsEmitter","priority","self","onceHandler","_len","_key","eventHandler","_len2","_key2","updateSize","$el","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","$wrapperEl","swiperSize","rtl","wrongRTL","isVirtual","previousSlidesLength","slides","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","gridEnabled","slideSize","shouldResetSlideSize","slide","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","marginLeft","marginRight","boxSizing","clientWidth","offsetWidth","newSlidesGrid","slidesGridItem","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","speed","activeSlides","getSlideByIndex","updateSlidesOffset","updateSlidesProgress","translate","offsetCenter","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","updateProgress","multiplier","translatesDiff","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeIndex","realIndex","activeSlide","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","skip","updateClickedSlide","slideFound","update","getSwiperTranslate","currentTranslate","setTranslate","byController","wrapperEl","x","y","z","newProgress","minTranslate","maxTranslate","translateTo","runCallbacks","translateBounds","internal","newTranslate","isH","setTransition","transitionEmit","direction","step","transitionStart","slideTo","initial","indexAsNumber","enabled","normalizedTranslate","normalizedGrid","normalizedGridNext","t","slideToLoop","newIndex","slideNext","animating","perGroup","increment","slidePrev","rtlTranslate","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slideToClickedSlide","slidesPerView","slideToIndex","loopCreate","$selector","blankSlidesNum","blankNode","prependSlides","appendSlides","loopFix","loopedSlides","allowSlidePrev","allowSlideNext","diff","loopDestroy","loop","setGrabCursor","moving","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","onTouchStart","touches","$targetEl","noSwipingSelector","isTargetShadow","startX","startY","edgeSwipeDetection","edgeSwipeThreshold","preventDefault","shouldPreventDefault","onTouchMove","targetTouch","pageX","pageY","diffX","diffY","__pow","touchAngle","disableParentSwiper","resistanceRatio","onTouchEnd","touchEndTime","timeDiff","pathTree","currentPos","stopIndex","groupSize","rewindFirstIndex","rewindLastIndex","ratio","onResize","onClick","onScroll","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","passiveListener","attachEvents","detachEvents","events$1","isGridEnabled","setBreakpoint","initialized","breakpoints","breakpoint","breakpointParams","wasMultiRow","isMultiRow","wasEnabled","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","isEnabled","getBreakpoint","containerEl","currentHeight","points","point","minRatio","prepareClasses","resultClasses","item","addClasses","suffixes","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","preloadImages","images","checkOverflow","wasLocked","slidesOffsetBefore","lastSlideIndex","lastSlideRightEdge","checkOverflow$1","defaults$4","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","prototypes","extendedDefaults","Swiper","swipers","newParams","mod","swiperParams","defaults","touch","desktop","min","cls","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","getWrapperSelector","wrapper","deleteInstance","cleanStyles","newDefaults","modules","m","prototypeGroup","protoMethod","runningOnBrowser","isBot","supportsIntersectionObserver","supportsClassList","isHiDpi","defaultSettings","getExtendedSettings","customSettings","createInstance","classObj","eventString","instance","err","autoInitialize","optionsItem","SRC","SRCSET","SIZES","POSTER","ORIGINALS","DATA","statusLoading","statusLoaded","statusApplied","statusEntered","statusError","statusNative","dataPrefix","statusDataName","getData","setData","getStatus","setStatus","status","resetStatus","hasEmptyStatus","hasStatusLoading","hasStatusError","hasStatusNative","statusesAfterLoading","hadStartedLoading","safeCallback","arg1","arg2","arg3","addTempImage","deleteTempImage","getTempImage","unobserve","resetObserver","unobserveEntered","settings","updateLoadingCount","delta","decreaseToLoadCount","setToLoadCount","isSomethingLoading","haveElementsToLoad","getSourceTags","parentTag","sourceTags","childTag","forEachPictureSource","fn","forEachVideoSource","attrsSrc","attrsSrcPoster","attrsSrcSrcsetSizes","attrsData","hasOriginalAttrs","getOriginalAttrs","deleteOriginalAttrs","setOriginalsObject","attributes","originals","saveOriginalBackgroundStyle","setOrResetAttribute","restoreOriginalAttrs","restoreOriginalBgImage","manageApplied","manageLoading","setAttributeIfValue","setImageAttributes","setSourcesImg","imgEl","sourceTag","setSourcesIframe","iframe","setSourcesVideo","videoEl","sourceEl","setSourcesObject","setBackground","bg1xValue","bgHiDpiValue","bgDataValue","setMultiBackground","setImgsetBackground","bgImgSetDataValue","imgSetValues","bgImageValues","setSourcesFunctions","setSourcesNative","setSourcesFunction","setSources","elementsWithLoadEvent","hasLoadEvent","checkFinish","addEventListener","removeEventListener","hasEventListeners","addEventListeners","loadHandler","errorHandler","loadEventName","removeEventListeners","eventListeners","doneHandler","goingNative","addOneShotEventListeners","elementToListenTo","loadBackground","loadRegular","load","loadNative","removeImageAttributes","resetSourcesImg","restoreImg","restoreVideo","restoreIframe","iframeEl","restoreObject","objectEl","restoreFunctions","restoreAttributes","restoreFunction","resetClasses","restore","cancelLoading","entry","onEnter","dontLoad","onExit","tagsWithNativeLazy","shouldUseNative","loadAllNative","elements","isIntersecting","getObserverSettings","intersectionHandler","observeElements","updateObserver","elementsToObserve","setObserver","toArray","nodeSet","queryElements","excludeManagedElements","hasError","filterErrorElements","getElementsToLoad","retryLazyLoad","setOnlineCheck","resetOnlineCheck","LazyLoad","givenNodeset","elementsToLoad","home_controller_default","chars","ch","FormController","lang_controller_default","modal_controller_default","modal","Component","bind","thisArg","require$$0","toString","kindOf","cache","thing","str","kindOfTest","isArray","isUndefined","isBuffer","isArrayBuffer","isArrayBufferView","isString","isNumber","isPlainObject","isDate","isFile","isBlob","isFileList","isFunction","isStream","isFormData","isURLSearchParams","trim","isStandardBrowserEnv","forEach","l","merge","assignValue","stripBOM","inherits","superConstructor","toFlatObject","sourceObj","destObj","merged","endsWith","searchString","position","isTypedArray","TypedArray","utils","encode","buildURL","url","paramsSerializer","serializedParams","hashmarkIndex","InterceptorManager","fulfilled","rejected","h","InterceptorManager_1","normalizeHeaderName","headers","normalizedName","AxiosError","code","config","request","response","customProps","axiosError","AxiosError_1","transitional","toFormData","formData","stack","convertValue","build","parentKey","fullKey","toFormData_1","settle","reject","validateStatus","cookies","expires","path","domain","secure","cookie","isAbsoluteURL","combineURLs","baseURL","relativeURL","require$$1","buildFullPath","requestedURL","ignoreDuplicateOf","parseHeaders","parsed","line","isURLSameOrigin","msie","urlParsingNode","originURL","resolveURL","href","requestURL","CanceledError","CanceledError_1","parseProtocol","require$$2","require$$3","require$$4","require$$5","require$$6","transitionalDefaults","require$$7","require$$8","require$$9","require$$10","xhr","requestData","requestHeaders","responseType","onCanceled","done","username","password","fullPath","onloadend","responseHeaders","responseData","timeoutErrorMessage","xsrfValue","cancel","protocol","_null","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","getDefaultAdapter","adapter","stringifySafely","parser","encoder","isObjectPayload","contentType","_FormData","silentJSONParsing","forcedJSONParsing","strictJSONParsing","defaults_1","transformData","fns","isCancel","throwIfCancellationRequested","dispatchRequest","reason","mergeConfig","config1","config2","getMergedValue","source","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","VERSION","validators","deprecatedWarnings","validator","version","formatMessage","opt","assertOptions","allowUnknown","keys","Axios","instanceConfig","configOrUrl","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","promise","chain","newConfig","onFulfilled","onRejected","generateHTTPMethod","isForm","Axios_1","CancelToken","executor","resolvePromise","onfulfilled","_resolve","CancelToken_1","spread","isAxiosError","defaultConfig","axios","promises","require$$11","require$$12","axiosModule","axios_1","root","factory","this","NProgress","Settings","n","started","clamp","bar","ease","queue","barPositionCSS","work","force","amount","$promise","fromStart","perc","toBarPerc","spinner","removeElement","bodyStyle","vendorPrefix","max","barCSS","pending","cssPrefixes","cssProps","camelCase","string","letter","getVendorProp","capName","vendorName","getStyleProp","applyCss","list","classList","oldList","newList","redraw","_b","r","controls","controlLen","control","childrenLen","subcontrol","search","form","fields","field","fieldset","groupName","hasParent","isKeyNumber","isValueNumber","__spreadProps","__spreadValues","formObjectName","objectName","isBoolean","clicks","click","forms","CookieBar","_c","analyticCookie","preferenceCookie","marketingCookie","Scroller","anchor","HomeController","LangController","ModalController","Lazyload","cookieBar","scroller"],"mappings":"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"}