{"version":3,"file":"static/chunks/136-05061b9c0e93e669.js","mappings":"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","sources":["webpack://_N_E/../../node_modules/@tanstack/query-core/build/modern/mutation.js","webpack://_N_E/../../node_modules/@tanstack/query-core/build/modern/mutationObserver.js","webpack://_N_E/../../src/useMutation.ts","webpack://_N_E/../../node_modules/swiper/modules/virtual.mjs","webpack://_N_E/../../node_modules/swiper/modules/keyboard.mjs","webpack://_N_E/../../node_modules/swiper/modules/mousewheel.mjs","webpack://_N_E/../../node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack://_N_E/../../node_modules/swiper/modules/navigation.mjs","webpack://_N_E/../../node_modules/swiper/shared/classes-to-selector.mjs","webpack://_N_E/../../node_modules/swiper/modules/pagination.mjs","webpack://_N_E/../../node_modules/swiper/modules/scrollbar.mjs","webpack://_N_E/../../node_modules/swiper/modules/parallax.mjs","webpack://_N_E/../../node_modules/swiper/modules/zoom.mjs","webpack://_N_E/../../node_modules/swiper/modules/controller.mjs","webpack://_N_E/../../node_modules/swiper/modules/a11y.mjs","webpack://_N_E/../../node_modules/swiper/modules/history.mjs","webpack://_N_E/../../node_modules/swiper/modules/hash-navigation.mjs","webpack://_N_E/../../node_modules/swiper/modules/autoplay.mjs","webpack://_N_E/../../node_modules/swiper/modules/thumbs.mjs","webpack://_N_E/../../node_modules/swiper/modules/free-mode.mjs","webpack://_N_E/../../node_modules/swiper/shared/effect-target.mjs","webpack://_N_E/../../node_modules/swiper/shared/effect-virtual-transition-end.mjs","webpack://_N_E/../../node_modules/swiper/modules/effect-fade.mjs","webpack://_N_E/../../node_modules/swiper/modules/effect-cube.mjs","webpack://_N_E/../../node_modules/swiper/shared/create-shadow.mjs","webpack://_N_E/../../node_modules/swiper/modules/effect-flip.mjs","webpack://_N_E/../../node_modules/swiper/shared/effect-init.mjs","webpack://_N_E/../../node_modules/swiper/modules/effect-coverflow.mjs","webpack://_N_E/../../node_modules/swiper/modules/effect-creative.mjs","webpack://_N_E/../../node_modules/swiper/modules/effect-cards.mjs","webpack://_N_E/../../node_modules/swiper/modules/index.mjs"],"sourcesContent":["// src/mutation.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Removable } from \"./removable.js\";\nimport { createRetryer } from \"./retryer.js\";\nvar Mutation = class extends Removable {\n #observers;\n #mutationCache;\n #retryer;\n constructor(config) {\n super();\n this.mutationId = config.mutationId;\n this.#mutationCache = config.mutationCache;\n this.#observers = [];\n this.state = config.state || getDefaultState();\n this.setOptions(config.options);\n this.scheduleGc();\n }\n setOptions(options) {\n this.options = options;\n this.updateGcTime(this.options.gcTime);\n }\n get meta() {\n return this.options.meta;\n }\n addObserver(observer) {\n if (!this.#observers.includes(observer)) {\n this.#observers.push(observer);\n this.clearGcTimeout();\n this.#mutationCache.notify({\n type: \"observerAdded\",\n mutation: this,\n observer\n });\n }\n }\n removeObserver(observer) {\n this.#observers = this.#observers.filter((x) => x !== observer);\n this.scheduleGc();\n this.#mutationCache.notify({\n type: \"observerRemoved\",\n mutation: this,\n observer\n });\n }\n optionalRemove() {\n if (!this.#observers.length) {\n if (this.state.status === \"pending\") {\n this.scheduleGc();\n } else {\n this.#mutationCache.remove(this);\n }\n }\n }\n continue() {\n return this.#retryer?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n this.execute(this.state.variables);\n }\n async execute(variables) {\n this.#retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject(new Error(\"No mutationFn found\"));\n }\n return this.options.mutationFn(variables);\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue: () => {\n this.#dispatch({ type: \"continue\" });\n },\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n canRun: () => this.#mutationCache.canRun(this)\n });\n const restored = this.state.status === \"pending\";\n const isPaused = !this.#retryer.canStart();\n try {\n if (!restored) {\n this.#dispatch({ type: \"pending\", variables, isPaused });\n await this.#mutationCache.config.onMutate?.(\n variables,\n this\n );\n const context = await this.options.onMutate?.(variables);\n if (context !== this.state.context) {\n this.#dispatch({\n type: \"pending\",\n context,\n variables,\n isPaused\n });\n }\n }\n const data = await this.#retryer.start();\n await this.#mutationCache.config.onSuccess?.(\n data,\n variables,\n this.state.context,\n this\n );\n await this.options.onSuccess?.(data, variables, this.state.context);\n await this.#mutationCache.config.onSettled?.(\n data,\n null,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(data, null, variables, this.state.context);\n this.#dispatch({ type: \"success\", data });\n return data;\n } catch (error) {\n try {\n await this.#mutationCache.config.onError?.(\n error,\n variables,\n this.state.context,\n this\n );\n await this.options.onError?.(\n error,\n variables,\n this.state.context\n );\n await this.#mutationCache.config.onSettled?.(\n void 0,\n error,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(\n void 0,\n error,\n variables,\n this.state.context\n );\n throw error;\n } finally {\n this.#dispatch({ type: \"error\", error });\n }\n } finally {\n this.#mutationCache.runNext(this);\n }\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n failureCount: action.failureCount,\n failureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n isPaused: true\n };\n case \"continue\":\n return {\n ...state,\n isPaused: false\n };\n case \"pending\":\n return {\n ...state,\n context: action.context,\n data: void 0,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: action.isPaused,\n status: \"pending\",\n variables: action.variables,\n submittedAt: Date.now()\n };\n case \"success\":\n return {\n ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: \"success\",\n isPaused: false\n };\n case \"error\":\n return {\n ...state,\n data: void 0,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: \"error\"\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.#observers.forEach((observer) => {\n observer.onMutationUpdate(action);\n });\n this.#mutationCache.notify({\n mutation: this,\n type: \"updated\",\n action\n });\n });\n }\n};\nfunction getDefaultState() {\n return {\n context: void 0,\n data: void 0,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: \"idle\",\n variables: void 0,\n submittedAt: 0\n };\n}\nexport {\n Mutation,\n getDefaultState\n};\n//# sourceMappingURL=mutation.js.map","// src/mutationObserver.ts\nimport { getDefaultState } from \"./mutation.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { hashKey, shallowEqualObjects } from \"./utils.js\";\nvar MutationObserver = class extends Subscribable {\n #client;\n #currentResult = void 0;\n #currentMutation;\n #mutateOptions;\n constructor(client, options) {\n super();\n this.#client = client;\n this.setOptions(options);\n this.bindMethods();\n this.#updateResult();\n }\n bindMethods() {\n this.mutate = this.mutate.bind(this);\n this.reset = this.reset.bind(this);\n }\n setOptions(options) {\n const prevOptions = this.options;\n this.options = this.#client.defaultMutationOptions(options);\n if (!shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getMutationCache().notify({\n type: \"observerOptionsUpdated\",\n mutation: this.#currentMutation,\n observer: this\n });\n }\n if (prevOptions?.mutationKey && this.options.mutationKey && hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)) {\n this.reset();\n } else if (this.#currentMutation?.state.status === \"pending\") {\n this.#currentMutation.setOptions(this.options);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#currentMutation?.removeObserver(this);\n }\n }\n onMutationUpdate(action) {\n this.#updateResult();\n this.#notify(action);\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n reset() {\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = void 0;\n this.#updateResult();\n this.#notify();\n }\n mutate(variables, options) {\n this.#mutateOptions = options;\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = this.#client.getMutationCache().build(this.#client, this.options);\n this.#currentMutation.addObserver(this);\n return this.#currentMutation.execute(variables);\n }\n #updateResult() {\n const state = this.#currentMutation?.state ?? getDefaultState();\n this.#currentResult = {\n ...state,\n isPending: state.status === \"pending\",\n isSuccess: state.status === \"success\",\n isError: state.status === \"error\",\n isIdle: state.status === \"idle\",\n mutate: this.mutate,\n reset: this.reset\n };\n }\n #notify(action) {\n notifyManager.batch(() => {\n if (this.#mutateOptions && this.hasListeners()) {\n const variables = this.#currentResult.variables;\n const context = this.#currentResult.context;\n if (action?.type === \"success\") {\n this.#mutateOptions.onSuccess?.(action.data, variables, context);\n this.#mutateOptions.onSettled?.(action.data, null, variables, context);\n } else if (action?.type === \"error\") {\n this.#mutateOptions.onError?.(action.error, variables, context);\n this.#mutateOptions.onSettled?.(\n void 0,\n action.error,\n variables,\n context\n );\n }\n }\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n });\n }\n};\nexport {\n MutationObserver\n};\n//# sourceMappingURL=mutationObserver.js.map","'use client'\nimport * as React from 'react'\nimport { MutationObserver, notifyManager } from '@tanstack/query-core'\nimport { useQueryClient } from './QueryClientProvider'\nimport { noop, shouldThrowError } from './utils'\nimport type {\n UseMutateFunction,\n UseMutationOptions,\n UseMutationResult,\n} from './types'\nimport type { DefaultError, QueryClient } from '@tanstack/query-core'\n\n// HOOK\n\nexport function useMutation<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n>(\n options: UseMutationOptions,\n queryClient?: QueryClient,\n): UseMutationResult {\n const client = useQueryClient(queryClient)\n\n const [observer] = React.useState(\n () =>\n new MutationObserver(\n client,\n options,\n ),\n )\n\n React.useEffect(() => {\n observer.setOptions(options)\n }, [observer, options])\n\n const result = React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) =>\n observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n [observer],\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult(),\n )\n\n const mutate = React.useCallback<\n UseMutateFunction\n >(\n (variables, mutateOptions) => {\n observer.mutate(variables, mutateOptions).catch(noop)\n },\n [observer],\n )\n\n if (\n result.error &&\n shouldThrowError(observer.options.throwOnError, [result.error])\n ) {\n throw result.error\n }\n\n return { ...result, mutate, mutateAsync: result.mutate }\n}\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) {\n swiper.virtual.cache[index] = slideEl;\n }\n return slideEl;\n }\n function update(force, beforeInit) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop,\n initialSlide\n } = swiper.params;\n if (beforeInit && !isLoop && initialSlide > 0) {\n return;\n }\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n update(false, true);\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}\n\nexport { Virtual as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n if (swiper.destroyed || !swiper.params) return;\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n if (swiper.destroyed || !swiper.params) return;\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\n\nexport { Mousewheel as default };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n if (swiper.isElement && !targetIsButton) {\n const path = e.path || e.composedPath && e.composedPath();\n if (path) {\n targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n }\n }\n if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function getMoveDirection(prevIndex, nextIndex, length) {\n prevIndex = prevIndex % length;\n nextIndex = nextIndex % length;\n if (nextIndex === prevIndex + 1) {\n return 'next';\n } else if (nextIndex === prevIndex - 1) {\n return 'previous';\n }\n return;\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);\n if (moveDirection === 'next') {\n swiper.slideNext();\n } else if (moveDirection === 'previous') {\n swiper.slidePrev();\n } else {\n swiper.slideToLoop(index);\n }\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\n\nfunction Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n if (!el.length) return;\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n }\n disableDraggable();\n }\n on('changeDirection', () => {\n if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n const params = swiper.params.scrollbar;\n let {\n el\n } = swiper.scrollbar;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock changeDirection', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\nexport { Scrollbar as default };\n","import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const {\n el,\n slides,\n progress,\n snapGrid,\n isElement\n } = swiper;\n const elements = elementChildren(el, elementsSelector);\n if (swiper.isElement) {\n elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n }\n elements.forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n const {\n el,\n hostEl\n } = swiper;\n const elements = [...el.querySelectorAll(elementsSelector)];\n if (swiper.isElement) {\n elements.push(...hostEl.querySelectorAll(elementsSelector));\n }\n elements.forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n\nexport { Parallax as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, j as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n limitToOriginalSize: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getMaxRatio() {\n const params = swiper.params.zoom;\n const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\n const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\n return Math.min(imageMaxRatio, maxRatio);\n }\n return maxRatio;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = getMaxRatio();\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n let allowTouchMoveTimeout;\n function allowTouchMove() {\n swiper.touchEventsData.preventTouchMoveFromPointerMove = false;\n }\n function preventTouchMove() {\n clearTimeout(allowTouchMoveTimeout);\n swiper.touchEventsData.preventTouchMoveFromPointerMove = true;\n allowTouchMoveTimeout = setTimeout(() => {\n if (swiper.destroyed) return;\n allowTouchMove();\n });\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {\n return;\n }\n const zoom = swiper.zoom;\n if (!gesture.imageEl) {\n return;\n }\n if (!image.isTouched || !gesture.slideEl) {\n return;\n }\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n preventTouchMove();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const {\n originX,\n originY\n } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n image.touchesStart.x = undefined;\n image.touchesStart.y = undefined;\n }\n const maxRatio = getMaxRatio();\n zoom.scale = forceZoomRatio || maxRatio;\n currentScale = forceZoomRatio || maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n image.touchesStart.x = undefined;\n image.touchesStart.y = undefined;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n","import { n as nextTick, k as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control];\n controlElements.forEach(controlElement => {\n if (!swiper.controller.control) swiper.controller.control = [];\n if (controlElement && controlElement.swiper) {\n swiper.controller.control.push(controlElement.swiper);\n } else if (controlElement) {\n const eventName = `${swiper.params.eventsPrefix}init`;\n const onControllerSwiper = e => {\n swiper.controller.control.push(e.detail[0]);\n swiper.update();\n controlElement.removeEventListener(eventName, onControllerSwiper);\n };\n controlElement.addEventListener(eventName, onControllerSwiper);\n }\n });\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}\n\nexport { Controller as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n containerRole: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null,\n scrollOnFocus: true\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n let preventFocusHandler;\n let focusTargetSlideEl;\n let visibilityChangedTimestamp = new Date().getTime();\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {\n const prevEls = makeElementsArray(swiper.navigation.prevEl);\n const nextEls = makeElementsArray(swiper.navigation.nextEl);\n if (nextEls.includes(targetEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (prevEls.includes(targetEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = e => {\n if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {\n preventFocusHandler = true;\n }\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n preventFocusHandler = false;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const onVisibilityChange = e => {\n visibilityChangedTimestamp = new Date().getTime();\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;\n if (new Date().getTime() - visibilityChangedTimestamp < 100) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n focusTargetSlideEl = slideEl;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n requestAnimationFrame(() => {\n if (preventFocusHandler) return;\n if (swiper.params.loop) {\n swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);\n } else {\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n }\n preventFocusHandler = false;\n });\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n if (params.containerRole) {\n addElRole(containerEl, params.containerRole);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n // Tab focus\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\n if (!slideWithHash) return 0;\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n return index;\n }\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n emit('hashSet');\n } else {\n document.location.hash = activeSlideHash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\n }\n };\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n\nexport { HashNavigation as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n }\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { l as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const eventName = `${swiper.params.eventsPrefix}init`;\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener(eventName, onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener(eventName, onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n","import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n emit('_freeModeStaticRelease');\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\n\nexport { freeMode as default };\n","import { g as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\n\nexport { effectTarget as e };\n","import { k as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformElements,\n allSlides\n } = _ref;\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFade as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const {\n el,\n wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const r = getRotateFix(swiper);\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const {\n el,\n slides\n } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\nexport { EffectCube as default };\n","import { g as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n if (!shadowEl) {\n shadowEl = createElement('div', shadowClass.split(' '));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}\n\nexport { createShadow as c };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n const rotateFix = getRotateFix(swiper);\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFlip as default };\n","function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n\nexport { effectInit as e };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n const r = getRotateFix(swiper);\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\n\nexport { EffectCoverflow as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const {\n slides,\n wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n const rotateFix = getRotateFix(swiper);\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n let val = data.rotate[index] * Math.abs(progress * multiplier);\n r[index] = val;\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow('creative', slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const {\n slides,\n activeIndex,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow('cards', slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCards as default };\n","export {default as Virtual} from './virtual.mjs';\nexport {default as Keyboard} from './keyboard.mjs';\nexport {default as Mousewheel} from './mousewheel.mjs';\nexport {default as Navigation} from './navigation.mjs';\nexport {default as Pagination} from './pagination.mjs';\nexport {default as Scrollbar} from './scrollbar.mjs';\nexport {default as Parallax} from './parallax.mjs';\nexport {default as Zoom} from './zoom.mjs';\nexport {default as Controller} from './controller.mjs';\nexport {default as A11y} from './a11y.mjs';\nexport {default as History} from './history.mjs';\nexport {default as HashNavigation} from './hash-navigation.mjs';\nexport {default as Autoplay} from './autoplay.mjs';\nexport {default as Thumbs} from './thumbs.mjs';\nexport {default as FreeMode} from './free-mode.mjs';\nexport {default as Grid} from './grid.mjs';\nexport {default as Manipulation} from './manipulation.mjs';\nexport {default as EffectFade} from './effect-fade.mjs';\nexport {default as EffectCube} from './effect-cube.mjs';\nexport {default as EffectFlip} from './effect-flip.mjs';\nexport {default as EffectCoverflow} from './effect-coverflow.mjs';\nexport {default as EffectCreative} from './effect-creative.mjs';\nexport {default as EffectCards} from './effect-cards.mjs';"],"names":["Mutation","_removable_js__WEBPACK_IMPORTED_MODULE_0__","F","observers","mutationCache","retryer","config","mutationId","state","getDefaultState","setOptions","options","scheduleGc","updateGcTime","gcTime","meta","addObserver","observer","includes","push","clearGcTimeout","notify","type","mutation","removeObserver","filter","x","optionalRemove","length","status","remove","continue","execute","variables","_retryer_js__WEBPACK_IMPORTED_MODULE_1__","Mz","fn","mutationFn","Promise","reject","onFail","failureCount","error","dispatch","onPause","onContinue","retry","retryDelay","networkMode","canRun","restored","isPaused","canStart","onMutate","context","data","start","onSuccess","onSettled","onError","runNext","action","reducer","failureReason","submittedAt","Date","now","_notifyManager_js__WEBPACK_IMPORTED_MODULE_2__","V","batch","forEach","onMutationUpdate","MutationObserver","subscribable","l","client","currentResult","currentMutation","mutateOptions","bindMethods","updateResult","mutate","bind","reset","prevOptions","defaultMutationOptions","utils","VS","getMutationCache","mutationKey","Ym","onUnsubscribe","hasListeners","getCurrentResult","build","R","isPending","isSuccess","isError","isIdle","notifyManager","listeners","listener","useMutation","queryClient","useQueryClient","React","result","subscribe","batchCalls","onStoreChange","catch","noop","shouldThrowError","throwOnError","mutateAsync","Mousewheel","_ref","timeout","lastEventBeforeSnap","swiper","extendParams","on","emit","window","ssr_window_esm","a","mousewheel","enabled","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastScrollTime","d","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","params","delta","direction","isEnd","loop","animating","slideNext","raw","isBeginning","slidePrev","getTime","handle","event","e","sX","sY","pX","pY","target","closest","cssMode","preventDefault","targetEl","el","document","querySelector","targetElContainsTarget","contains","originalEvent","rtlFactor","rtlTranslate","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","shiftKey","deltaMode","spinX","spinY","pixelX","pixelY","isHorizontal","Math","abs","positions","getTranslate","minTranslate","maxTranslate","nested","stopPropagation","freeMode","time","sign","ignoreWheelEvents","undefined","position","wasBeginning","wasEnd","setTransition","setTranslate","updateProgress","updateActiveIndex","updateSlidesClasses","loopFix","byMousewheel","sticky","clearTimeout","shift","prevEvent","firstEvent","splice","snapToThreshold","n","destroyed","slideToClosest","speed","autoplay","autoplayDisableOnInteraction","stop","releaseScroll","returnValue","events","method","enable","wrapperEl","removeEventListener","disable","addEventListener","Object","assign","classes_to_selector_classesToSelector","classes","trim","replace","Pagination","bulletSize","pfx","pagination","bulletElement","clickable","hideOnClick","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","hiddenClass","progressbarFillClass","progressbarOppositeClass","clickableClass","lockClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","Array","isArray","setSideBullets","bulletEl","classList","add","onBulletClick","index","h","slidesPerGroup","prevIndex","nextIndex","realIndex","moveDirection","slides","slideToLoop","slideTo","update","current","previousIndex","rtl","m","slidesLength","virtual","total","ceil","snapGrid","previousRealIndex","floor","snapIndex","previousSnapIndex","activeIndex","firstIndex","lastIndex","midIndex","f","subEl","style","max","min","classesToRemove","map","suffix","s","split","flat","bullet","bulletIndex","isElement","setAttribute","firstDisplayedBullet","lastDisplayedBullet","i","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","querySelectorAll","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","transform","transitionDuration","innerHTML","watchOverflow","isLocked","render","grid","rows","paginationHTML","numberOfBullets","call","init","originalParams","checkProps","createElements","keys","key","auto","element","c","className","append","uniqueNavElements","destroy","_s","navigation","nextEl","prevEl","isHidden","toggle","Autoplay","raf","autoplayTimeLeft","wasPaused","isTouched","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","running","paused","timeLeft","delay","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","onTransitionEnd","bySwiperTouchMove","resume","calcTimeLeft","requestAnimationFrame","getSlideDelay","activeSlideEl","slideEl","parseInt","getAttribute","run","delayForce","cancelAnimationFrame","currentSlideDelay","Number","isNaN","proceed","rewind","setTimeout","pause","internal","onVisibilityChange","g","visibilityState","onPointerEnter","pointerType","onPointerLeave","attachMouseEvents","detachMouseEvents","attachDocumentEvents","detachDocumentEvents","once","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","onTouchStart","translate","touchEventsData","velocities","onTouchEnd","currentPos","onTouchMove","touches","touchStartTime","_ref2","timeDiff","touchEndTime","afterBouncePosition","needsLoopFix","lastMoveEvent","pop","velocityEvent","distance","velocity","momentumDuration","momentumDistance","newPosition","doBounce","bounceAmount","allowMomentumBounce","centeredSlides","nextSlide","j","swipeDirection","moveDistance","currentSlideSize","slidesSizesGrid","transitionStart","k","transitionEnd","longSwipesMs","create_shadow_createShadow","side","shadowClass","shadowContainer","shadowEl","join","EffectCoverflow","coverflowEffect","rotate","stretch","depth","modifier","slideShadows","effect_init_effectInit","requireUpdateOnVirtual","effect","overwriteParams","perspective","recreateShadows","getEffectParams","classNames","containerModifierClass","overwriteParamsResult","duration","width","swiperWidth","height","swiperHeight","center","r","o","slideSize","centerOffset","swiperSlideOffset","offsetMultiplier","rotateY","rotateX","translateZ","indexOf","parseFloat","translateY","translateX","slideTransform","effectParams","transformEl","backfaceVisibility","zIndex","round","shadowBeforeEl","shadowAfterEl","opacity","transformElements","watchSlidesProgress"],"sourceRoot":""}