@slidejs/runner-swiper 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +4 -4
- package/LICENSE +22 -0
- package/dist/{index.js → index.mjs} +1 -1
- package/dist/index.mjs.map +1 -0
- package/package.json +16 -13
- package/vite.config.ts +1 -1
- package/dist/index.js.map +0 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @slidejs/runner-swiper@0.1.
|
|
2
|
+
> @slidejs/runner-swiper@0.1.2 build /Volumes/ORICO/ws/prj/slidejs/slidejs/packages/@slidejs/runner-swiper
|
|
3
3
|
> vite build
|
|
4
4
|
|
|
5
5
|
vite v5.4.21 building for production...
|
|
@@ -23,11 +23,11 @@ rendering chunks...
|
|
|
23
23
|
|
|
24
24
|
[vite:dts] Start generate declaration files...
|
|
25
25
|
computing gzip size...
|
|
26
|
-
dist/index.
|
|
26
|
+
dist/index.mjs 30.73 kB │ gzip: 8.75 kB │ map: 92.43 kB
|
|
27
27
|
[vite:dts] Start rollup declaration files...
|
|
28
28
|
Analysis will use the bundled TypeScript version 5.4.2
|
|
29
29
|
*** The target project appears to use TypeScript 5.9.3 which is newer than the bundled compiler engine; consider upgrading API Extractor.
|
|
30
|
-
[vite:dts] Declaration files built in
|
|
30
|
+
[vite:dts] Declaration files built in 1909ms.
|
|
31
31
|
|
|
32
32
|
dist/index.cjs 22.26 kB │ gzip: 7.05 kB │ map: 89.21 kB
|
|
33
|
-
✓ built in
|
|
33
|
+
✓ built in 2.16s
|
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 slidejs
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../node_modules/.pnpm/swiper@11.2.10/node_modules/swiper/shared/ssr-window.esm.mjs","../../../../node_modules/.pnpm/swiper@11.2.10/node_modules/swiper/shared/utils.mjs","../../../../node_modules/.pnpm/swiper@11.2.10/node_modules/swiper/modules/keyboard.mjs","../../../../node_modules/.pnpm/swiper@11.2.10/node_modules/swiper/shared/create-element-if-not-defined.mjs","../../../../node_modules/.pnpm/swiper@11.2.10/node_modules/swiper/modules/navigation.mjs","../../../../node_modules/.pnpm/swiper@11.2.10/node_modules/swiper/shared/classes-to-selector.mjs","../../../../node_modules/.pnpm/swiper@11.2.10/node_modules/swiper/modules/pagination.mjs","../src/adapter.ts","../src/runner.ts"],"sourcesContent":["/**\n * SSR Window 5.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2025, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: June 27, 2025\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n const window = getWindow();\n const children = [...element.children];\n if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOfSlot(el, slot) {\n // Breadth-first search through all parent's children and assigned elements\n const elementsQueue = [slot];\n while (elementsQueue.length > 0) {\n const elementToCheck = elementsQueue.shift();\n if (el === elementToCheck) {\n return true;\n }\n elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : []));\n }\n}\nfunction elementIsChildOf(el, parent) {\n const window = getWindow();\n let isChild = parent.contains(el);\n if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n isChild = children.includes(el);\n if (!isChild) {\n isChild = elementIsChildOfSlot(el, parent);\n }\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\nfunction setInnerHTML(el, html) {\n if (html === void 0) {\n html = '';\n }\n if (typeof trustedTypes !== 'undefined') {\n el.innerHTML = trustedTypes.createPolicy('html', {\n createHTML: s => s\n }).createHTML(html);\n } else {\n el.innerHTML = html;\n }\n}\n\nexport { setCSSProperty as a, elementParents as b, createElement as c, elementOffset as d, elementChildren as e, now as f, getSlideTransformEl as g, elementOuterSize as h, elementIndex as i, classesToTokens as j, getTranslate as k, elementTransitionEnd as l, makeElementsArray as m, nextTick as n, isObject as o, getRotateFix as p, elementStyle as q, elementNextAll as r, setInnerHTML as s, elementPrevAll as t, animateCSSModeScroll as u, showWarning as v, elementIsChildOf as w, extend as x, deleteProps as y };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { b as elementParents, d 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.isContentEditable || 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 { 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, h as elementOuterSize, i as elementIndex, s as setInnerHTML, b 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 setInnerHTML(subEl, 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}\"></${params.bulletElement}>`;\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 = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n setInnerHTML(subEl, 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.find(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n });\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","/**\n * @slidejs/runner-swiper - SwiperAdapter 适配器实现\n *\n * 将 Slide DSL 渲染为 Swiper 幻灯片\n */\n\nimport { Swiper } from 'swiper';\nimport { Navigation, Pagination, Keyboard } from 'swiper/modules';\nimport type { SwiperOptions } from 'swiper';\nimport type { SlideDefinition } from '@slidejs/core';\nimport type { SlideAdapter, AdapterEvent, EventHandler } from '@slidejs/runner';\nimport type { SwiperAdapterOptions } from './types';\n\n// 注册 Swiper 模块\nSwiper.use([Navigation, Pagination, Keyboard]);\n\n/**\n * Swiper 适配器\n *\n * 实现 SlideAdapter 接口,将 SlideDefinition 渲染为 Swiper 幻灯片\n */\nexport class SwiperAdapter implements SlideAdapter {\n readonly name = 'swiper';\n\n private swiper?: Swiper;\n private swiperContainer?: HTMLElement;\n private swiperWrapper?: HTMLElement;\n private eventHandlers: Map<AdapterEvent, Set<EventHandler>> = new Map();\n\n /**\n * 初始化 Swiper 适配器\n *\n * @param container - 容器元素\n * @param options - Swiper 选项\n */\n async initialize(container: HTMLElement, options?: SwiperAdapterOptions): Promise<void> {\n try {\n // 创建 Swiper DOM 结构\n this.createSwiperStructure(container);\n\n // 初始化 Swiper\n if (!this.swiperContainer || !this.swiperWrapper) {\n throw new Error('Swiper container not created');\n }\n\n const swiperConfig: SwiperOptions = {\n // 默认配置\n direction: 'horizontal',\n loop: false,\n speed: 300,\n spaceBetween: 30,\n slidesPerView: 1,\n // 注册模块\n modules: [Navigation, Pagination, Keyboard],\n // 导航配置\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n // 分页配置\n pagination: {\n el: '.swiper-pagination',\n clickable: true,\n },\n // 键盘控制配置\n keyboard: {\n enabled: true,\n onlyInViewport: true,\n },\n ...options?.swiperConfig,\n };\n\n this.swiper = new Swiper(this.swiperContainer, swiperConfig);\n\n // 等待 Swiper 初始化完成\n // Swiper 初始化是同步的,但我们需要等待 DOM 更新\n await new Promise<void>(resolve => {\n // 使用 requestAnimationFrame 确保 DOM 已更新\n requestAnimationFrame(() => {\n resolve();\n });\n });\n\n // 设置事件监听\n this.setupEventListeners();\n\n // 触发 ready 事件\n this.emit('ready');\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n this.emit('error', { message: errorMessage });\n throw new Error(`Failed to initialize SwiperAdapter: ${errorMessage}`);\n }\n }\n\n /**\n * 渲染幻灯片\n *\n * @param slides - 幻灯片定义数组\n */\n async render(slides: SlideDefinition[]): Promise<void> {\n if (!this.swiperWrapper || !this.swiper) {\n throw new Error('SwiperAdapter not initialized');\n }\n\n try {\n // 清空现有幻灯片\n this.swiperWrapper.innerHTML = '';\n\n // 渲染每张幻灯片\n for (const slide of slides) {\n const slideElement = await this.renderSlide(slide);\n this.swiperWrapper.appendChild(slideElement);\n }\n\n // 更新 Swiper(重新计算尺寸和更新 slides)\n // 在 Swiper 11 中,update() 会自动重新计算所有内容\n this.swiper.update();\n\n // 触发 slideRendered 事件\n this.emit('slideRendered', { totalSlides: slides.length });\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n this.emit('error', { message: errorMessage });\n throw new Error(`Failed to render slides: ${errorMessage}`);\n }\n }\n\n /**\n * 销毁适配器\n */\n async destroy(): Promise<void> {\n if (this.swiper) {\n this.swiper.destroy(true, true);\n this.swiper = undefined;\n }\n\n if (this.swiperContainer) {\n this.swiperContainer.innerHTML = '';\n this.swiperContainer = undefined;\n }\n\n this.swiperWrapper = undefined;\n this.eventHandlers.clear();\n }\n\n /**\n * 导航到指定幻灯片\n *\n * @param index - 幻灯片索引\n */\n navigateTo(index: number): void {\n if (!this.swiper) {\n throw new Error('SwiperAdapter not initialized');\n }\n\n this.swiper.slideTo(index);\n }\n\n /**\n * 获取当前幻灯片索引\n */\n getCurrentIndex(): number {\n if (!this.swiper) {\n return 0;\n }\n\n return this.swiper.activeIndex;\n }\n\n /**\n * 获取幻灯片总数\n */\n getTotalSlides(): number {\n if (!this.swiper) {\n return 0;\n }\n\n return this.swiper.slides.length;\n }\n\n /**\n * 更新指定幻灯片\n *\n * @param index - 幻灯片索引\n * @param slide - 新的幻灯片定义\n */\n async updateSlide(index: number, slide: SlideDefinition): Promise<void> {\n if (!this.swiperWrapper || !this.swiper) {\n throw new Error('SwiperAdapter not initialized');\n }\n\n try {\n // 获取指定索引的 slide 元素\n const slides = this.swiperWrapper.querySelectorAll('.swiper-slide');\n const targetSlide = slides[index];\n\n if (!targetSlide) {\n throw new Error(`Slide at index ${index} not found`);\n }\n\n // 渲染新的幻灯片内容\n const newSlide = await this.renderSlide(slide);\n\n // 替换旧的 slide\n targetSlide.replaceWith(newSlide);\n\n // 更新 Swiper\n this.swiper.update();\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n this.emit('error', { message: errorMessage });\n throw new Error(`Failed to update slide: ${errorMessage}`);\n }\n }\n\n /**\n * 注册事件监听器\n *\n * @param event - 事件类型\n * @param handler - 事件处理器\n */\n on(event: AdapterEvent, handler: EventHandler): void {\n if (!this.eventHandlers.has(event)) {\n this.eventHandlers.set(event, new Set());\n }\n this.eventHandlers.get(event)!.add(handler);\n }\n\n /**\n * 移除事件监听器\n *\n * @param event - 事件类型\n * @param handler - 事件处理器\n */\n off(event: AdapterEvent, handler: EventHandler): void {\n const handlers = this.eventHandlers.get(event);\n if (handlers) {\n handlers.delete(handler);\n }\n }\n\n /**\n * 创建 Swiper DOM 结构\n *\n * @param container - 容器元素\n */\n private createSwiperStructure(container: HTMLElement): void {\n // 创建 .swiper 容器\n const swiperDiv = document.createElement('div');\n swiperDiv.className = 'swiper';\n\n // 创建 .swiper-wrapper 容器\n const wrapperDiv = document.createElement('div');\n wrapperDiv.className = 'swiper-wrapper';\n\n // 创建导航按钮\n const prevButton = document.createElement('div');\n prevButton.className = 'swiper-button-prev';\n const nextButton = document.createElement('div');\n nextButton.className = 'swiper-button-next';\n\n // 创建分页器\n const pagination = document.createElement('div');\n pagination.className = 'swiper-pagination';\n\n swiperDiv.appendChild(wrapperDiv);\n swiperDiv.appendChild(prevButton);\n swiperDiv.appendChild(nextButton);\n swiperDiv.appendChild(pagination);\n container.appendChild(swiperDiv);\n\n this.swiperContainer = swiperDiv;\n this.swiperWrapper = wrapperDiv;\n }\n\n /**\n * 设置 Swiper 事件监听\n */\n private setupEventListeners(): void {\n if (!this.swiper) {\n return;\n }\n\n // 监听幻灯片切换事件\n this.swiper.on('slideChange', () => {\n const currentIndex = this.swiper!.activeIndex;\n const previousIndex = this.swiper!.previousIndex;\n this.emit('slideChanged', {\n index: currentIndex,\n previousIndex,\n from: previousIndex,\n to: currentIndex,\n });\n });\n }\n\n /**\n * 渲染单张幻灯片\n *\n * @param slide - 幻灯片定义\n * @returns slide 元素\n */\n private async renderSlide(slide: SlideDefinition): Promise<HTMLElement> {\n const slideElement = document.createElement('div');\n slideElement.className = 'swiper-slide';\n\n // 设置过渡效果(通过 CSS 类)\n if (slide.behavior?.transition) {\n const transitionClass = this.mapTransition(slide.behavior.transition.type);\n if (transitionClass) {\n slideElement.classList.add(`slide-transition-${transitionClass}`);\n }\n }\n\n // 渲染内容\n if (slide.content.type === 'dynamic') {\n // 动态内容(Web Components)\n const content = await this.renderDynamicContent(slide.content.component, slide.content.props);\n slideElement.appendChild(content);\n } else {\n // 静态文本内容\n const content = this.renderTextContent(slide.content.lines);\n slideElement.appendChild(content);\n }\n\n return slideElement;\n }\n\n /**\n * 渲染动态内容(Web Component)\n *\n * 支持所有 Web Components,包括:\n * - 标准 Web Components(原生 Custom Elements)\n * - wsx 组件(编译为标准 Web Components)\n * - 其他框架的 Web Components(Vue、React、Angular 等)\n *\n * @param component - 组件名称\n * @param props - 组件属性\n * @returns 组件元素\n */\n private async renderDynamicContent(\n component: string,\n props: Record<string, unknown>\n ): Promise<HTMLElement> {\n // 创建 Web Component 元素\n const element = document.createElement(component);\n\n // 设置属性\n for (const [key, value] of Object.entries(props)) {\n if (typeof value === 'string' || typeof value === 'number') {\n // 字符串和数字 → HTML attributes\n element.setAttribute(key, String(value));\n } else if (typeof value === 'boolean') {\n // 布尔值 → HTML attributes(true 时设置空属性)\n if (value) {\n element.setAttribute(key, '');\n }\n } else {\n // 对象和数组 → JavaScript properties\n (element as Record<string, unknown>)[key] = value;\n }\n }\n\n return element;\n }\n\n /**\n * 渲染文本内容\n *\n * 支持以下格式:\n * - # 标题 -> h1\n * - ## 标题 -> h2\n * - ### 标题 -> h3\n * -  -> img\n * - - 列表项 -> ul/li\n * - 普通文本 -> p\n *\n * @param lines - 文本行数组\n * @returns 内容容器元素\n */\n private renderTextContent(lines: string[]): HTMLElement {\n const container = document.createElement('div');\n container.className = 'slide-content';\n\n let listContainer: HTMLUListElement | null = null;\n\n for (const line of lines) {\n const trimmedLine = line.trim();\n\n // 空行,结束列表\n if (!trimmedLine) {\n listContainer = null;\n continue;\n }\n\n // 标题 - # H1\n if (trimmedLine.startsWith('# ')) {\n listContainer = null;\n const h1 = document.createElement('h1');\n h1.textContent = trimmedLine.substring(2);\n container.appendChild(h1);\n continue;\n }\n\n // 标题 - ## H2\n if (trimmedLine.startsWith('## ')) {\n listContainer = null;\n const h2 = document.createElement('h2');\n h2.textContent = trimmedLine.substring(3);\n container.appendChild(h2);\n continue;\n }\n\n // 标题 - ### H3\n if (trimmedLine.startsWith('### ')) {\n listContainer = null;\n const h3 = document.createElement('h3');\n h3.textContent = trimmedLine.substring(4);\n container.appendChild(h3);\n continue;\n }\n\n // 图片 - \n const imageMatch = trimmedLine.match(/^!\\[(.*?)\\]\\((.*?)\\)$/);\n if (imageMatch) {\n listContainer = null;\n const img = document.createElement('img');\n img.alt = imageMatch[1];\n img.src = imageMatch[2];\n img.style.maxWidth = '80%';\n img.style.maxHeight = '500px';\n container.appendChild(img);\n continue;\n }\n\n // 列表项 - - 项目\n if (trimmedLine.startsWith('- ')) {\n if (!listContainer) {\n listContainer = document.createElement('ul');\n container.appendChild(listContainer);\n }\n const li = document.createElement('li');\n li.textContent = trimmedLine.substring(2);\n listContainer.appendChild(li);\n continue;\n }\n\n // 普通文本\n listContainer = null;\n const p = document.createElement('p');\n p.textContent = trimmedLine;\n container.appendChild(p);\n }\n\n return container;\n }\n\n /**\n * 映射 Slide DSL 过渡效果到 Swiper 过渡效果\n *\n * @param transition - Slide DSL 过渡效果\n * @returns Swiper 过渡效果类名(用于 CSS)\n */\n private mapTransition(\n transition?: 'slide' | 'zoom' | 'fade' | 'cube' | 'flip' | 'none'\n ): string | null {\n if (!transition || transition === 'none') {\n return null;\n }\n\n // Swiper 默认支持 slide,其他效果可以通过 CSS 实现\n // 返回类名以便通过 CSS 应用自定义过渡效果\n return transition;\n }\n\n /**\n * 触发事件\n *\n * @param event - 事件类型\n * @param data - 事件数据\n */\n private emit(event: AdapterEvent, data?: unknown): void {\n const handlers = this.eventHandlers.get(event);\n if (handlers) {\n for (const handler of handlers) {\n try {\n handler(data);\n } catch (error) {\n console.error(`Error in ${event} handler:`, error);\n }\n }\n }\n }\n}\n","/**\n * @slidejs/runner-swiper - SlideRunner 工厂函数\n *\n * 提供创建配置好的 SlideRunner 实例的便捷方法\n */\n\nimport { parseSlideDSL, compile } from '@slidejs/dsl';\nimport { SlideRunner } from '@slidejs/runner';\nimport type { SlideContext } from '@slidejs/context';\nimport { SwiperAdapter } from './adapter';\nimport type { SwiperAdapterOptions } from './types';\n\n/**\n * SlideRunner 配置选项\n */\nexport interface SlideRunnerConfig {\n /**\n * 容器选择器或 HTMLElement\n */\n container: string | HTMLElement;\n\n /**\n * Swiper 配置选项\n */\n swiperOptions?: SwiperAdapterOptions['swiperConfig'];\n}\n\n/**\n * 从 DSL 源代码创建并运行 SlideRunner\n *\n * @example\n * ```typescript\n * import { createSlideRunner } from '@slidejs/runner-swiper';\n *\n * const dslSource = `\n * present quiz \"demo\" {\n * rules {\n * rule start \"intro\" {\n * slide {\n * content text { \"Hello World!\" }\n * }\n * }\n * }\n * }\n * `;\n *\n * const context = { sourceType: 'quiz', sourceId: 'demo', items: [] };\n * const runner = await createSlideRunner(dslSource, context, {\n * container: '#app',\n * swiperOptions: {\n * navigation: true,\n * pagination: true,\n * },\n * });\n * ```\n */\nexport async function createSlideRunner<TContext extends SlideContext = SlideContext>(\n dslSource: string,\n context: TContext,\n config: SlideRunnerConfig\n): Promise<SlideRunner<TContext>> {\n // 1. 解析 DSL\n const ast = await parseSlideDSL(dslSource);\n\n // 2. 编译为 SlideDSL\n const slideDSL = compile<TContext>(ast);\n\n // 3. 创建适配器和 Runner\n const adapter = new SwiperAdapter();\n const runner = new SlideRunner<TContext>({\n container: config.container,\n adapter,\n adapterOptions: {\n swiperConfig: config.swiperOptions,\n },\n });\n\n // 4. 运行演示(这会初始化适配器并渲染幻灯片)\n await runner.run(slideDSL, context);\n\n // 注意:需要手动调用 runner.play() 来启动演示(导航到第一张幻灯片)\n // 返回 runner 以便用户可以控制演示\n return runner;\n}\n"],"names":["isObject","obj","extend","target","src","noExtend","key","ssrDocument","getDocument","doc","ssrWindow","callback","id","getWindow","win","classesToTokens","classes","c","elementChildren","element","selector","window","children","el","createElement","tag","elementOffset","document","box","body","clientTop","clientLeft","scrollTop","scrollLeft","elementIndex","child","i","elementParents","parents","parent","elementOuterSize","size","includeMargins","makeElementsArray","setInnerHTML","html","s","Keyboard","_ref","swiper","extendParams","on","emit","handle","event","rtl","e","kc","pageUpDown","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","point","enable","disable","createElementIfNotDefined","originalParams","params","checkProps","Navigation","getEl","res","toggleEl","disabled","subEl","update","nextEl","prevEl","onPrevClick","onNextClick","init","initButton","dir","destroy","destroyButton","_s","targetEl","targetIsButton","path","pathEl","isHidden","classesToSelector","Pagination","pfx","number","bulletSize","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","position","bulletActiveClass","getMoveDirection","prevIndex","nextIndex","length","onBulletClick","index","moveDirection","current","previousIndex","slidesLength","total","bullets","firstIndex","lastIndex","midIndex","classesToRemove","suffix","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","fractionEl","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","Swiper","SwiperAdapter","container","options","swiperConfig","resolve","error","errorMessage","slides","slide","slideElement","targetSlide","newSlide","handler","handlers","swiperDiv","wrapperDiv","prevButton","nextButton","pagination","currentIndex","_a","transitionClass","content","component","props","value","lines","listContainer","line","trimmedLine","h1","h2","h3","imageMatch","img","li","p","transition","data","createSlideRunner","dslSource","context","config","ast","parseSlideDSL","slideDSL","compile","adapter","runner","SlideRunner"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
|
package/package.json
CHANGED
|
@@ -1,28 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slidejs/runner-swiper",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
|
-
"module": "./dist/index.
|
|
6
|
+
"module": "./dist/index.mjs",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
10
|
"types": "./dist/index.d.ts",
|
|
11
|
-
"import": "./dist/index.
|
|
11
|
+
"import": "./dist/index.mjs",
|
|
12
12
|
"require": "./dist/index.cjs"
|
|
13
13
|
},
|
|
14
14
|
"./style.css": "./dist/style.css"
|
|
15
15
|
},
|
|
16
|
-
"scripts": {
|
|
17
|
-
"build": "vite build",
|
|
18
|
-
"dev": "vite build --watch"
|
|
19
|
-
},
|
|
20
16
|
"dependencies": {
|
|
21
|
-
"
|
|
22
|
-
"@slidejs/
|
|
23
|
-
"@slidejs/
|
|
24
|
-
"@slidejs/
|
|
25
|
-
"
|
|
17
|
+
"swiper": "^11.0.0",
|
|
18
|
+
"@slidejs/context": "0.1.2",
|
|
19
|
+
"@slidejs/runner": "0.1.2",
|
|
20
|
+
"@slidejs/dsl": "0.1.2",
|
|
21
|
+
"@slidejs/core": "0.1.2"
|
|
26
22
|
},
|
|
27
23
|
"devDependencies": {
|
|
28
24
|
"@types/node": "^20.10.0",
|
|
@@ -30,5 +26,12 @@
|
|
|
30
26
|
"vite": "^5.0.0",
|
|
31
27
|
"vite-plugin-dts": "^3.7.0",
|
|
32
28
|
"vitest": "^1.0.0"
|
|
29
|
+
},
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
32
|
+
},
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "vite build",
|
|
35
|
+
"dev": "vite build --watch"
|
|
33
36
|
}
|
|
34
|
-
}
|
|
37
|
+
}
|
package/vite.config.ts
CHANGED
|
@@ -8,7 +8,7 @@ export default defineConfig({
|
|
|
8
8
|
entry: resolve(__dirname, 'src/index.ts'),
|
|
9
9
|
name: 'SlideJsSwiper',
|
|
10
10
|
formats: ['es', 'cjs'],
|
|
11
|
-
fileName: format => `index.${format === 'es' ? '
|
|
11
|
+
fileName: format => `index.${format === 'es' ? 'mjs' : 'cjs'}`,
|
|
12
12
|
},
|
|
13
13
|
rollupOptions: {
|
|
14
14
|
external: [
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../node_modules/.pnpm/swiper@11.2.10/node_modules/swiper/shared/ssr-window.esm.mjs","../../../../node_modules/.pnpm/swiper@11.2.10/node_modules/swiper/shared/utils.mjs","../../../../node_modules/.pnpm/swiper@11.2.10/node_modules/swiper/modules/keyboard.mjs","../../../../node_modules/.pnpm/swiper@11.2.10/node_modules/swiper/shared/create-element-if-not-defined.mjs","../../../../node_modules/.pnpm/swiper@11.2.10/node_modules/swiper/modules/navigation.mjs","../../../../node_modules/.pnpm/swiper@11.2.10/node_modules/swiper/shared/classes-to-selector.mjs","../../../../node_modules/.pnpm/swiper@11.2.10/node_modules/swiper/modules/pagination.mjs","../src/adapter.ts","../src/runner.ts"],"sourcesContent":["/**\n * SSR Window 5.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2025, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: June 27, 2025\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n const window = getWindow();\n const children = [...element.children];\n if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOfSlot(el, slot) {\n // Breadth-first search through all parent's children and assigned elements\n const elementsQueue = [slot];\n while (elementsQueue.length > 0) {\n const elementToCheck = elementsQueue.shift();\n if (el === elementToCheck) {\n return true;\n }\n elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : []));\n }\n}\nfunction elementIsChildOf(el, parent) {\n const window = getWindow();\n let isChild = parent.contains(el);\n if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n isChild = children.includes(el);\n if (!isChild) {\n isChild = elementIsChildOfSlot(el, parent);\n }\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\nfunction setInnerHTML(el, html) {\n if (html === void 0) {\n html = '';\n }\n if (typeof trustedTypes !== 'undefined') {\n el.innerHTML = trustedTypes.createPolicy('html', {\n createHTML: s => s\n }).createHTML(html);\n } else {\n el.innerHTML = html;\n }\n}\n\nexport { setCSSProperty as a, elementParents as b, createElement as c, elementOffset as d, elementChildren as e, now as f, getSlideTransformEl as g, elementOuterSize as h, elementIndex as i, classesToTokens as j, getTranslate as k, elementTransitionEnd as l, makeElementsArray as m, nextTick as n, isObject as o, getRotateFix as p, elementStyle as q, elementNextAll as r, setInnerHTML as s, elementPrevAll as t, animateCSSModeScroll as u, showWarning as v, elementIsChildOf as w, extend as x, deleteProps as y };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { b as elementParents, d 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.isContentEditable || 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 { 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, h as elementOuterSize, i as elementIndex, s as setInnerHTML, b 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 setInnerHTML(subEl, 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}\"></${params.bulletElement}>`;\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 = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n setInnerHTML(subEl, 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.find(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n });\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","/**\n * @slidejs/runner-swiper - SwiperAdapter 适配器实现\n *\n * 将 Slide DSL 渲染为 Swiper 幻灯片\n */\n\nimport { Swiper } from 'swiper';\nimport { Navigation, Pagination, Keyboard } from 'swiper/modules';\nimport type { SwiperOptions } from 'swiper';\nimport type { SlideDefinition } from '@slidejs/core';\nimport type { SlideAdapter, AdapterEvent, EventHandler } from '@slidejs/runner';\nimport type { SwiperAdapterOptions } from './types';\n\n// 注册 Swiper 模块\nSwiper.use([Navigation, Pagination, Keyboard]);\n\n/**\n * Swiper 适配器\n *\n * 实现 SlideAdapter 接口,将 SlideDefinition 渲染为 Swiper 幻灯片\n */\nexport class SwiperAdapter implements SlideAdapter {\n readonly name = 'swiper';\n\n private swiper?: Swiper;\n private swiperContainer?: HTMLElement;\n private swiperWrapper?: HTMLElement;\n private eventHandlers: Map<AdapterEvent, Set<EventHandler>> = new Map();\n\n /**\n * 初始化 Swiper 适配器\n *\n * @param container - 容器元素\n * @param options - Swiper 选项\n */\n async initialize(container: HTMLElement, options?: SwiperAdapterOptions): Promise<void> {\n try {\n // 创建 Swiper DOM 结构\n this.createSwiperStructure(container);\n\n // 初始化 Swiper\n if (!this.swiperContainer || !this.swiperWrapper) {\n throw new Error('Swiper container not created');\n }\n\n const swiperConfig: SwiperOptions = {\n // 默认配置\n direction: 'horizontal',\n loop: false,\n speed: 300,\n spaceBetween: 30,\n slidesPerView: 1,\n // 注册模块\n modules: [Navigation, Pagination, Keyboard],\n // 导航配置\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n // 分页配置\n pagination: {\n el: '.swiper-pagination',\n clickable: true,\n },\n // 键盘控制配置\n keyboard: {\n enabled: true,\n onlyInViewport: true,\n },\n ...options?.swiperConfig,\n };\n\n this.swiper = new Swiper(this.swiperContainer, swiperConfig);\n\n // 等待 Swiper 初始化完成\n // Swiper 初始化是同步的,但我们需要等待 DOM 更新\n await new Promise<void>(resolve => {\n // 使用 requestAnimationFrame 确保 DOM 已更新\n requestAnimationFrame(() => {\n resolve();\n });\n });\n\n // 设置事件监听\n this.setupEventListeners();\n\n // 触发 ready 事件\n this.emit('ready');\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n this.emit('error', { message: errorMessage });\n throw new Error(`Failed to initialize SwiperAdapter: ${errorMessage}`);\n }\n }\n\n /**\n * 渲染幻灯片\n *\n * @param slides - 幻灯片定义数组\n */\n async render(slides: SlideDefinition[]): Promise<void> {\n if (!this.swiperWrapper || !this.swiper) {\n throw new Error('SwiperAdapter not initialized');\n }\n\n try {\n // 清空现有幻灯片\n this.swiperWrapper.innerHTML = '';\n\n // 渲染每张幻灯片\n for (const slide of slides) {\n const slideElement = await this.renderSlide(slide);\n this.swiperWrapper.appendChild(slideElement);\n }\n\n // 更新 Swiper(重新计算尺寸和更新 slides)\n // 在 Swiper 11 中,update() 会自动重新计算所有内容\n this.swiper.update();\n\n // 触发 slideRendered 事件\n this.emit('slideRendered', { totalSlides: slides.length });\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n this.emit('error', { message: errorMessage });\n throw new Error(`Failed to render slides: ${errorMessage}`);\n }\n }\n\n /**\n * 销毁适配器\n */\n async destroy(): Promise<void> {\n if (this.swiper) {\n this.swiper.destroy(true, true);\n this.swiper = undefined;\n }\n\n if (this.swiperContainer) {\n this.swiperContainer.innerHTML = '';\n this.swiperContainer = undefined;\n }\n\n this.swiperWrapper = undefined;\n this.eventHandlers.clear();\n }\n\n /**\n * 导航到指定幻灯片\n *\n * @param index - 幻灯片索引\n */\n navigateTo(index: number): void {\n if (!this.swiper) {\n throw new Error('SwiperAdapter not initialized');\n }\n\n this.swiper.slideTo(index);\n }\n\n /**\n * 获取当前幻灯片索引\n */\n getCurrentIndex(): number {\n if (!this.swiper) {\n return 0;\n }\n\n return this.swiper.activeIndex;\n }\n\n /**\n * 获取幻灯片总数\n */\n getTotalSlides(): number {\n if (!this.swiper) {\n return 0;\n }\n\n return this.swiper.slides.length;\n }\n\n /**\n * 更新指定幻灯片\n *\n * @param index - 幻灯片索引\n * @param slide - 新的幻灯片定义\n */\n async updateSlide(index: number, slide: SlideDefinition): Promise<void> {\n if (!this.swiperWrapper || !this.swiper) {\n throw new Error('SwiperAdapter not initialized');\n }\n\n try {\n // 获取指定索引的 slide 元素\n const slides = this.swiperWrapper.querySelectorAll('.swiper-slide');\n const targetSlide = slides[index];\n\n if (!targetSlide) {\n throw new Error(`Slide at index ${index} not found`);\n }\n\n // 渲染新的幻灯片内容\n const newSlide = await this.renderSlide(slide);\n\n // 替换旧的 slide\n targetSlide.replaceWith(newSlide);\n\n // 更新 Swiper\n this.swiper.update();\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n this.emit('error', { message: errorMessage });\n throw new Error(`Failed to update slide: ${errorMessage}`);\n }\n }\n\n /**\n * 注册事件监听器\n *\n * @param event - 事件类型\n * @param handler - 事件处理器\n */\n on(event: AdapterEvent, handler: EventHandler): void {\n if (!this.eventHandlers.has(event)) {\n this.eventHandlers.set(event, new Set());\n }\n this.eventHandlers.get(event)!.add(handler);\n }\n\n /**\n * 移除事件监听器\n *\n * @param event - 事件类型\n * @param handler - 事件处理器\n */\n off(event: AdapterEvent, handler: EventHandler): void {\n const handlers = this.eventHandlers.get(event);\n if (handlers) {\n handlers.delete(handler);\n }\n }\n\n /**\n * 创建 Swiper DOM 结构\n *\n * @param container - 容器元素\n */\n private createSwiperStructure(container: HTMLElement): void {\n // 创建 .swiper 容器\n const swiperDiv = document.createElement('div');\n swiperDiv.className = 'swiper';\n\n // 创建 .swiper-wrapper 容器\n const wrapperDiv = document.createElement('div');\n wrapperDiv.className = 'swiper-wrapper';\n\n // 创建导航按钮\n const prevButton = document.createElement('div');\n prevButton.className = 'swiper-button-prev';\n const nextButton = document.createElement('div');\n nextButton.className = 'swiper-button-next';\n\n // 创建分页器\n const pagination = document.createElement('div');\n pagination.className = 'swiper-pagination';\n\n swiperDiv.appendChild(wrapperDiv);\n swiperDiv.appendChild(prevButton);\n swiperDiv.appendChild(nextButton);\n swiperDiv.appendChild(pagination);\n container.appendChild(swiperDiv);\n\n this.swiperContainer = swiperDiv;\n this.swiperWrapper = wrapperDiv;\n }\n\n /**\n * 设置 Swiper 事件监听\n */\n private setupEventListeners(): void {\n if (!this.swiper) {\n return;\n }\n\n // 监听幻灯片切换事件\n this.swiper.on('slideChange', () => {\n const currentIndex = this.swiper!.activeIndex;\n const previousIndex = this.swiper!.previousIndex;\n this.emit('slideChanged', {\n index: currentIndex,\n previousIndex,\n from: previousIndex,\n to: currentIndex,\n });\n });\n }\n\n /**\n * 渲染单张幻灯片\n *\n * @param slide - 幻灯片定义\n * @returns slide 元素\n */\n private async renderSlide(slide: SlideDefinition): Promise<HTMLElement> {\n const slideElement = document.createElement('div');\n slideElement.className = 'swiper-slide';\n\n // 设置过渡效果(通过 CSS 类)\n if (slide.behavior?.transition) {\n const transitionClass = this.mapTransition(slide.behavior.transition.type);\n if (transitionClass) {\n slideElement.classList.add(`slide-transition-${transitionClass}`);\n }\n }\n\n // 渲染内容\n if (slide.content.type === 'dynamic') {\n // 动态内容(Web Components)\n const content = await this.renderDynamicContent(slide.content.component, slide.content.props);\n slideElement.appendChild(content);\n } else {\n // 静态文本内容\n const content = this.renderTextContent(slide.content.lines);\n slideElement.appendChild(content);\n }\n\n return slideElement;\n }\n\n /**\n * 渲染动态内容(Web Component)\n *\n * 支持所有 Web Components,包括:\n * - 标准 Web Components(原生 Custom Elements)\n * - wsx 组件(编译为标准 Web Components)\n * - 其他框架的 Web Components(Vue、React、Angular 等)\n *\n * @param component - 组件名称\n * @param props - 组件属性\n * @returns 组件元素\n */\n private async renderDynamicContent(\n component: string,\n props: Record<string, unknown>\n ): Promise<HTMLElement> {\n // 创建 Web Component 元素\n const element = document.createElement(component);\n\n // 设置属性\n for (const [key, value] of Object.entries(props)) {\n if (typeof value === 'string' || typeof value === 'number') {\n // 字符串和数字 → HTML attributes\n element.setAttribute(key, String(value));\n } else if (typeof value === 'boolean') {\n // 布尔值 → HTML attributes(true 时设置空属性)\n if (value) {\n element.setAttribute(key, '');\n }\n } else {\n // 对象和数组 → JavaScript properties\n (element as Record<string, unknown>)[key] = value;\n }\n }\n\n return element;\n }\n\n /**\n * 渲染文本内容\n *\n * 支持以下格式:\n * - # 标题 -> h1\n * - ## 标题 -> h2\n * - ### 标题 -> h3\n * -  -> img\n * - - 列表项 -> ul/li\n * - 普通文本 -> p\n *\n * @param lines - 文本行数组\n * @returns 内容容器元素\n */\n private renderTextContent(lines: string[]): HTMLElement {\n const container = document.createElement('div');\n container.className = 'slide-content';\n\n let listContainer: HTMLUListElement | null = null;\n\n for (const line of lines) {\n const trimmedLine = line.trim();\n\n // 空行,结束列表\n if (!trimmedLine) {\n listContainer = null;\n continue;\n }\n\n // 标题 - # H1\n if (trimmedLine.startsWith('# ')) {\n listContainer = null;\n const h1 = document.createElement('h1');\n h1.textContent = trimmedLine.substring(2);\n container.appendChild(h1);\n continue;\n }\n\n // 标题 - ## H2\n if (trimmedLine.startsWith('## ')) {\n listContainer = null;\n const h2 = document.createElement('h2');\n h2.textContent = trimmedLine.substring(3);\n container.appendChild(h2);\n continue;\n }\n\n // 标题 - ### H3\n if (trimmedLine.startsWith('### ')) {\n listContainer = null;\n const h3 = document.createElement('h3');\n h3.textContent = trimmedLine.substring(4);\n container.appendChild(h3);\n continue;\n }\n\n // 图片 - \n const imageMatch = trimmedLine.match(/^!\\[(.*?)\\]\\((.*?)\\)$/);\n if (imageMatch) {\n listContainer = null;\n const img = document.createElement('img');\n img.alt = imageMatch[1];\n img.src = imageMatch[2];\n img.style.maxWidth = '80%';\n img.style.maxHeight = '500px';\n container.appendChild(img);\n continue;\n }\n\n // 列表项 - - 项目\n if (trimmedLine.startsWith('- ')) {\n if (!listContainer) {\n listContainer = document.createElement('ul');\n container.appendChild(listContainer);\n }\n const li = document.createElement('li');\n li.textContent = trimmedLine.substring(2);\n listContainer.appendChild(li);\n continue;\n }\n\n // 普通文本\n listContainer = null;\n const p = document.createElement('p');\n p.textContent = trimmedLine;\n container.appendChild(p);\n }\n\n return container;\n }\n\n /**\n * 映射 Slide DSL 过渡效果到 Swiper 过渡效果\n *\n * @param transition - Slide DSL 过渡效果\n * @returns Swiper 过渡效果类名(用于 CSS)\n */\n private mapTransition(\n transition?: 'slide' | 'zoom' | 'fade' | 'cube' | 'flip' | 'none'\n ): string | null {\n if (!transition || transition === 'none') {\n return null;\n }\n\n // Swiper 默认支持 slide,其他效果可以通过 CSS 实现\n // 返回类名以便通过 CSS 应用自定义过渡效果\n return transition;\n }\n\n /**\n * 触发事件\n *\n * @param event - 事件类型\n * @param data - 事件数据\n */\n private emit(event: AdapterEvent, data?: unknown): void {\n const handlers = this.eventHandlers.get(event);\n if (handlers) {\n for (const handler of handlers) {\n try {\n handler(data);\n } catch (error) {\n console.error(`Error in ${event} handler:`, error);\n }\n }\n }\n }\n}\n","/**\n * @slidejs/runner-swiper - SlideRunner 工厂函数\n *\n * 提供创建配置好的 SlideRunner 实例的便捷方法\n */\n\nimport { parseSlideDSL, compile } from '@slidejs/dsl';\nimport { SlideRunner } from '@slidejs/runner';\nimport type { SlideContext } from '@slidejs/context';\nimport { SwiperAdapter } from './adapter';\nimport type { SwiperAdapterOptions } from './types';\n\n/**\n * SlideRunner 配置选项\n */\nexport interface SlideRunnerConfig {\n /**\n * 容器选择器或 HTMLElement\n */\n container: string | HTMLElement;\n\n /**\n * Swiper 配置选项\n */\n swiperOptions?: SwiperAdapterOptions['swiperConfig'];\n}\n\n/**\n * 从 DSL 源代码创建并运行 SlideRunner\n *\n * @example\n * ```typescript\n * import { createSlideRunner } from '@slidejs/runner-swiper';\n *\n * const dslSource = `\n * present quiz \"demo\" {\n * rules {\n * rule start \"intro\" {\n * slide {\n * content text { \"Hello World!\" }\n * }\n * }\n * }\n * }\n * `;\n *\n * const context = { sourceType: 'quiz', sourceId: 'demo', items: [] };\n * const runner = await createSlideRunner(dslSource, context, {\n * container: '#app',\n * swiperOptions: {\n * navigation: true,\n * pagination: true,\n * },\n * });\n * ```\n */\nexport async function createSlideRunner<TContext extends SlideContext = SlideContext>(\n dslSource: string,\n context: TContext,\n config: SlideRunnerConfig\n): Promise<SlideRunner<TContext>> {\n // 1. 解析 DSL\n const ast = await parseSlideDSL(dslSource);\n\n // 2. 编译为 SlideDSL\n const slideDSL = compile<TContext>(ast);\n\n // 3. 创建适配器和 Runner\n const adapter = new SwiperAdapter();\n const runner = new SlideRunner<TContext>({\n container: config.container,\n adapter,\n adapterOptions: {\n swiperConfig: config.swiperOptions,\n },\n });\n\n // 4. 运行演示(这会初始化适配器并渲染幻灯片)\n await runner.run(slideDSL, context);\n\n // 注意:需要手动调用 runner.play() 来启动演示(导航到第一张幻灯片)\n // 返回 runner 以便用户可以控制演示\n return runner;\n}\n"],"names":["isObject","obj","extend","target","src","noExtend","key","ssrDocument","getDocument","doc","ssrWindow","callback","id","getWindow","win","classesToTokens","classes","c","elementChildren","element","selector","window","children","el","createElement","tag","elementOffset","document","box","body","clientTop","clientLeft","scrollTop","scrollLeft","elementIndex","child","i","elementParents","parents","parent","elementOuterSize","size","includeMargins","makeElementsArray","setInnerHTML","html","s","Keyboard","_ref","swiper","extendParams","on","emit","handle","event","rtl","e","kc","pageUpDown","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","point","enable","disable","createElementIfNotDefined","originalParams","params","checkProps","Navigation","getEl","res","toggleEl","disabled","subEl","update","nextEl","prevEl","onPrevClick","onNextClick","init","initButton","dir","destroy","destroyButton","_s","targetEl","targetIsButton","path","pathEl","isHidden","classesToSelector","Pagination","pfx","number","bulletSize","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","position","bulletActiveClass","getMoveDirection","prevIndex","nextIndex","length","onBulletClick","index","moveDirection","current","previousIndex","slidesLength","total","bullets","firstIndex","lastIndex","midIndex","classesToRemove","suffix","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","fractionEl","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","Swiper","SwiperAdapter","container","options","swiperConfig","resolve","error","errorMessage","slides","slide","slideElement","targetSlide","newSlide","handler","handlers","swiperDiv","wrapperDiv","prevButton","nextButton","pagination","currentIndex","_a","transitionClass","content","component","props","value","lines","listContainer","line","trimmedLine","h1","h2","h3","imageMatch","img","li","p","transition","data","createSlideRunner","dslSource","context","config","ast","parseSlideDSL","slideDSL","compile","adapter","runner","SlideRunner"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
|