@xwadex/fesd 0.0.1-4.5.rc → 0.0.1-4.6.rc

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-preview-bundle.js","sources":["../../src/fesdDB.js","../../src/fesd/detect4/detect4.js","../../src/fesd/shared/utils.js","../../src/fesd/shared/shared.js","../../src/fesd/anchor4/anchor4.js","../../node_modules/.pnpm/overlayscrollbars@2.8.3/node_modules/overlayscrollbars/overlayscrollbars.mjs","../../src/fesd/modal4/modernModal.js","../../src/fesd/modal4/modal4.js","../../src/fesd/aost4/aost4.js","../../src/fesd/video4/videoPlayer.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/environment.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/defaults.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/autoInitialize.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/constants.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/elementStatus.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/data.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/callback.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/class.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/tempImage.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/unobserve.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/counters.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/forEachSource.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/originalAttributes.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/set.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/event.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/load.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/reset.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/restore.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/cancelOnExit.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/intersectionHandlers.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/native.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/intersectionObserver.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/dom.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/online.js","../../node_modules/.pnpm/vanilla-lazyload@19.1.3/node_modules/vanilla-lazyload/dist/esm/lazyload.js","../../node_modules/.pnpm/tua-body-scroll-lock@1.5.0/node_modules/tua-body-scroll-lock/dist/tua-bsl.mjs","../../src/tools/utils.js","../../src/fesd/video4/video4.js","../../node_modules/.pnpm/ssr-window@4.0.2/node_modules/ssr-window/ssr-window.esm.js","../../node_modules/.pnpm/dom7@4.0.6/node_modules/dom7/dom7.esm.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/shared/dom.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/shared/utils.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/shared/get-support.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/shared/get-device.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/shared/get-browser.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/modules/resize/resize.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/modules/observer/observer.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/events-emitter.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/update/updateSize.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/update/updateSlides.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/update/updateAutoHeight.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/update/updateSlidesOffset.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/update/updateSlidesProgress.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/update/updateProgress.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/update/updateSlidesClasses.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/update/updateActiveIndex.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/update/updateClickedSlide.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/update/index.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/translate/getTranslate.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/translate/setTranslate.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/translate/minTranslate.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/translate/maxTranslate.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/translate/translateTo.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/translate/index.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/transition/setTransition.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/transition/transitionEmit.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/transition/transitionStart.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/transition/transitionEnd.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/transition/index.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/slide/slideTo.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/slide/slideToLoop.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/slide/slideNext.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/slide/slidePrev.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/slide/slideReset.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/slide/slideToClosest.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/slide/slideToClickedSlide.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/slide/index.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/loop/loopCreate.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/loop/loopFix.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/loop/loopDestroy.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/loop/index.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/grab-cursor/setGrabCursor.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/grab-cursor/index.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/events/onTouchStart.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/events/onTouchMove.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/events/onTouchEnd.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/events/onResize.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/events/onClick.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/events/onScroll.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/events/index.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/breakpoints/setBreakpoint.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/breakpoints/getBreakpoint.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/breakpoints/index.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/classes/addClasses.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/classes/removeClasses.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/classes/index.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/images/loadImage.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/images/preloadImages.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/images/index.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/check-overflow/index.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/defaults.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/moduleExtendParams.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/core/core.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/virtual/virtual.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/keyboard/keyboard.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/mousewheel/mousewheel.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/shared/create-element-if-not-defined.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/navigation/navigation.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/shared/classes-to-selector.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/pagination/pagination.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/scrollbar/scrollbar.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/parallax/parallax.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/zoom/zoom.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/lazy/lazy.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/controller/controller.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/a11y/a11y.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/history/history.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/hash-navigation/hash-navigation.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/autoplay/autoplay.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/thumbs/thumbs.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/free-mode/free-mode.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/grid/grid.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/manipulation/methods/appendSlide.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/manipulation/methods/prependSlide.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/manipulation/methods/addSlide.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/manipulation/methods/removeSlide.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/manipulation/methods/removeAllSlides.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/manipulation/manipulation.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/shared/effect-init.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/shared/effect-target.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/shared/effect-virtual-transition-end.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/effect-fade/effect-fade.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/effect-cube/effect-cube.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/shared/create-shadow.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/effect-flip/effect-flip.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/effect-creative/effect-creative.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/modules/effect-cards/effect-cards.js","../../node_modules/.pnpm/swiper@8.4.7/node_modules/swiper/swiper-bundle.esm.js","../../src/fesd/dropdown4/cityData.js","../../src/fesd/dropdown4/dropdown4.js","../../src/fesd/tab4/tab4.js","../../src/fesd/collapse4/collapse4.js","../../src/fesd/ripple4/ripple4.js","../../src/fesd/image-validate/image-validate.js","../../src/fesd/image-preview/image-preview.js"],"sourcesContent":["const FESD_DB = {\n library: {},\n // 紀錄使用的瀏覽器及裝置資訊\n is: {},\n // 各套件設定 (Beta.)\n video4: {\n SETTINGS: {\n videoId: null,\n videoType: null,\n videoAutoplay: 'off',\n videoMode: 'onBox',\n videoButton: '.playButton',\n videoCover: 'on',\n videoLayoutNo: 0,\n videoTarget: 'video-template',\n videoTargetRoute: 'https://cdn.wdd.idv.tw/fesd/video4_lightbox.html',\n videoVimeoHash: null,\n },\n ATTRS: {\n id: 'video-id',\n type: 'video-type',\n autoplay: 'video-autoplay',\n hash: 'vimeo-hash',\n },\n EVENTS: {\n init: null,\n afterInit: null,\n beforeDestroy: null,\n afterUpdate: null,\n },\n // video4 target 內放置結構 index 對應 videoLayoutNo\n LAYOUT: ['<div class=\"playButton\"></div><div class=\"overlay\"></div>'],\n // videoPlayer customElements 內結構\n TEMPLATE() {\n return `<div class=\"player-container\"><div class=\"player-wrapper\"></div></div>`;\n },\n },\n share4: {\n SETTINGS: {\n success: null,\n text: null,\n className: null,\n duration: 1500,\n },\n },\n modal4: {\n SETTINGS: {\n target: null,\n route: null,\n action: 'toggle',\n container: 'body',\n },\n ATTRS: {\n id: 'data-modal-id',\n close: 'data-modal-close',\n destroy: 'data-modal-destroy',\n },\n EVENTS: {\n init: null,\n success: null,\n error: null,\n complete: null,\n open: null,\n close: null,\n destroy: null,\n update: null,\n },\n TEMPLATE(type) {\n return `\n <div class=\"modal-scroller\">\n <div class=\"modal-wrapper\" ${type === 'destroy' ? 'data-modal-destroy' : 'data-modal-close'}>\n <div class=\"modal-content\" stop-propagation>\n </div>\n </div>\n `;\n },\n },\n marquee4: {\n SETTINGS: {\n direction: 'left', // 方向 - top || right || bottom || left\n behavior: 'normal', // 模式 - normal || alternate || endStop\n duration: 50000, // 持續時間(毫秒) - Number\n durationBreakpoints: {}, // 持續時間斷點 - Object\n autoplay: 300, // 自動撥放延遲時間(毫秒) - Number || false\n pauseOnMouseenter: false, // 滑鼠移入暫停 - Boolean\n continual: true, // 連續不間斷 - Boolean\n gap: 30, // 跑馬燈內容之間的距離 - Number\n },\n },\n dropdown4: {\n SETTINGS: {\n scrollbar: {\n 'scrollbar-track-color': 'transparent',\n 'scrollbar-thumb-color': 'rgba(0,0,0,.4)',\n 'scrollbar-thumb-hover-color': 'rgba(0,0,0,.55)',\n 'scrollbar-radius': '10px',\n },\n },\n TEMPLATE(filter, filterPlaceholder) {\n return `\n <div class=\"select-wrapper\">\n <div class=\"select-display\"></div>\n <i class=\"dropdown-icon\"></i>\n <div class=\"dropdown\">\n ${\n filter\n ? `<div class=\"filter-bar\">\n <input class=\"filter-input\" type=\"text\" placeholder=\"${filterPlaceholder}\" disabled>\n </div>`\n : ''\n }\n <div class=\"dropdown-scroller\">\n <ul class=\"dropdown-list\"></ul>\n </div>\n </div>\n </div>\n `;\n },\n },\n article4: {\n SETTINGS: {\n basic_rwd: 900,\n },\n },\n aost4: {\n SETTINGS: {\n scroller: window,\n class: 'aost-show',\n delay: 0,\n start: 80,\n end: 0,\n mirror: false,\n repeat: false, // false | true | 'up' | 'down'\n direction: 'vertical', // 'vertical' | 'horizontal'\n breakpoints: {\n 1160: 'data-aost-offset-1160',\n 1024: 'data-aost-offset-1024',\n 600: 'data-aost-offset-600',\n },\n },\n EVENTS: {\n init: null,\n enter: null,\n leave: null,\n },\n },\n anchor4: {\n SETTINGS: {\n target: null,\n container: null,\n spacer: null,\n gap: 0,\n speed: 800,\n delay: 0,\n direction: 'vertical',\n easing: 'easeInOutCirc',\n },\n EVENTS: {\n afterInit: null,\n beforeDestroy: null,\n afterUpdate: null,\n beforeScroll: null,\n afterScroll: null,\n },\n },\n multipurpose4: {\n SETTINGS: {\n type: 'drag',\n drag: {\n center: true,\n draggable: true,\n navigation: true,\n selected: false,\n },\n collapse: {\n selected: false,\n placeholder: '類別',\n },\n dropdown: {\n target: 'dropdown-el',\n placeholder: '',\n value: '',\n },\n breakpoint: {},\n },\n TEMPLATE: {\n drag() {\n return `<div class=\"drag-container\">\n <ul class=\"wrapper\">\n </ul>\n </div>`;\n },\n collapse(collapse) {\n return `<div class=\"drag-container\">\n <ul class=\"wrapper\">\n </ul>\n <div class=\"collapse-placeholder\">${collapse.placeholder}</div>\n </div>\n <div class=\"collapse-container\">\n <ul class=\"wrapper\">\n </ul>\n </div>`;\n },\n dropdown(dropdown) {\n return `<dropdown-el${dropdown.placeholder ? ` d4-placeholder=\"${dropdown.placeholder}\"` : ''}${dropdown.value ? ` d4-value=\"${dropdown.value}\"` : ''}></dropdown-el>`;\n },\n },\n },\n tab4: {\n SETTINGS: {\n // 樣式 normal / process\n type: 'normal',\n // 進場方式 fade / slide\n display: 'fade',\n // 預設頁面\n defaultPage: '',\n // 滑動扣除高度\n anchorGap: 0,\n tabGroup: 'true',\n // 動畫設定\n transition: {\n duration: 500,\n timing: 'ease',\n delay: 0,\n },\n // 步驟狀態綁定\n stepOutput: '.step-show',\n },\n },\n collapse4: {\n SETTINGS: {\n collapseClass: 'collapse',\n block: '[collapse-block]',\n target: '[collapse-target]',\n single: true,\n defaultOpen: false,\n targetStopPropagation: false,\n defaultActiveMark: 'collapse-active',\n transition: {\n property: 'height',\n duration: '400ms',\n function: 'ease',\n delay: '0s',\n },\n // expand\n breakpoints: {\n 320: {},\n },\n },\n // ATTRS: {\n // wrapper: 'collapse-wrapper',\n // block: 'collapse-block',\n // target: 'collapse-target',\n // },\n EVENTS: {\n init: null,\n afterInit: null,\n destroy: null,\n beforeDestroy: null,\n update: null,\n afterUpdate: null,\n },\n },\n ripple4: {\n SETTINGS: {\n // 是否要加 hover 效果?\n hover: true,\n // 使用 hover 時是否要啟用點擊 ripple 效果?\n click: false,\n // ripple's 的顏色\n color: '#fff',\n // ripple's 透明度\n opacity: '1',\n // ripple 毫秒\n duration: 600,\n // hover 毫秒 ?\n speed: 600,\n },\n },\n};\n\nexport default FESD_DB;\n","const Detect4 = {};\nDetect4.init = function () {\n const userAgent = navigator.userAgent;\n\n // isBrowser4\n fesdDB.library.browser = {\n // Firefox 1.0+\n isFirefox: typeof InstallTrigger !== 'undefined',\n // Opera 8.0+\n isOpera: (!!window.opr && !!opr.addons) || !!window.opera || userAgent.indexOf(' OPR/') >= 0,\n // Internet Explorer 6-11\n isIE: /*@cc_on!@*/ false || !!document.documentMode,\n // Edge 20+\n isEdge: !(false || !!document.documentMode) && !!window.StyleMedia,\n // Edge (based on chromium) detection\n isEdgeChromium: /\\sedg\\//i.test(userAgent) || /edg([ea]|ios)/i.test(userAgent),\n // Safari 3.0+ \"[object HTMLElementConstructor]\"\n isSafari: !/chrome|crios|crmo/i.test(userAgent) && /safari/i.test(userAgent),\n // Chrome 1 - 79\n isChrome: (!!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime)) || /chrome|crios|crmo/i.test(userAgent),\n };\n\n // isMobile4\n fesdDB.library.mobile = {\n // Android\n isAndroid: userAgent.indexOf('Android') > -1 || userAgent.indexOf('Adr') > -1,\n // iOS | ipad\n isiOS: userAgent.indexOf('Mac') > -1 && 'ontouchend' in document,\n };\n\n // isOs4\n fesdDB.library.os = {\n // window\n isWindows: userAgent.indexOf('Win') > -1,\n // macos\n isMacOS: userAgent.indexOf('Mac') > -1,\n // UNIX\n isUNIX: userAgent.indexOf('X11') > -1,\n // Linux\n isLinux: userAgent.indexOf('Linux') > -1,\n };\n\n // **eric - 以下待優化\n const isBrowser4 = () => {\n const { browser } = fesdDB.library;\n return Object.keys(browser).find(key => {\n if (browser[key]) return browser[key];\n });\n };\n\n const isMobile4 = () => {\n const { mobile } = fesdDB.library;\n return Object.keys(mobile).some(key => {\n if (mobile[key]) return mobile[key];\n });\n };\n\n const isOs4 = () => {\n const { os } = fesdDB.library;\n return Object.keys(os).find(key => {\n if (os[key]) return os[key];\n });\n };\n\n fesdDB.is.isBrowser4 = isBrowser4();\n fesdDB.is.isMobile4 = isMobile4();\n fesdDB.is.isOs4 = isOs4();\n};\n\nexport default Detect4;\n","\n// insertAdjacentHTML 語意化\nexport const insert = {\n before: 'beforebegin',\n after: 'afterend',\n append: 'beforeend',\n prepend: 'afterbegin'\n}\n\n// check value is string and not empty\nexport const isString = (value) => {\n return typeof value === 'string' && value !== '';\n};\n\n// check value is number and not NaN\nexport const isNumber = (value) => {\n return typeof value === 'number' && !isNaN(value);\n};\n\n// check is HTML element\nexport const isElement = (value) => {\n return value instanceof HTMLElement;\n};\n\n// check is Node List\nexport const isNodeList = (value) => {\n return value instanceof NodeList;\n};\n\n// check element is exist\nexport const isElementExist = (value) => {\n return getElement(value) !== null;\n};\n\n// check value is a function\nexport const isFunction = (value) => {\n return typeof value === 'function';\n};\n\n// if value is an element then return value, if not then query value\nexport const getElement = (value) => {\n return isElement(value) ? value : document.querySelector(value);\n};\n\n// if value is an element then return value, if not then query value\nexport const getAllElements = (value) => {\n return isNodeList(value) ? value : document.querySelectorAll(value);\n};\n\n// create a unique id\nexport const createUid = () => {\n return Math.random().toString(36).substr(2, 9);\n};\n\n// parse string to HTML element\nexport const toHTMLElement = (str) => {\n const dom = document.createElement('div');\n dom.innerHTML = str;\n return dom.childNodes;\n};\n\n// parse json to object\nexport const jsonParse = (json) => {\n try {\n JSON.parse(json);\n } catch (e) {\n return json;\n }\n return JSON.parse(json);\n};\n\n// get element transform X\nexport const getTransformX = (target) => {\n const transform = getComputedStyle(target).transform;\n let mat = transform.match(/^matrix3d\\((.+)\\)$/);\n if (mat) return parseFloat(mat[1].split(', ')[12]);\n mat = transform.match(/^matrix\\((.+)\\)$/);\n return mat ? parseFloat(mat[1].split(', ')[4]) : 0;\n};\n\n// get element transform Y\nexport const getTransformY = (target) => {\n const transform = getComputedStyle(target).transform;\n let mat = transform.match(/^matrix3d\\((.+)\\)$/);\n if (mat) return parseFloat(mat[1].split(', ')[13]);\n mat = transform.match(/^matrix\\((.+)\\)$/);\n return mat ? parseFloat(mat[1].split(', ')[5]) : 0;\n};\n\n// warn\nexport const warn = (target, msg) => {\n console.warn(`[${target} warn]: ${msg}`);\n};\n\n// error\nexport const error = (target, msg) => {\n console.error(`[${target} error]: ${msg}`);\n};\n","import {\n isFunction\n} from './utils'\n\nexport default {\n on(events, handler) {\n if (!isFunction(handler)) return this;\n\n const { __events__ } = this\n\n events.split(' ').forEach(evt => {\n if (!__events__[evt]) __events__[evt] = []\n __events__[evt].push(handler)\n })\n\n return this\n },\n\n off(events, handler) {\n const { __events__ } = this\n\n events.split(' ').forEach(evt => {\n if (typeof handler === 'undefined') __events__[evt] = []\n else if (__events__[evt]) {\n __events__[evt].forEach((evtHandler, index) => {\n if (evtHandler === handler) __events__[evt].splice(index, 1)\n })\n }\n })\n\n return this\n },\n\n once(events, handler) {\n if (!isFunction(handler)) return this;\n\n const onceHandler = (...args) => {\n this.off(events, onceHandler)\n handler.apply(this, args)\n }\n\n return this.on(events, onceHandler)\n },\n\n emit(...args) {\n const { __events__ } = this\n\n const event = args[0]\n const data = args.slice(1, args.length)\n\n if (!__events__[event]) return this\n\n __events__[event].forEach(handler => {\n if (isFunction(handler)) handler.apply(this, data)\n })\n\n return this\n }\n}","import fesdDB from '../../fesdDB.js';\nimport SHARED from './../shared/shared';\nimport { isString, isElementExist, isFunction, getElement, getAllElements } from './../shared/utils';\n\nconst ease = {\n easeInOutCirc(t, b, c, d) {\n if ((t /= d / 2) < 1) return (-c / 2) * (Math.sqrt(1 - t * t) - 1) + b;\n return (c / 2) * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;\n },\n easeInQuart(t, b, c, d) {\n return c * (t /= d) * t * t * t + b;\n },\n easeOutQuart(t, b, c, d) {\n return -c * ((t = t / d - 1) * t * t * t - 1) + b;\n },\n};\n\n// scroll handler\nconst scrollTo = (options, instance) => {\n const { target, container, spacer, speed, gap, easing, direction } = options;\n\n const isHorizontal = direction === 'horizontal';\n const scrollDirection = isHorizontal ? 'scrollLeft' : 'scrollTop';\n const rectPosition = isHorizontal ? 'left' : 'top';\n const rectSpace = isHorizontal ? 'width' : 'height';\n\n const containerEle = isElementExist(container) ? getElement(container) : document.scrollingElement;\n const start = containerEle[scrollDirection];\n const targetPoint = isElementExist(target) ? getElement(target).getBoundingClientRect()[rectPosition] : 0 - start;\n const spacerGap = isElementExist(spacer) ? getElement(spacer).getBoundingClientRect()[rectSpace] : 0;\n const change = targetPoint - gap - spacerGap;\n const increment = 15;\n let currentTime = 0;\n\n if (change === 0) return;\n\n const emitEvent = eventName => {\n const targetEle = getElement(target);\n if (instance) instance.emit(eventName, targetEle);\n if (!instance && options.on) {\n if (isFunction(options.on[eventName])) options.on[eventName](targetEle);\n }\n };\n\n emitEvent('beforeScroll');\n\n const animateScroll = () => {\n currentTime += increment;\n const val = ease[easing](currentTime, start, change, speed);\n containerEle[scrollDirection] = val;\n if (currentTime < speed) requestAnimationFrame(animateScroll);\n if (currentTime >= speed) emitEvent('afterScroll');\n };\n\n requestAnimationFrame(animateScroll);\n};\n\n// class Anchor4\nclass Anchor4 {\n constructor(el, options = {}) {\n this.__storage__ = {\n el,\n options,\n };\n\n this.#create();\n }\n\n #create() {\n const { el, options } = this.__storage__;\n if (!isString(el) || !isElementExist(el)) return;\n\n const { SETTINGS, EVENTS } = fesdDB.anchor4;\n\n this.elements = getAllElements(el);\n this.options = Object.assign({}, SETTINGS, options);\n this.__events__ = Object.assign({}, EVENTS);\n\n if (this.options.on) {\n for (const [k, v] of Object.entries(this.options.on)) {\n this.__events__[k] = [v];\n }\n }\n\n this.#init();\n }\n\n #init() {\n const { elements, options } = this;\n\n elements.forEach(el => {\n el.anchor = {};\n el.anchor.instance = this;\n el.anchor.eventHandler = this.#trigger;\n el.anchor.defaultOptions = options;\n el.addEventListener('click', el.anchor.eventHandler);\n });\n\n this.emit('afterInit');\n }\n\n #trigger() {\n /** the keyword `this` in this method is pointed to the click target */\n const { defaultOptions, eventHandler, instance } = this.anchor;\n\n const options = {\n target: this.getAttribute('data-anchor-target') || defaultOptions.target,\n container: this.getAttribute('data-anchor-container') || defaultOptions.container,\n spacer: this.getAttribute('data-anchor-spacer') || defaultOptions.spacer,\n gap: parseInt(this.getAttribute('data-anchor-gap') || defaultOptions.gap),\n speed: parseInt(this.getAttribute('data-anchor-speed')) || defaultOptions.speed,\n delay: parseInt(this.getAttribute('data-anchor-delay')) || defaultOptions.delay,\n easing: this.getAttribute('data-anchor-easing') || defaultOptions.easing,\n direction: this.getAttribute('data-anchor-direction') || defaultOptions.direction,\n };\n\n // prevent multiple click\n this.removeEventListener('click', eventHandler);\n setTimeout(() => {\n this.addEventListener('click', eventHandler);\n }, options.speed);\n\n // do scroll\n setTimeout(() => {\n scrollTo(options, instance);\n }, options.delay);\n }\n\n destroy() {\n const { elements } = this;\n\n this.emit('beforeDestroy');\n\n elements.forEach(el => {\n if (!el.anchor) return;\n\n el.removeEventListener('click', el.anchor.eventHandler);\n delete el.anchor;\n });\n\n return this;\n }\n\n update() {\n this.destroy().#create();\n\n this.emit('afterUpdate');\n\n return this;\n }\n\n static run(options) {\n const { SETTINGS } = fesdDB.anchor4;\n const newOptions = Object.assign({}, SETTINGS, options);\n\n setTimeout(() => {\n scrollTo(newOptions);\n }, newOptions.delay);\n }\n\n static url(options) {\n const { SETTINGS } = fesdDB.anchor4;\n\n const targetStr = window.location.search || window.location.hash;\n const targetName = targetStr.split('?').pop();\n const target = document.querySelector(`[data-anchor-id=\"${targetName}\"]`);\n\n if (!target) return;\n\n const newOptions = Object.assign({}, SETTINGS, options, { target });\n\n setTimeout(() => {\n scrollTo(newOptions);\n }, newOptions.delay);\n }\n}\n\nObject.assign(Anchor4.prototype, SHARED);\n\nexport default Anchor4;\n","/*!\n * OverlayScrollbars\n * Version: 2.8.3\n *\n * Copyright (c) Rene Haas | KingSora.\n * https://github.com/KingSora\n *\n * Released under the MIT license.\n */\nconst createCache = (t, n) => {\n const {o: o, i: s, u: e} = t;\n let c = o;\n let r;\n const cacheUpdateContextual = (t, n) => {\n const o = c;\n const l = t;\n const i = n || (s ? !s(o, l) : o !== l);\n if (i || e) {\n c = l;\n r = o;\n }\n return [ c, i, r ];\n };\n const cacheUpdateIsolated = t => cacheUpdateContextual(n(c, r), t);\n const getCurrentCache = t => [ c, !!t, r ];\n return [ n ? cacheUpdateIsolated : cacheUpdateContextual, getCurrentCache ];\n};\n\nconst t = typeof window !== \"undefined\" && typeof document !== \"undefined\";\n\nconst n = t ? window : {};\n\nconst o = Math.max;\n\nconst s = Math.min;\n\nconst e = Math.round;\n\nconst c = Math.abs;\n\nconst r = Math.sign;\n\nconst l = n.cancelAnimationFrame;\n\nconst i = n.requestAnimationFrame;\n\nconst a = n.setTimeout;\n\nconst u = n.clearTimeout;\n\nconst getApi = t => typeof n[t] !== \"undefined\" ? n[t] : void 0;\n\nconst _ = getApi(\"MutationObserver\");\n\nconst d = getApi(\"IntersectionObserver\");\n\nconst f = getApi(\"ResizeObserver\");\n\nconst p = getApi(\"ScrollTimeline\");\n\nconst v = t && Node.ELEMENT_NODE;\n\nconst {toString: h, hasOwnProperty: g} = Object.prototype;\n\nconst isUndefined = t => t === void 0;\n\nconst isNull = t => t === null;\n\nconst isNumber = t => typeof t === \"number\";\n\nconst isString = t => typeof t === \"string\";\n\nconst isBoolean = t => typeof t === \"boolean\";\n\nconst isFunction = t => typeof t === \"function\";\n\nconst isArray = t => Array.isArray(t);\n\nconst isObject = t => typeof t === \"object\" && !isArray(t) && !isNull(t);\n\nconst isArrayLike = t => {\n const n = !!t && t.length;\n const o = isNumber(n) && n > -1 && n % 1 == 0;\n return isArray(t) || !isFunction(t) && o ? n > 0 && isObject(t) ? n - 1 in t : true : false;\n};\n\nconst isPlainObject = t => {\n if (!t || !isObject(t)) {\n return false;\n }\n let n;\n const o = \"constructor\";\n const s = t[o];\n const e = s && s.prototype;\n const c = g.call(t, o);\n const r = e && g.call(e, \"isPrototypeOf\");\n if (s && !c && !r) {\n return false;\n }\n for (n in t) {}\n return isUndefined(n) || g.call(t, n);\n};\n\nconst isHTMLElement = t => {\n const n = HTMLElement;\n return t ? n ? t instanceof n : t.nodeType === v : false;\n};\n\nconst isElement = t => {\n const n = Element;\n return t ? n ? t instanceof n : t.nodeType === v : false;\n};\n\nconst animationCurrentTime = () => performance.now();\n\nconst animateNumber = (t, n, s, e, c) => {\n let r = 0;\n const a = animationCurrentTime();\n const u = o(0, s);\n const frame = s => {\n const l = animationCurrentTime();\n const _ = l - a;\n const d = _ >= u;\n const f = s ? 1 : 1 - (o(0, a + u - l) / u || 0);\n const p = (n - t) * (isFunction(c) ? c(f, f * u, 0, 1, u) : f) + t;\n const v = d || f === 1;\n e && e(p, f, v);\n r = v ? 0 : i((() => frame()));\n };\n frame();\n return t => {\n l(r);\n t && frame(t);\n };\n};\n\nfunction each(t, n) {\n if (isArrayLike(t)) {\n for (let o = 0; o < t.length; o++) {\n if (n(t[o], o, t) === false) {\n break;\n }\n }\n } else if (t) {\n each(Object.keys(t), (o => n(t[o], o, t)));\n }\n return t;\n}\n\nconst inArray = (t, n) => t.indexOf(n) >= 0;\n\nconst concat = (t, n) => t.concat(n);\n\nconst push = (t, n, o) => {\n !o && !isString(n) && isArrayLike(n) ? Array.prototype.push.apply(t, n) : t.push(n);\n return t;\n};\n\nconst from = t => Array.from(t || []);\n\nconst createOrKeepArray = t => isArray(t) ? t : [ t ];\n\nconst isEmptyArray = t => !!t && !t.length;\n\nconst deduplicateArray = t => from(new Set(t));\n\nconst runEachAndClear = (t, n, o) => {\n const runFn = t => t && t.apply(void 0, n || []);\n each(t, runFn);\n !o && (t.length = 0);\n};\n\nconst b = \"paddingTop\";\n\nconst w = \"paddingRight\";\n\nconst y = \"paddingLeft\";\n\nconst m = \"paddingBottom\";\n\nconst S = \"marginLeft\";\n\nconst O = \"marginRight\";\n\nconst $ = \"marginBottom\";\n\nconst C = \"overflowX\";\n\nconst x = \"overflowY\";\n\nconst H = \"width\";\n\nconst E = \"height\";\n\nconst z = \"visible\";\n\nconst I = \"hidden\";\n\nconst A = \"scroll\";\n\nconst capitalizeFirstLetter = t => {\n const n = String(t || \"\");\n return n ? n[0].toUpperCase() + n.slice(1) : \"\";\n};\n\nconst equal = (t, n, o, s) => {\n if (t && n) {\n let e = true;\n each(o, (o => {\n const c = s ? s(t[o]) : t[o];\n const r = s ? s(n[o]) : n[o];\n if (c !== r) {\n e = false;\n }\n }));\n return e;\n }\n return false;\n};\n\nconst equalWH = (t, n) => equal(t, n, [ \"w\", \"h\" ]);\n\nconst equalXY = (t, n) => equal(t, n, [ \"x\", \"y\" ]);\n\nconst equalTRBL = (t, n) => equal(t, n, [ \"t\", \"r\", \"b\", \"l\" ]);\n\nconst noop = () => {};\n\nconst bind = (t, ...n) => t.bind(0, ...n);\n\nconst selfClearTimeout = t => {\n let n;\n const o = t ? a : i;\n const s = t ? u : l;\n return [ e => {\n s(n);\n n = o((() => e()), isFunction(t) ? t() : t);\n }, () => s(n) ];\n};\n\nconst debounce = (t, n) => {\n const {_: o, p: s, v: e, m: c} = n || {};\n let r;\n let _;\n let d;\n let f;\n let p = noop;\n const v = function invokeFunctionToDebounce(n) {\n p();\n u(r);\n f = r = _ = void 0;\n p = noop;\n t.apply(this, n);\n };\n const mergeParms = t => c && _ ? c(_, t) : t;\n const flush = () => {\n if (p !== noop) {\n v(mergeParms(d) || d);\n }\n };\n const h = function debouncedFn() {\n const t = from(arguments);\n const n = isFunction(o) ? o() : o;\n const c = isNumber(n) && n >= 0;\n if (c) {\n const o = isFunction(s) ? s() : s;\n const c = isNumber(o) && o >= 0;\n const h = n > 0 ? a : i;\n const g = n > 0 ? u : l;\n const b = mergeParms(t);\n const w = b || t;\n const y = v.bind(0, w);\n let m;\n p();\n if (e && !f) {\n y();\n f = true;\n m = h((() => f = void 0), n);\n } else {\n m = h(y, n);\n if (c && !r) {\n r = a(flush, o);\n }\n }\n p = () => g(m);\n _ = d = w;\n } else {\n v(t);\n }\n };\n h.S = flush;\n return h;\n};\n\nconst hasOwnProperty = (t, n) => Object.prototype.hasOwnProperty.call(t, n);\n\nconst keys = t => t ? Object.keys(t) : [];\n\nconst assignDeep = (t, n, o, s, e, c, r) => {\n const l = [ n, o, s, e, c, r ];\n if ((typeof t !== \"object\" || isNull(t)) && !isFunction(t)) {\n t = {};\n }\n each(l, (n => {\n each(n, ((o, s) => {\n const e = n[s];\n if (t === e) {\n return true;\n }\n const c = isArray(e);\n if (e && isPlainObject(e)) {\n const n = t[s];\n let o = n;\n if (c && !isArray(n)) {\n o = [];\n } else if (!c && !isPlainObject(n)) {\n o = {};\n }\n t[s] = assignDeep(o, e);\n } else {\n t[s] = c ? e.slice() : e;\n }\n }));\n }));\n return t;\n};\n\nconst removeUndefinedProperties = (t, n) => each(assignDeep({}, t), ((t, o, s) => {\n if (t === void 0) {\n delete s[o];\n } else if (n && t && isPlainObject(t)) {\n s[o] = removeUndefinedProperties(t, n);\n }\n}));\n\nconst isEmptyObject = t => {\n for (const n in t) {\n return false;\n }\n return true;\n};\n\nconst capNumber = (t, n, e) => o(t, s(n, e));\n\nconst getDomTokensArray = t => from(new Set((isArray(t) ? t : (t || \"\").split(\" \")).filter((t => t))));\n\nconst getAttr = (t, n) => t && t.getAttribute(n);\n\nconst hasAttr = (t, n) => t && t.hasAttribute(n);\n\nconst setAttrs = (t, n, o) => {\n each(getDomTokensArray(n), (n => {\n t && t.setAttribute(n, String(o || \"\"));\n }));\n};\n\nconst removeAttrs = (t, n) => {\n each(getDomTokensArray(n), (n => t && t.removeAttribute(n)));\n};\n\nconst domTokenListAttr = (t, n) => {\n const o = getDomTokensArray(getAttr(t, n));\n const s = bind(setAttrs, t, n);\n const domTokenListOperation = (t, n) => {\n const s = new Set(o);\n each(getDomTokensArray(t), (t => {\n s[n](t);\n }));\n return from(s).join(\" \");\n };\n return {\n O: t => s(domTokenListOperation(t, \"delete\")),\n $: t => s(domTokenListOperation(t, \"add\")),\n C: t => {\n const n = getDomTokensArray(t);\n return n.reduce(((t, n) => t && o.includes(n)), n.length > 0);\n }\n };\n};\n\nconst removeAttrClass = (t, n, o) => {\n domTokenListAttr(t, n).O(o);\n return bind(addAttrClass, t, n, o);\n};\n\nconst addAttrClass = (t, n, o) => {\n domTokenListAttr(t, n).$(o);\n return bind(removeAttrClass, t, n, o);\n};\n\nconst addRemoveAttrClass = (t, n, o, s) => (s ? addAttrClass : removeAttrClass)(t, n, o);\n\nconst hasAttrClass = (t, n, o) => domTokenListAttr(t, n).C(o);\n\nconst createDomTokenListClass = t => domTokenListAttr(t, \"class\");\n\nconst removeClass = (t, n) => {\n createDomTokenListClass(t).O(n);\n};\n\nconst addClass = (t, n) => {\n createDomTokenListClass(t).$(n);\n return bind(removeClass, t, n);\n};\n\nconst find = (t, n) => {\n const o = [];\n const s = n ? isElement(n) && n : document;\n return s ? push(o, s.querySelectorAll(t)) : o;\n};\n\nconst findFirst = (t, n) => {\n const o = n ? isElement(n) && n : document;\n return o ? o.querySelector(t) : null;\n};\n\nconst is = (t, n) => {\n if (isElement(t)) {\n return t.matches(n);\n }\n return false;\n};\n\nconst isBodyElement = t => is(t, \"body\");\n\nconst contents = t => t ? from(t.childNodes) : [];\n\nconst parent = t => t && t.parentElement;\n\nconst closest = (t, n) => isElement(t) && t.closest(n);\n\nconst getFocusedElement = t => (t || document).activeElement;\n\nconst liesBetween = (t, n, o) => {\n const s = closest(t, n);\n const e = t && findFirst(o, s);\n const c = closest(e, n) === s;\n return s && e ? s === t || e === t || c && closest(closest(t, o), n) !== s : false;\n};\n\nconst removeElements = t => {\n if (isArrayLike(t)) {\n each(from(t), (t => removeElements(t)));\n } else if (t) {\n const n = parent(t);\n n && n.removeChild(t);\n }\n};\n\nconst before = (t, n, o) => {\n if (o && t) {\n let s = n;\n let e;\n if (isArrayLike(o)) {\n e = document.createDocumentFragment();\n each(o, (t => {\n if (t === s) {\n s = t.previousSibling;\n }\n e.appendChild(t);\n }));\n } else {\n e = o;\n }\n if (n) {\n if (!s) {\n s = t.firstChild;\n } else if (s !== n) {\n s = s.nextSibling;\n }\n }\n t.insertBefore(e, s || null);\n return () => removeElements(o);\n }\n return noop;\n};\n\nconst appendChildren = (t, n) => before(t, null, n);\n\nconst insertAfter = (t, n) => before(parent(t), t && t.nextSibling, n);\n\nconst createDiv = t => {\n const n = document.createElement(\"div\");\n setAttrs(n, \"class\", t);\n return n;\n};\n\nconst createDOM = t => {\n const n = createDiv();\n n.innerHTML = t.trim();\n return each(contents(n), (t => removeElements(t)));\n};\n\nconst T = /^--/;\n\nconst getCSSVal = (t, n) => t.getPropertyValue(n) || t[n] || \"\";\n\nconst validFiniteNumber = t => {\n const n = t || 0;\n return isFinite(n) ? n : 0;\n};\n\nconst parseToZeroOrNumber = t => validFiniteNumber(parseFloat(t || \"\"));\n\nconst ratioToCssPercent = t => `${(validFiniteNumber(t) * 100).toFixed(3)}%`;\n\nconst numberToCssPx = t => `${validFiniteNumber(t)}px`;\n\nfunction setStyles(t, n) {\n t && n && each(n, ((n, o) => {\n try {\n const s = t.style;\n const e = isNumber(n) ? numberToCssPx(n) : (n || \"\") + \"\";\n if (T.test(o)) {\n s.setProperty(o, e);\n } else {\n s[o] = e;\n }\n } catch (s) {}\n }));\n}\n\nfunction getStyles(t, o, s) {\n const e = isString(o);\n let c = e ? \"\" : {};\n if (t) {\n const r = n.getComputedStyle(t, s) || t.style;\n c = e ? getCSSVal(r, o) : from(o).reduce(((t, n) => {\n t[n] = getCSSVal(r, n);\n return t;\n }), c);\n }\n return c;\n}\n\nconst topRightBottomLeft = (t, n, o) => {\n const s = n ? `${n}-` : \"\";\n const e = o ? `-${o}` : \"\";\n const c = `${s}top${e}`;\n const r = `${s}right${e}`;\n const l = `${s}bottom${e}`;\n const i = `${s}left${e}`;\n const a = getStyles(t, [ c, r, l, i ]);\n return {\n t: parseToZeroOrNumber(a[c]),\n r: parseToZeroOrNumber(a[r]),\n b: parseToZeroOrNumber(a[l]),\n l: parseToZeroOrNumber(a[i])\n };\n};\n\nconst getTrasformTranslateValue = (t, n) => `translate${isObject(t) ? `(${t.x},${t.y})` : `${n ? \"X\" : \"Y\"}(${t})`}`;\n\nconst elementHasDimensions = t => !!(t.offsetWidth || t.offsetHeight || t.getClientRects().length);\n\nconst D = {\n w: 0,\n h: 0\n};\n\nconst getElmWidthHeightProperty = (t, n) => n ? {\n w: n[`${t}Width`],\n h: n[`${t}Height`]\n} : D;\n\nconst getWindowSize = t => getElmWidthHeightProperty(\"inner\", t || n);\n\nconst k = bind(getElmWidthHeightProperty, \"offset\");\n\nconst M = bind(getElmWidthHeightProperty, \"client\");\n\nconst R = bind(getElmWidthHeightProperty, \"scroll\");\n\nconst getFractionalSize = t => {\n const n = parseFloat(getStyles(t, H)) || 0;\n const o = parseFloat(getStyles(t, E)) || 0;\n return {\n w: n - e(n),\n h: o - e(o)\n };\n};\n\nconst getBoundingClientRect = t => t.getBoundingClientRect();\n\nconst hasDimensions = t => !!t && elementHasDimensions(t);\n\nconst domRectHasDimensions = t => !!(t && (t[E] || t[H]));\n\nconst domRectAppeared = (t, n) => {\n const o = domRectHasDimensions(t);\n const s = domRectHasDimensions(n);\n return !s && o;\n};\n\nconst removeEventListener = (t, n, o, s) => {\n each(getDomTokensArray(n), (n => {\n t && t.removeEventListener(n, o, s);\n }));\n};\n\nconst addEventListener = (t, n, o, s) => {\n var e;\n const c = (e = s && s.H) != null ? e : true;\n const r = s && s.I || false;\n const l = s && s.A || false;\n const i = {\n passive: c,\n capture: r\n };\n return bind(runEachAndClear, getDomTokensArray(n).map((n => {\n const s = l ? e => {\n removeEventListener(t, n, s, r);\n o && o(e);\n } : o;\n t && t.addEventListener(n, s, i);\n return bind(removeEventListener, t, n, s, r);\n })));\n};\n\nconst stopPropagation = t => t.stopPropagation();\n\nconst preventDefault = t => t.preventDefault();\n\nconst stopAndPrevent = t => stopPropagation(t) || preventDefault(t);\n\nconst scrollElementTo = (t, n) => {\n const {x: o, y: s} = isNumber(n) ? {\n x: n,\n y: n\n } : n || {};\n isNumber(o) && (t.scrollLeft = o);\n isNumber(s) && (t.scrollTop = s);\n};\n\nconst getElementScroll = t => ({\n x: t.scrollLeft,\n y: t.scrollTop\n});\n\nconst getZeroScrollCoordinates = () => ({\n T: {\n x: 0,\n y: 0\n },\n D: {\n x: 0,\n y: 0\n }\n});\n\nconst sanitizeScrollCoordinates = (t, n) => {\n const {T: o, D: s} = t;\n const {w: e, h: l} = n;\n const sanitizeAxis = (t, n, o) => {\n let s = r(t) * o;\n let e = r(n) * o;\n if (s === e) {\n const o = c(t);\n const r = c(n);\n e = o > r ? 0 : e;\n s = o < r ? 0 : s;\n }\n s = s === e ? 0 : s;\n return [ s + 0, e + 0 ];\n };\n const [i, a] = sanitizeAxis(o.x, s.x, e);\n const [u, _] = sanitizeAxis(o.y, s.y, l);\n return {\n T: {\n x: i,\n y: u\n },\n D: {\n x: a,\n y: _\n }\n };\n};\n\nconst isDefaultDirectionScrollCoordinates = ({T: t, D: n}) => {\n const getAxis = (t, n) => t === 0 && t <= n;\n return {\n x: getAxis(t.x, n.x),\n y: getAxis(t.y, n.y)\n };\n};\n\nconst getScrollCoordinatesPercent = ({T: t, D: n}, o) => {\n const getAxis = (t, n, o) => capNumber(0, 1, (t - o) / (t - n) || 0);\n return {\n x: getAxis(t.x, n.x, o.x),\n y: getAxis(t.y, n.y, o.y)\n };\n};\n\nconst focusElement = t => {\n if (t && t.focus) {\n t.focus({\n preventScroll: true\n });\n }\n};\n\nconst manageListener = (t, n) => {\n each(createOrKeepArray(n), t);\n};\n\nconst createEventListenerHub = t => {\n const n = new Map;\n const removeEvent = (t, o) => {\n if (t) {\n const s = n.get(t);\n manageListener((t => {\n if (s) {\n s[t ? \"delete\" : \"clear\"](t);\n }\n }), o);\n } else {\n n.forEach((t => {\n t.clear();\n }));\n n.clear();\n }\n };\n const addEvent = (t, o) => {\n if (isString(t)) {\n const s = n.get(t) || new Set;\n n.set(t, s);\n manageListener((t => {\n isFunction(t) && s.add(t);\n }), o);\n return bind(removeEvent, t, o);\n }\n if (isBoolean(o) && o) {\n removeEvent();\n }\n const s = keys(t);\n const e = [];\n each(s, (n => {\n const o = t[n];\n o && push(e, addEvent(n, o));\n }));\n return bind(runEachAndClear, e);\n };\n const triggerEvent = (t, o) => {\n each(from(n.get(t)), (t => {\n if (o && !isEmptyArray(o)) {\n t.apply(0, o);\n } else {\n t();\n }\n }));\n };\n addEvent(t || {});\n return [ addEvent, removeEvent, triggerEvent ];\n};\n\nconst opsStringify = t => JSON.stringify(t, ((t, n) => {\n if (isFunction(n)) {\n throw 0;\n }\n return n;\n}));\n\nconst getPropByPath = (t, n) => t ? `${n}`.split(\".\").reduce(((t, n) => t && hasOwnProperty(t, n) ? t[n] : void 0), t) : void 0;\n\nconst V = {\n paddingAbsolute: false,\n showNativeOverlaidScrollbars: false,\n update: {\n elementEvents: [ [ \"img\", \"load\" ] ],\n debounce: [ 0, 33 ],\n attributes: null,\n ignoreMutation: null\n },\n overflow: {\n x: \"scroll\",\n y: \"scroll\"\n },\n scrollbars: {\n theme: \"os-theme-dark\",\n visibility: \"auto\",\n autoHide: \"never\",\n autoHideDelay: 1300,\n autoHideSuspend: false,\n dragScroll: true,\n clickScroll: false,\n pointers: [ \"mouse\", \"touch\", \"pen\" ]\n }\n};\n\nconst getOptionsDiff = (t, n) => {\n const o = {};\n const s = concat(keys(n), keys(t));\n each(s, (s => {\n const e = t[s];\n const c = n[s];\n if (isObject(e) && isObject(c)) {\n assignDeep(o[s] = {}, getOptionsDiff(e, c));\n if (isEmptyObject(o[s])) {\n delete o[s];\n }\n } else if (hasOwnProperty(n, s) && c !== e) {\n let t = true;\n if (isArray(e) || isArray(c)) {\n try {\n if (opsStringify(e) === opsStringify(c)) {\n t = false;\n }\n } catch (r) {}\n }\n if (t) {\n o[s] = c;\n }\n }\n }));\n return o;\n};\n\nconst createOptionCheck = (t, n, o) => s => [ getPropByPath(t, s), o || getPropByPath(n, s) !== void 0 ];\n\nconst L = `data-overlayscrollbars`;\n\nconst P = \"os-environment\";\n\nconst U = `${P}-scrollbar-hidden`;\n\nconst N = `${L}-initialize`;\n\nconst q = \"noClipping\";\n\nconst B = `${L}-body`;\n\nconst F = L;\n\nconst j = \"host\";\n\nconst X = `${L}-viewport`;\n\nconst Y = C;\n\nconst W = x;\n\nconst J = \"arrange\";\n\nconst K = \"measuring\";\n\nconst G = \"scrollbarHidden\";\n\nconst Q = \"scrollbarPressed\";\n\nconst Z = \"noContent\";\n\nconst tt = `${L}-padding`;\n\nconst nt = `${L}-content`;\n\nconst ot = \"os-size-observer\";\n\nconst st = `${ot}-appear`;\n\nconst et = `${ot}-listener`;\n\nconst ct = `${et}-scroll`;\n\nconst rt = `${et}-item`;\n\nconst lt = `${rt}-final`;\n\nconst it = \"os-trinsic-observer\";\n\nconst at = \"os-theme-none\";\n\nconst ut = \"os-scrollbar\";\n\nconst _t = `${ut}-rtl`;\n\nconst dt = `${ut}-horizontal`;\n\nconst ft = `${ut}-vertical`;\n\nconst pt = `${ut}-track`;\n\nconst vt = `${ut}-handle`;\n\nconst ht = `${ut}-visible`;\n\nconst gt = `${ut}-cornerless`;\n\nconst bt = `${ut}-interaction`;\n\nconst wt = `${ut}-unusable`;\n\nconst yt = `${ut}-auto-hide`;\n\nconst mt = `${yt}-hidden`;\n\nconst St = `${ut}-wheel`;\n\nconst Ot = `${pt}-interactive`;\n\nconst $t = `${vt}-interactive`;\n\nlet Ct;\n\nconst createEnvironment = () => {\n const getNativeScrollbarSize = (t, n, o) => {\n appendChildren(document.body, t);\n appendChildren(document.body, t);\n const s = M(t);\n const e = k(t);\n const c = getFractionalSize(n);\n o && removeElements(t);\n return {\n x: e.h - s.h + c.h,\n y: e.w - s.w + c.w\n };\n };\n const getNativeScrollbarsHiding = t => {\n let n = false;\n const o = addClass(t, U);\n try {\n n = getStyles(t, \"scrollbar-width\") === \"none\" || getStyles(t, \"display\", \"::-webkit-scrollbar\") === \"none\";\n } catch (s) {}\n o();\n return n;\n };\n const t = `.${P}{scroll-behavior:auto!important;position:fixed;opacity:0;visibility:hidden;overflow:scroll;height:200px;width:200px;z-index:-1}.${P} div{width:200%;height:200%;margin:10px 0}.${U}{scrollbar-width:none!important}.${U}::-webkit-scrollbar,.${U}::-webkit-scrollbar-corner{appearance:none!important;display:none!important;width:0!important;height:0!important}`;\n const o = createDOM(`<div class=\"${P}\"><div></div><style>${t}</style></div>`);\n const s = o[0];\n const e = s.firstChild;\n const [c, , r] = createEventListenerHub();\n const [l, i] = createCache({\n o: getNativeScrollbarSize(s, e),\n i: equalXY\n }, bind(getNativeScrollbarSize, s, e, true));\n const [a] = i();\n const u = getNativeScrollbarsHiding(s);\n const _ = {\n x: a.x === 0,\n y: a.y === 0\n };\n const d = {\n elements: {\n host: null,\n padding: !u,\n viewport: t => u && isBodyElement(t) && t,\n content: false\n },\n scrollbars: {\n slot: true\n },\n cancel: {\n nativeScrollbarsOverlaid: false,\n body: null\n }\n };\n const f = assignDeep({}, V);\n const v = bind(assignDeep, {}, f);\n const h = bind(assignDeep, {}, d);\n const g = {\n k: a,\n M: _,\n R: u,\n V: !!p,\n L: bind(c, \"r\"),\n P: h,\n U: t => assignDeep(d, t) && h(),\n N: v,\n q: t => assignDeep(f, t) && v(),\n B: assignDeep({}, d),\n F: assignDeep({}, f)\n };\n removeAttrs(s, \"style\");\n removeElements(s);\n addEventListener(n, \"resize\", (() => {\n r(\"r\", []);\n }));\n if (isFunction(n.matchMedia) && !u && (!_.x || !_.y)) {\n const addZoomListener = t => {\n const o = n.matchMedia(`(resolution: ${n.devicePixelRatio}dppx)`);\n addEventListener(o, \"change\", (() => {\n t();\n addZoomListener(t);\n }), {\n A: true\n });\n };\n addZoomListener((() => {\n const [t, n] = l();\n assignDeep(g.k, t);\n r(\"r\", [ n ]);\n }));\n }\n return g;\n};\n\nconst getEnvironment = () => {\n if (!Ct) {\n Ct = createEnvironment();\n }\n return Ct;\n};\n\nconst resolveInitialization = (t, n) => isFunction(n) ? n.apply(0, t) : n;\n\nconst staticInitializationElement = (t, n, o, s) => {\n const e = isUndefined(s) ? o : s;\n const c = resolveInitialization(t, e);\n return c || n.apply(0, t);\n};\n\nconst dynamicInitializationElement = (t, n, o, s) => {\n const e = isUndefined(s) ? o : s;\n const c = resolveInitialization(t, e);\n return !!c && (isHTMLElement(c) ? c : n.apply(0, t));\n};\n\nconst cancelInitialization = (t, n) => {\n const {nativeScrollbarsOverlaid: o, body: s} = n || {};\n const {M: e, R: c, P: r} = getEnvironment();\n const {nativeScrollbarsOverlaid: l, body: i} = r().cancel;\n const a = o != null ? o : l;\n const u = isUndefined(s) ? i : s;\n const _ = (e.x || e.y) && a;\n const d = t && (isNull(u) ? !c : u);\n return !!_ || !!d;\n};\n\nconst xt = new WeakMap;\n\nconst addInstance = (t, n) => {\n xt.set(t, n);\n};\n\nconst removeInstance = t => {\n xt.delete(t);\n};\n\nconst getInstance = t => xt.get(t);\n\nconst createEventContentChange = (t, n, o) => {\n let s = false;\n const e = o ? new WeakMap : false;\n const destroy = () => {\n s = true;\n };\n const updateElements = c => {\n if (e && o) {\n const r = o.map((n => {\n const [o, s] = n || [];\n const e = s && o ? (c || find)(o, t) : [];\n return [ e, s ];\n }));\n each(r, (o => each(o[0], (c => {\n const r = o[1];\n const l = e.get(c) || [];\n const i = t.contains(c);\n if (i && r) {\n const t = addEventListener(c, r, (o => {\n if (s) {\n t();\n e.delete(c);\n } else {\n n(o);\n }\n }));\n e.set(c, push(l, t));\n } else {\n runEachAndClear(l);\n e.delete(c);\n }\n }))));\n }\n };\n updateElements();\n return [ destroy, updateElements ];\n};\n\nconst createDOMObserver = (t, n, o, s) => {\n let e = false;\n const {j: c, X: r, Y: l, W: i, J: a, K: u} = s || {};\n const d = debounce((() => e && o(true)), {\n _: 33,\n p: 99\n });\n const [f, p] = createEventContentChange(t, d, l);\n const v = c || [];\n const h = r || [];\n const g = concat(v, h);\n const observerCallback = (e, c) => {\n if (!isEmptyArray(c)) {\n const r = a || noop;\n const l = u || noop;\n const _ = [];\n const d = [];\n let f = false;\n let v = false;\n each(c, (o => {\n const {attributeName: e, target: c, type: a, oldValue: u, addedNodes: p, removedNodes: g} = o;\n const b = a === \"attributes\";\n const w = a === \"childList\";\n const y = t === c;\n const m = b && e;\n const S = m && getAttr(c, e || \"\");\n const O = isString(S) ? S : null;\n const $ = m && u !== O;\n const C = inArray(h, e) && $;\n if (n && (w || !y)) {\n const n = b && $;\n const a = n && i && is(c, i);\n const d = a ? !r(c, e, u, O) : !b || n;\n const f = d && !l(o, !!a, t, s);\n each(p, (t => push(_, t)));\n each(g, (t => push(_, t)));\n v = v || f;\n }\n if (!n && y && $ && !r(c, e, u, O)) {\n push(d, e);\n f = f || C;\n }\n }));\n p((t => deduplicateArray(_).reduce(((n, o) => {\n push(n, find(t, o));\n return is(o, t) ? push(n, o) : n;\n }), [])));\n if (n) {\n !e && v && o(false);\n return [ false ];\n }\n if (!isEmptyArray(d) || f) {\n const t = [ deduplicateArray(d), f ];\n !e && o.apply(0, t);\n return t;\n }\n }\n };\n const b = new _(bind(observerCallback, false));\n return [ () => {\n b.observe(t, {\n attributes: true,\n attributeOldValue: true,\n attributeFilter: g,\n subtree: n,\n childList: n,\n characterData: n\n });\n e = true;\n return () => {\n if (e) {\n f();\n b.disconnect();\n e = false;\n }\n };\n }, () => {\n if (e) {\n d.S();\n return observerCallback(true, b.takeRecords());\n }\n } ];\n};\n\nconst Ht = {};\n\nconst Et = {};\n\nconst addPlugins = t => {\n each(t, (t => each(t, ((n, o) => {\n Ht[o] = t[o];\n }))));\n};\n\nconst registerPluginModuleInstances = (t, n, o) => keys(t).map((s => {\n const {static: e, instance: c} = t[s];\n const [r, l, i] = o || [];\n const a = o ? c : e;\n if (a) {\n const t = o ? a(r, l, n) : a(n);\n return (i || Et)[s] = t;\n }\n}));\n\nconst getStaticPluginModuleInstance = t => Et[t];\n\nconst zt = \"__osOptionsValidationPlugin\";\n\nconst It = \"__osSizeObserverPlugin\";\n\nconst At = /* @__PURE__ */ (() => ({\n [It]: {\n static: () => (t, n, o) => {\n const s = 3333333;\n const e = \"scroll\";\n const c = createDOM(`<div class=\"${rt}\" dir=\"ltr\"><div class=\"${rt}\"><div class=\"${lt}\"></div></div><div class=\"${rt}\"><div class=\"${lt}\" style=\"width: 200%; height: 200%\"></div></div></div>`);\n const r = c[0];\n const a = r.lastChild;\n const u = r.firstChild;\n const _ = u == null ? void 0 : u.firstChild;\n let d = k(r);\n let f = d;\n let p = false;\n let v;\n const reset = () => {\n scrollElementTo(u, s);\n scrollElementTo(a, s);\n };\n const onResized = t => {\n v = 0;\n if (p) {\n d = f;\n n(t === true);\n }\n };\n const onScroll = t => {\n f = k(r);\n p = !t || !equalWH(f, d);\n if (t) {\n stopPropagation(t);\n if (p && !v) {\n l(v);\n v = i(onResized);\n }\n } else {\n onResized(t === false);\n }\n reset();\n };\n const h = [ appendChildren(t, c), addEventListener(u, e, onScroll), addEventListener(a, e, onScroll) ];\n addClass(t, ct);\n setStyles(_, {\n [H]: s,\n [E]: s\n });\n i(reset);\n return [ o ? bind(onScroll, false) : reset, h ];\n }\n }\n}))();\n\nconst getShowNativeOverlaidScrollbars = (t, n) => {\n const {M: o} = n;\n const [s, e] = t(\"showNativeOverlaidScrollbars\");\n return [ s && o.x && o.y, e ];\n};\n\nconst overflowIsVisible = t => t.indexOf(z) === 0;\n\nconst createViewportOverflowState = (t, n) => {\n const getAxisOverflowStyle = (t, n, o, s) => {\n const e = t === z ? I : t.replace(`${z}-`, \"\");\n const c = overflowIsVisible(t);\n const r = overflowIsVisible(o);\n if (!n && !s) {\n return I;\n }\n if (c && r) {\n return z;\n }\n if (c) {\n const t = n ? z : I;\n return n && s ? e : t;\n }\n const l = r && s ? z : I;\n return n ? e : l;\n };\n const o = {\n x: getAxisOverflowStyle(n.x, t.x, n.y, t.y),\n y: getAxisOverflowStyle(n.y, t.y, n.x, t.x)\n };\n return {\n G: o,\n Z: {\n x: o.x === A,\n y: o.y === A\n }\n };\n};\n\nconst Tt = \"__osScrollbarsHidingPlugin\";\n\nconst Dt = /* @__PURE__ */ (() => ({\n [Tt]: {\n static: () => ({\n tt: (t, n, o, s, e) => {\n const {nt: c, ot: r} = t;\n const {R: l, M: i, k: a} = s;\n const u = !c && !l && (i.x || i.y);\n const [_] = getShowNativeOverlaidScrollbars(e, s);\n const readViewportOverflowState = () => {\n const getStatePerAxis = t => {\n const n = getStyles(r, t);\n const o = n === A;\n return [ n, o ];\n };\n const [t, n] = getStatePerAxis(C);\n const [o, s] = getStatePerAxis(x);\n return {\n G: {\n x: t,\n y: o\n },\n Z: {\n x: n,\n y: s\n }\n };\n };\n const _getViewportOverflowHideOffset = t => {\n const {Z: n} = t;\n const o = l || _ ? 0 : 42;\n const getHideOffsetPerAxis = (t, n, s) => {\n const e = t ? o : s;\n const c = n && !l ? e : 0;\n const r = t && !!o;\n return [ c, r ];\n };\n const [s, e] = getHideOffsetPerAxis(i.x, n.x, a.x);\n const [c, r] = getHideOffsetPerAxis(i.y, n.y, a.y);\n return {\n st: {\n x: s,\n y: c\n },\n et: {\n x: e,\n y: r\n }\n };\n };\n const _hideNativeScrollbars = (t, {ct: o}, s) => {\n if (!c) {\n const e = assignDeep({}, {\n [O]: 0,\n [$]: 0,\n [S]: 0\n });\n const {st: c, et: r} = _getViewportOverflowHideOffset(t);\n const {x: l, y: i} = r;\n const {x: a, y: u} = c;\n const {rt: _} = n;\n const d = o ? S : O;\n const f = o ? y : w;\n const p = _[d];\n const v = _[$];\n const h = _[f];\n const g = _[m];\n e[H] = `calc(100% + ${u + p * -1}px)`;\n e[d] = -u + p;\n e[$] = -a + v;\n if (s) {\n e[f] = h + (i ? u : 0);\n e[m] = g + (l ? a : 0);\n }\n return e;\n }\n };\n const _arrangeViewport = (t, s, e) => {\n if (u) {\n const {rt: c} = n;\n const {st: l, et: i} = _getViewportOverflowHideOffset(t);\n const {x: a, y: u} = i;\n const {x: _, y: d} = l;\n const {ct: f} = o;\n const p = f ? w : y;\n const v = c[p];\n const h = c.paddingTop;\n const g = s.w + e.w;\n const b = s.h + e.h;\n const m = {\n w: d && u ? `${d + g - v}px` : \"\",\n h: _ && a ? `${_ + b - h}px` : \"\"\n };\n setStyles(r, {\n \"--os-vaw\": m.w,\n \"--os-vah\": m.h\n });\n }\n return u;\n };\n const _undoViewportArrange = t => {\n if (u) {\n const s = t || readViewportOverflowState();\n const {rt: e} = n;\n const {et: c} = _getViewportOverflowHideOffset(s);\n const {x: l, y: i} = c;\n const a = {};\n const assignProps = t => each(t, (t => {\n a[t] = e[t];\n }));\n if (l) {\n assignProps([ $, b, m ]);\n }\n if (i) {\n assignProps([ S, O, y, w ]);\n }\n const _ = getStyles(r, keys(a));\n const d = removeAttrClass(r, X, J);\n setStyles(r, a);\n return [ () => {\n setStyles(r, assignDeep({}, _, _hideNativeScrollbars(s, o, u)));\n d();\n }, s ];\n }\n return [ noop ];\n };\n return {\n lt: _getViewportOverflowHideOffset,\n it: _arrangeViewport,\n ut: _undoViewportArrange,\n _t: _hideNativeScrollbars\n };\n }\n })\n }\n}))();\n\nconst kt = \"__osClickScrollPlugin\";\n\nconst Mt = /* @__PURE__ */ (() => ({\n [kt]: {\n static: () => (t, n, o, s, e) => {\n let c = 0;\n let r = noop;\n const animateClickScroll = l => {\n r = animateNumber(l, l + s * Math.sign(o), 133, ((o, l, i) => {\n t(o);\n const u = n();\n const _ = u + s;\n const d = e >= u && e <= _;\n if (i && !d) {\n if (c) {\n animateClickScroll(o);\n } else {\n const t = a((() => {\n animateClickScroll(o);\n }), 222);\n r = () => {\n clearTimeout(t);\n };\n }\n c++;\n }\n }));\n };\n animateClickScroll(0);\n return () => r();\n }\n }\n}))();\n\nconst createSizeObserver = (t, n, o) => {\n const {dt: s} = o || {};\n const e = getStaticPluginModuleInstance(It);\n const [c] = createCache({\n o: false,\n u: true\n });\n return () => {\n const o = [];\n const r = createDOM(`<div class=\"${ot}\"><div class=\"${et}\"></div></div>`);\n const l = r[0];\n const i = l.firstChild;\n const onSizeChangedCallbackProxy = t => {\n const o = t instanceof ResizeObserverEntry;\n let s = false;\n let e = false;\n if (o) {\n const [n, , o] = c(t.contentRect);\n const r = domRectHasDimensions(n);\n e = domRectAppeared(n, o);\n s = !e && !r;\n } else {\n e = t === true;\n }\n if (!s) {\n n({\n ft: true,\n dt: e\n });\n }\n };\n if (f) {\n const t = new f((t => onSizeChangedCallbackProxy(t.pop())));\n t.observe(i);\n push(o, (() => {\n t.disconnect();\n }));\n } else if (e) {\n const [t, n] = e(i, onSizeChangedCallbackProxy, s);\n push(o, concat([ addClass(l, st), addEventListener(l, \"animationstart\", t) ], n));\n } else {\n return noop;\n }\n return bind(runEachAndClear, push(o, appendChildren(t, l)));\n };\n};\n\nconst createTrinsicObserver = (t, n) => {\n let o;\n const isHeightIntrinsic = t => t.h === 0 || t.isIntersecting || t.intersectionRatio > 0;\n const s = createDiv(it);\n const [e] = createCache({\n o: false\n });\n const triggerOnTrinsicChangedCallback = (t, o) => {\n if (t) {\n const s = e(isHeightIntrinsic(t));\n const [, c] = s;\n return c && !o && n(s) && [ s ];\n }\n };\n const intersectionObserverCallback = (t, n) => triggerOnTrinsicChangedCallback(n.pop(), t);\n return [ () => {\n const n = [];\n if (d) {\n o = new d(bind(intersectionObserverCallback, false), {\n root: t\n });\n o.observe(s);\n push(n, (() => {\n o.disconnect();\n }));\n } else {\n const onSizeChanged = () => {\n const t = k(s);\n triggerOnTrinsicChangedCallback(t);\n };\n push(n, createSizeObserver(s, onSizeChanged)());\n onSizeChanged();\n }\n return bind(runEachAndClear, push(n, appendChildren(t, s)));\n }, () => o && intersectionObserverCallback(true, o.takeRecords()) ];\n};\n\nconst createObserversSetup = (t, n, o, s) => {\n let e;\n let c;\n let r;\n let l;\n let i;\n let a;\n const u = `[${F}]`;\n const _ = `[${X}]`;\n const d = [];\n const p = [ \"wrap\", \"cols\", \"rows\" ];\n const v = [ \"id\", \"class\", \"style\", \"open\" ];\n const {vt: h, ht: g, ot: b, gt: w, bt: y, wt: m, nt: S, yt: O, St: $, Ot: C} = t;\n const getDirectionIsRTL = t => getStyles(t, \"direction\") === \"rtl\";\n const x = {\n $t: false,\n ct: getDirectionIsRTL(h)\n };\n const H = getEnvironment();\n const E = getStaticPluginModuleInstance(Tt);\n const [z] = createCache({\n i: equalWH,\n o: {\n w: 0,\n h: 0\n }\n }, (() => {\n const s = E && E.tt(t, n, x, H, o).ut;\n const e = O && S;\n const c = !e && hasAttrClass(g, F, q);\n const r = !S && $(J);\n const l = r && getElementScroll(w);\n const i = C(K, c);\n const a = r && s && s()[0];\n const u = R(b);\n const _ = getFractionalSize(b);\n a && a();\n scrollElementTo(w, l);\n c && i();\n return {\n w: u.w + _.w,\n h: u.h + _.h\n };\n }));\n const I = m ? p : concat(v, p);\n const A = debounce(s, {\n _: () => e,\n p: () => c,\n m(t, n) {\n const [o] = t;\n const [s] = n;\n return [ concat(keys(o), keys(s)).reduce(((t, n) => {\n t[n] = o[n] || s[n];\n return t;\n }), {}) ];\n }\n });\n const setDirection = t => {\n const n = getDirectionIsRTL(h);\n assignDeep(t, {\n Ct: a !== n\n });\n assignDeep(x, {\n ct: n\n });\n a = n;\n };\n const onTrinsicChanged = (t, n) => {\n const [o, e] = t;\n const c = {\n xt: e\n };\n assignDeep(x, {\n $t: o\n });\n !n && s(c);\n return c;\n };\n const onSizeChanged = ({ft: t, dt: n}) => {\n const o = t && !n;\n const e = !o && H.R ? A : s;\n const c = {\n ft: t || n,\n dt: n\n };\n setDirection(c);\n e(c);\n };\n const onContentMutation = (t, n) => {\n const [, o] = z();\n const e = {\n Ht: o\n };\n setDirection(e);\n const c = t ? s : A;\n o && !n && c(e);\n return e;\n };\n const onHostMutation = (t, n, o) => {\n const s = {\n Et: n\n };\n setDirection(s);\n if (n && !o) {\n A(s);\n }\n return s;\n };\n const [T, D] = y ? createTrinsicObserver(g, onTrinsicChanged) : [];\n const k = !S && createSizeObserver(g, onSizeChanged, {\n dt: true\n });\n const [M, V] = createDOMObserver(g, false, onHostMutation, {\n X: v,\n j: concat(v, d)\n });\n const L = S && f && new f((t => {\n const n = t[t.length - 1].contentRect;\n onSizeChanged({\n ft: true,\n dt: domRectAppeared(n, i)\n });\n i = n;\n }));\n const P = debounce((() => {\n const [, t] = z();\n s({\n Ht: t\n });\n }), {\n _: 222,\n v: true\n });\n return [ () => {\n L && L.observe(g);\n const t = k && k();\n const n = T && T();\n const o = M();\n const s = H.L((t => {\n if (t) {\n A({\n zt: t\n });\n } else {\n P();\n }\n }));\n return () => {\n L && L.disconnect();\n t && t();\n n && n();\n l && l();\n o();\n s();\n };\n }, ({It: t, At: n, Tt: o}) => {\n const s = {};\n const [i] = t(\"update.ignoreMutation\");\n const [a, d] = t(\"update.attributes\");\n const [f, p] = t(\"update.elementEvents\");\n const [v, h] = t(\"update.debounce\");\n const g = p || d;\n const w = n || o;\n const ignoreMutationFromOptions = t => isFunction(i) && i(t);\n if (g) {\n r && r();\n l && l();\n const [t, n] = createDOMObserver(y || b, true, onContentMutation, {\n j: concat(I, a || []),\n Y: f,\n W: u,\n K: (t, n) => {\n const {target: o, attributeName: s} = t;\n const e = !n && s && !S ? liesBetween(o, u, _) : false;\n return e || !!closest(o, `.${ut}`) || !!ignoreMutationFromOptions(t);\n }\n });\n l = t();\n r = n;\n }\n if (h) {\n A.S();\n if (isArray(v)) {\n const t = v[0];\n const n = v[1];\n e = isNumber(t) && t;\n c = isNumber(n) && n;\n } else if (isNumber(v)) {\n e = v;\n c = false;\n } else {\n e = false;\n c = false;\n }\n }\n if (w) {\n const t = V();\n const n = D && D();\n const o = r && r();\n t && assignDeep(s, onHostMutation(t[0], t[1], w));\n n && assignDeep(s, onTrinsicChanged(n[0], w));\n o && assignDeep(s, onContentMutation(o[0], w));\n }\n setDirection(s);\n return s;\n }, x ];\n};\n\nconst createScrollbarsSetupElements = (t, n, o, s) => {\n const {P: e} = getEnvironment();\n const {scrollbars: c} = e();\n const {slot: r} = c;\n const {vt: l, ht: i, ot: a, Dt: u, gt: _, yt: d, nt: f} = n;\n const {scrollbars: v} = u ? {} : t;\n const {slot: h} = v || {};\n const g = new Map;\n const initScrollTimeline = t => p && new p({\n source: _,\n axis: t\n });\n const b = {\n x: initScrollTimeline(\"x\"),\n y: initScrollTimeline(\"y\")\n };\n const w = dynamicInitializationElement([ l, i, a ], (() => f && d ? l : i), r, h);\n const getScrollbarHandleLengthRatio = (t, n) => {\n if (n) {\n const o = t ? H : E;\n const {kt: s, Mt: e} = n;\n const c = getBoundingClientRect(e)[o];\n const r = getBoundingClientRect(s)[o];\n return capNumber(0, 1, c / r || 0);\n }\n const s = t ? \"x\" : \"y\";\n const {Rt: e, Vt: c} = o;\n const r = c[s];\n const l = e[s];\n return capNumber(0, 1, r / (r + l) || 0);\n };\n const getScrollbarHandleOffsetRatio = (t, n, o) => {\n const s = getScrollbarHandleLengthRatio(o, t);\n return 1 / s * (1 - s) * n;\n };\n const addDirectionRTLKeyframes = t => assignDeep(t, {\n clear: [ \"left\" ]\n });\n const cancelElementAnimations = t => {\n g.forEach(((n, o) => {\n const s = t ? inArray(createOrKeepArray(t), o) : true;\n if (s) {\n each(n || [], (t => {\n t && t.cancel();\n }));\n g.delete(o);\n }\n }));\n };\n const setElementAnimation = (t, n, o, s) => {\n const e = g.get(t) || [];\n const c = e.find((t => t && t.timeline === n));\n if (c) {\n c.effect = new KeyframeEffect(t, o, {\n composite: s\n });\n } else {\n g.set(t, concat(e, [ t.animate(o, {\n timeline: n,\n composite: s\n }) ]));\n }\n };\n const scrollbarStructureAddRemoveClass = (t, n, o) => {\n const s = o ? addClass : removeClass;\n each(t, (t => {\n s(t.Lt, n);\n }));\n };\n const scrollbarStyle = (t, n) => {\n each(t, (t => {\n const [o, s] = n(t);\n setStyles(o, s);\n }));\n };\n const scrollbarStructureRefreshHandleLength = (t, n) => {\n scrollbarStyle(t, (t => {\n const {Mt: o} = t;\n return [ o, {\n [n ? H : E]: ratioToCssPercent(getScrollbarHandleLengthRatio(n))\n } ];\n }));\n };\n const scrollbarStructureRefreshHandleOffset = (t, n) => {\n const {Pt: s} = o;\n const e = n ? \"x\" : \"y\";\n const c = b[e];\n const r = isDefaultDirectionScrollCoordinates(s)[e];\n const getAxisTransformValue = (t, o) => getTrasformTranslateValue(ratioToCssPercent(getScrollbarHandleOffsetRatio(t, r ? o : 1 - o, n)), n);\n if (c) {\n each(t, (t => {\n const {Mt: n} = t;\n setElementAnimation(n, c, addDirectionRTLKeyframes({\n transform: [ 0, 1 ].map((n => getAxisTransformValue(t, n)))\n }));\n }));\n } else {\n scrollbarStyle(t, (t => [ t.Mt, {\n transform: getAxisTransformValue(t, getScrollCoordinatesPercent(s, getElementScroll(_))[e])\n } ]));\n }\n };\n const doRefreshScrollbarOffset = t => f && !d && parent(t) === a;\n const y = [];\n const m = [];\n const S = [];\n const scrollbarsAddRemoveClass = (t, n, o) => {\n const s = isBoolean(o);\n const e = s ? o : true;\n const c = s ? !o : true;\n e && scrollbarStructureAddRemoveClass(m, t, n);\n c && scrollbarStructureAddRemoveClass(S, t, n);\n };\n const refreshScrollbarsHandleLength = () => {\n scrollbarStructureRefreshHandleLength(m, true);\n scrollbarStructureRefreshHandleLength(S);\n };\n const refreshScrollbarsHandleOffset = () => {\n scrollbarStructureRefreshHandleOffset(m, true);\n scrollbarStructureRefreshHandleOffset(S);\n };\n const refreshScrollbarsScrollbarOffset = () => {\n if (f) {\n const {Rt: t, Pt: n} = o;\n const s = isDefaultDirectionScrollCoordinates(n);\n const e = .5;\n if (b.x && b.y) {\n each(concat(S, m), (({Lt: n}) => {\n if (doRefreshScrollbarOffset(n)) {\n const setScrollbarElementAnimation = o => setElementAnimation(n, b[o], addDirectionRTLKeyframes({\n transform: [ 0, s[o] ? 1 : -1 ].map((n => getTrasformTranslateValue(numberToCssPx(n * (t[o] - e)), o === \"x\")))\n }), \"add\");\n setScrollbarElementAnimation(\"x\");\n setScrollbarElementAnimation(\"y\");\n } else {\n cancelElementAnimations(n);\n }\n }));\n } else {\n const o = getScrollCoordinatesPercent(n, getElementScroll(_));\n const styleScrollbarPosition = n => {\n const {Lt: e} = n;\n const c = doRefreshScrollbarOffset(e) && e;\n const getTranslateValue = (t, n, o) => {\n const s = n * t;\n return numberToCssPx(o ? s : -s);\n };\n return [ c, c && {\n transform: getTrasformTranslateValue({\n x: getTranslateValue(o.x, t.x, s.x),\n y: getTranslateValue(o.y, t.y, s.y)\n })\n } ];\n };\n scrollbarStyle(m, styleScrollbarPosition);\n scrollbarStyle(S, styleScrollbarPosition);\n }\n }\n };\n const generateScrollbarDOM = t => {\n const n = t ? dt : ft;\n const o = createDiv(`${ut} ${n}`);\n const e = createDiv(pt);\n const c = createDiv(vt);\n const r = {\n Lt: o,\n kt: e,\n Mt: c\n };\n push(t ? m : S, r);\n push(y, [ appendChildren(o, e), appendChildren(e, c), bind(removeElements, o), cancelElementAnimations, s(r, scrollbarsAddRemoveClass, scrollbarStructureRefreshHandleOffset, t) ]);\n return r;\n };\n const O = bind(generateScrollbarDOM, true);\n const $ = bind(generateScrollbarDOM, false);\n const appendElements = () => {\n appendChildren(w, m[0].Lt);\n appendChildren(w, S[0].Lt);\n return bind(runEachAndClear, y);\n };\n O();\n $();\n return [ {\n Ut: refreshScrollbarsHandleLength,\n Nt: refreshScrollbarsHandleOffset,\n qt: refreshScrollbarsScrollbarOffset,\n Bt: scrollbarsAddRemoveClass,\n Ft: {\n V: b.x,\n jt: m,\n Xt: O,\n Yt: bind(scrollbarStyle, m)\n },\n Wt: {\n V: b.y,\n jt: S,\n Xt: $,\n Yt: bind(scrollbarStyle, S)\n }\n }, appendElements ];\n};\n\nconst createScrollbarsSetupEvents = (t, n, o, s) => (r, l, i, u) => {\n const {ht: _, ot: d, nt: f, gt: p, Jt: v, Ot: h} = n;\n const {Lt: g, kt: b, Mt: w} = r;\n const [y, m] = selfClearTimeout(333);\n const [S, O] = selfClearTimeout(444);\n const [$, C] = selfClearTimeout();\n const x = bind(i, [ r ], u);\n const scrollOffsetElementScrollBy = t => {\n isFunction(p.scrollBy) && p.scrollBy({\n behavior: \"smooth\",\n left: t.x,\n top: t.y\n });\n };\n const z = u ? H : E;\n const createInteractiveScrollEvents = () => {\n const n = \"pointerup pointercancel lostpointercapture\";\n const s = `client${u ? \"X\" : \"Y\"}`;\n const r = u ? \"left\" : \"top\";\n const l = u ? \"w\" : \"h\";\n const i = u ? \"x\" : \"y\";\n const createRelativeHandleMove = (t, n) => s => {\n const {Rt: e} = o;\n const c = k(b)[l] - k(w)[l];\n const r = n * s / c;\n const a = r * e[i];\n scrollElementTo(p, {\n [i]: t + a\n });\n };\n return addEventListener(b, \"pointerdown\", (o => {\n const a = closest(o.target, `.${vt}`) === w;\n const u = a ? w : b;\n const _ = t.scrollbars;\n const {button: d, isPrimary: f, pointerType: g} = o;\n const {pointers: y} = _;\n const m = d === 0 && f && _[a ? \"dragScroll\" : \"clickScroll\"] && (y || []).includes(g);\n if (m) {\n O();\n const t = !a && o.shiftKey;\n const _ = bind(getBoundingClientRect, w);\n const d = bind(getBoundingClientRect, b);\n const getHandleOffset = (t, n) => (t || _())[r] - (n || d())[r];\n const f = e(getBoundingClientRect(p)[z]) / k(p)[l] || 1;\n const g = createRelativeHandleMove(getElementScroll(p)[i], 1 / f);\n const y = o[s];\n const m = _();\n const $ = d();\n const C = m[z];\n const x = getHandleOffset(m, $) + C / 2;\n const H = y - $[r];\n const E = a ? 0 : H - x;\n const releasePointerCapture = t => {\n runEachAndClear(A);\n u.releasePointerCapture(t.pointerId);\n };\n const addScrollbarPressedClass = () => h(Q, true);\n const I = addScrollbarPressedClass();\n const A = [ () => {\n const t = getElementScroll(p);\n I();\n const n = getElementScroll(p);\n const o = {\n x: n.x - t.x,\n y: n.y - t.y\n };\n if (c(o.x) > 3 || c(o.y) > 3) {\n addScrollbarPressedClass();\n scrollElementTo(p, t);\n scrollOffsetElementScrollBy(o);\n S(I);\n }\n }, addEventListener(v, n, releasePointerCapture), addEventListener(v, \"selectstart\", (t => preventDefault(t)), {\n H: false\n }), addEventListener(b, n, releasePointerCapture), addEventListener(b, \"pointermove\", (n => {\n const o = n[s] - y;\n if (a || t) {\n g(E + o);\n }\n })) ];\n u.setPointerCapture(o.pointerId);\n if (t) {\n g(E);\n } else if (!a) {\n const t = getStaticPluginModuleInstance(kt);\n t && push(A, t(g, getHandleOffset, E, C, H));\n }\n }\n }));\n };\n let I = true;\n const isAffectingTransition = t => t.propertyName.indexOf(z) > -1;\n return bind(runEachAndClear, [ addEventListener(w, \"pointermove pointerleave\", s), addEventListener(g, \"pointerenter\", (() => {\n l(bt, true);\n })), addEventListener(g, \"pointerleave pointercancel\", (() => {\n l(bt, false);\n })), !f && addEventListener(g, \"mousedown\", (() => {\n const t = getFocusedElement();\n if (hasAttr(t, X) || hasAttr(t, F) || t === document.body) {\n a(bind(focusElement, d), 25);\n }\n })), addEventListener(g, \"wheel\", (t => {\n const {deltaX: n, deltaY: o, deltaMode: s} = t;\n if (I && s === 0 && parent(g) === _) {\n scrollOffsetElementScrollBy({\n x: n,\n y: o\n });\n }\n I = false;\n l(St, true);\n y((() => {\n I = true;\n l(St);\n }));\n preventDefault(t);\n }), {\n H: false,\n I: true\n }), addEventListener(w, \"transitionstart\", (t => {\n if (isAffectingTransition(t)) {\n const animateHandleOffset = () => {\n x();\n $(animateHandleOffset);\n };\n animateHandleOffset();\n }\n })), addEventListener(w, \"transitionend transitioncancel\", (t => {\n if (isAffectingTransition(t)) {\n C();\n x();\n }\n })), addEventListener(g, \"pointerdown\", bind(addEventListener, v, \"click\", stopAndPrevent, {\n A: true,\n I: true,\n H: false\n }), {\n I: true\n }), createInteractiveScrollEvents(), m, O, C ]);\n};\n\nconst createScrollbarsSetup = (t, n, o, s, e, c) => {\n let r;\n let l;\n let i;\n let a;\n let u;\n let _ = noop;\n let d = 0;\n const isHoverablePointerType = t => t.pointerType === \"mouse\";\n const [f, p] = selfClearTimeout();\n const [v, h] = selfClearTimeout(100);\n const [g, b] = selfClearTimeout(100);\n const [w, y] = selfClearTimeout((() => d));\n const [m, S] = createScrollbarsSetupElements(t, e, s, createScrollbarsSetupEvents(n, e, s, (t => isHoverablePointerType(t) && manageScrollbarsAutoHideInstantInteraction())));\n const {ht: O, Kt: $, yt: C} = e;\n const {Bt: x, Ut: H, Nt: E, qt: I} = m;\n const manageScrollbarsAutoHide = (t, n) => {\n y();\n if (t) {\n x(mt);\n } else {\n const t = bind(x, mt, true);\n if (d > 0 && !n) {\n w(t);\n } else {\n t();\n }\n }\n };\n const manageScrollbarsAutoHideInstantInteraction = () => {\n if (i ? !r : !a) {\n manageScrollbarsAutoHide(true);\n v((() => {\n manageScrollbarsAutoHide(false);\n }));\n }\n };\n const manageAutoHideSuspension = t => {\n x(yt, t, true);\n x(yt, t, false);\n };\n const onHostMouseEnter = t => {\n if (isHoverablePointerType(t)) {\n r = i;\n i && manageScrollbarsAutoHide(true);\n }\n };\n const T = [ y, h, b, p, () => _(), addEventListener(O, \"pointerover\", onHostMouseEnter, {\n A: true\n }), addEventListener(O, \"pointerenter\", onHostMouseEnter), addEventListener(O, \"pointerleave\", (t => {\n if (isHoverablePointerType(t)) {\n r = false;\n i && manageScrollbarsAutoHide(false);\n }\n })), addEventListener(O, \"pointermove\", (t => {\n isHoverablePointerType(t) && l && manageScrollbarsAutoHideInstantInteraction();\n })), addEventListener($, \"scroll\", (t => {\n f((() => {\n E();\n manageScrollbarsAutoHideInstantInteraction();\n }));\n c(t);\n I();\n })) ];\n return [ () => bind(runEachAndClear, push(T, S())), ({It: t, Tt: n, Gt: e, Qt: c}) => {\n const {Zt: r, tn: f, nn: p, sn: v} = c || {};\n const {Ct: h, dt: b} = e || {};\n const {ct: w} = o;\n const {M: y} = getEnvironment();\n const {G: m, en: S} = s;\n const [O, T] = t(\"showNativeOverlaidScrollbars\");\n const [D, k] = t(\"scrollbars.theme\");\n const [M, R] = t(\"scrollbars.visibility\");\n const [V, L] = t(\"scrollbars.autoHide\");\n const [P, U] = t(\"scrollbars.autoHideSuspend\");\n const [N] = t(\"scrollbars.autoHideDelay\");\n const [q, B] = t(\"scrollbars.dragScroll\");\n const [F, j] = t(\"scrollbars.clickScroll\");\n const [X, Y] = t(\"overflow\");\n const W = b && !n;\n const J = S.x || S.y;\n const K = r || f || v || h || n;\n const G = p || R || Y;\n const Q = O && y.x && y.y;\n const setScrollbarVisibility = (t, n, o) => {\n const s = t.includes(A) && (M === z || M === \"auto\" && n === A);\n x(ht, s, o);\n return s;\n };\n d = N;\n if (W) {\n if (P && J) {\n manageAutoHideSuspension(false);\n _();\n g((() => {\n _ = addEventListener($, \"scroll\", bind(manageAutoHideSuspension, true), {\n A: true\n });\n }));\n } else {\n manageAutoHideSuspension(true);\n }\n }\n if (T) {\n x(at, Q);\n }\n if (k) {\n x(u);\n x(D, true);\n u = D;\n }\n if (U && !P) {\n manageAutoHideSuspension(true);\n }\n if (L) {\n l = V === \"move\";\n i = V === \"leave\";\n a = V === \"never\";\n manageScrollbarsAutoHide(a, true);\n }\n if (B) {\n x($t, q);\n }\n if (j) {\n x(Ot, F);\n }\n if (G) {\n const t = setScrollbarVisibility(X.x, m.x, true);\n const n = setScrollbarVisibility(X.y, m.y, false);\n const o = t && n;\n x(gt, !o);\n }\n if (K) {\n H();\n E();\n I();\n x(wt, !S.x, true);\n x(wt, !S.y, false);\n x(_t, w && !C);\n }\n }, {}, m ];\n};\n\nconst createStructureSetupElements = t => {\n const o = getEnvironment();\n const {P: s, R: e} = o;\n const {elements: c} = s();\n const {host: r, padding: l, viewport: i, content: a} = c;\n const u = isHTMLElement(t);\n const _ = u ? {} : t;\n const {elements: d} = _;\n const {host: f, padding: p, viewport: v, content: h} = d || {};\n const g = u ? t : _.target;\n const b = isBodyElement(g);\n const w = is(g, \"textarea\");\n const y = g.ownerDocument;\n const m = y.documentElement;\n const getDocumentWindow = () => y.defaultView || n;\n const S = bind(staticInitializationElement, [ g ]);\n const O = bind(dynamicInitializationElement, [ g ]);\n const $ = bind(createDiv, \"\");\n const C = bind(S, $, i);\n const x = bind(O, $, a);\n const H = C(v);\n const E = H === g;\n const z = E && b;\n const I = !E && x(h);\n const A = !E && H === I;\n const T = z ? m : H;\n const D = w ? S($, r, f) : g;\n const k = z ? T : D;\n const M = !E && O($, l, p);\n const R = !A && I;\n const V = [ R, T, M, k ].map((t => isHTMLElement(t) && !parent(t) && t));\n const elementIsGenerated = t => t && inArray(V, t);\n const L = elementIsGenerated(T) ? g : T;\n const P = {\n vt: g,\n ht: k,\n ot: T,\n cn: M,\n bt: R,\n gt: z ? m : T,\n Kt: z ? y : T,\n rn: b ? m : L,\n Jt: y,\n wt: w,\n yt: b,\n Dt: u,\n nt: E,\n ln: getDocumentWindow,\n St: t => hasAttrClass(T, X, t),\n Ot: (t, n) => addRemoveAttrClass(T, X, t, n)\n };\n const {vt: U, ht: q, cn: Y, ot: W, bt: J} = P;\n const K = [ () => {\n removeAttrs(q, [ F, N ]);\n removeAttrs(U, N);\n if (b) {\n removeAttrs(m, [ N, F ]);\n }\n } ];\n const Q = w && elementIsGenerated(q);\n let Z = w ? U : contents([ J, W, Y, q, U ].find((t => t && !elementIsGenerated(t))));\n const ot = z ? U : J || W;\n const st = bind(runEachAndClear, K);\n const appendElements = () => {\n const t = getDocumentWindow();\n const n = getFocusedElement();\n const unwrap = t => {\n appendChildren(parent(t), contents(t));\n removeElements(t);\n };\n const prepareWrapUnwrapFocus = t => addEventListener(t, \"focusin focusout focus blur\", stopAndPrevent, {\n I: true,\n H: false\n });\n const o = \"tabindex\";\n const s = getAttr(W, o);\n const c = prepareWrapUnwrapFocus(n);\n setAttrs(q, F, E ? \"\" : j);\n setAttrs(Y, tt, \"\");\n setAttrs(W, X, \"\");\n setAttrs(J, nt, \"\");\n if (!E) {\n setAttrs(W, o, s || \"-1\");\n b && setAttrs(m, B, \"\");\n }\n if (Q) {\n insertAfter(U, q);\n push(K, (() => {\n insertAfter(q, U);\n removeElements(q);\n }));\n }\n appendChildren(ot, Z);\n appendChildren(q, Y);\n appendChildren(Y || q, !E && W);\n appendChildren(W, J);\n push(K, [ c, () => {\n const t = getFocusedElement();\n const n = elementIsGenerated(W);\n const e = n && t === W ? U : t;\n const c = prepareWrapUnwrapFocus(e);\n removeAttrs(Y, tt);\n removeAttrs(J, nt);\n removeAttrs(W, X);\n b && removeAttrs(m, B);\n s ? setAttrs(W, o, s) : removeAttrs(W, o);\n elementIsGenerated(J) && unwrap(J);\n n && unwrap(W);\n elementIsGenerated(Y) && unwrap(Y);\n focusElement(e);\n c();\n } ]);\n if (e && !E) {\n addAttrClass(W, X, G);\n push(K, bind(removeAttrs, W, X));\n }\n focusElement(!E && b && n === U && t.top === t ? W : n);\n c();\n Z = 0;\n return st;\n };\n return [ P, appendElements, st ];\n};\n\nconst createTrinsicUpdateSegment = ({bt: t}) => ({Gt: n, an: o, Tt: s}) => {\n const {xt: e} = n || {};\n const {$t: c} = o;\n const r = t && (e || s);\n if (r) {\n setStyles(t, {\n [E]: c && \"100%\"\n });\n }\n};\n\nconst createPaddingUpdateSegment = ({ht: t, cn: n, ot: o, nt: s}, e) => {\n const [c, r] = createCache({\n i: equalTRBL,\n o: topRightBottomLeft()\n }, bind(topRightBottomLeft, t, \"padding\", \"\"));\n return ({It: t, Gt: l, an: i, Tt: a}) => {\n let [u, _] = r(a);\n const {R: d} = getEnvironment();\n const {ft: f, Ht: p, Ct: v} = l || {};\n const {ct: h} = i;\n const [g, C] = t(\"paddingAbsolute\");\n const x = a || p;\n if (f || _ || x) {\n [u, _] = c(a);\n }\n const E = !s && (C || v || _);\n if (E) {\n const t = !g || !n && !d;\n const s = u.r + u.l;\n const c = u.t + u.b;\n const r = {\n [O]: t && !h ? -s : 0,\n [$]: t ? -c : 0,\n [S]: t && h ? -s : 0,\n top: t ? -u.t : 0,\n right: t ? h ? -u.r : \"auto\" : 0,\n left: t ? h ? \"auto\" : -u.l : 0,\n [H]: t && `calc(100% + ${s}px)`\n };\n const l = {\n [b]: t ? u.t : 0,\n [w]: t ? u.r : 0,\n [m]: t ? u.b : 0,\n [y]: t ? u.l : 0\n };\n setStyles(n || o, r);\n setStyles(o, l);\n assignDeep(e, {\n cn: u,\n un: !t,\n rt: n ? l : assignDeep({}, r, l)\n });\n }\n return {\n _n: E\n };\n };\n};\n\nconst createOverflowUpdateSegment = (t, s) => {\n const e = getEnvironment();\n const {ht: c, cn: r, ot: l, nt: a, Kt: u, gt: _, yt: d, Ot: f, ln: p} = t;\n const {R: v} = e;\n const h = d && a;\n const g = bind(o, 0);\n const b = [ \"display\", \"direction\", \"flexDirection\", \"writingMode\" ];\n const w = {\n i: equalWH,\n o: {\n w: 0,\n h: 0\n }\n };\n const y = {\n i: equalXY,\n o: {}\n };\n const setMeasuringMode = t => {\n f(K, !h && t);\n };\n const getOverflowAmount = (t, o) => {\n const s = n.devicePixelRatio % 1 !== 0 ? 1 : 0;\n const e = {\n w: g(t.w - o.w),\n h: g(t.h - o.h)\n };\n return {\n w: e.w > s ? e.w : 0,\n h: e.h > s ? e.h : 0\n };\n };\n const [m, S] = createCache(w, bind(getFractionalSize, l));\n const [O, $] = createCache(w, bind(R, l));\n const [C, x] = createCache(w);\n const [H] = createCache(y);\n const [E, T] = createCache(w);\n const [D] = createCache(y);\n const [k] = createCache({\n i: (t, n) => equal(t, n, b),\n o: {}\n }, (() => hasDimensions(l) ? getStyles(l, b) : {}));\n const [V, L] = createCache({\n i: (t, n) => equalXY(t.T, n.T) && equalXY(t.D, n.D),\n o: getZeroScrollCoordinates()\n }, (() => {\n setMeasuringMode(true);\n const t = getElementScroll(_);\n const n = f(Z, true);\n const o = addEventListener(u, A, (n => {\n const o = getElementScroll(_);\n if (n.isTrusted && o.x === t.x && o.y === t.y) {\n stopPropagation(n);\n }\n }), {\n I: true,\n A: true\n });\n scrollElementTo(_, {\n x: 0,\n y: 0\n });\n n();\n const s = getElementScroll(_);\n const e = R(_);\n scrollElementTo(_, {\n x: e.w,\n y: e.h\n });\n const c = getElementScroll(_);\n scrollElementTo(_, {\n x: c.x - s.x < 1 && -e.w,\n y: c.y - s.y < 1 && -e.h\n });\n const r = getElementScroll(_);\n scrollElementTo(_, t);\n i((() => o()));\n return {\n T: s,\n D: r\n };\n }));\n const P = getStaticPluginModuleInstance(Tt);\n const createViewportOverflowStyleClassName = (t, n) => {\n const o = n ? Y : W;\n return `${o}${capitalizeFirstLetter(t)}`;\n };\n const setViewportOverflowStyle = t => {\n const createAllOverflowStyleClassNames = t => [ z, I, A ].map((n => createViewportOverflowStyleClassName(n, t)));\n const n = createAllOverflowStyleClassNames(true).concat(createAllOverflowStyleClassNames()).join(\" \");\n f(n);\n f(keys(t).map((n => createViewportOverflowStyleClassName(t[n], n === \"x\"))).join(\" \"), true);\n };\n return ({It: n, Gt: o, an: i, Tt: a}, {_n: u}) => {\n const {ft: _, Ht: d, Ct: b, dt: w, zt: y} = o || {};\n const z = P && P.tt(t, s, i, e, n);\n const {it: I, ut: A, _t: R} = z || {};\n const [U, N] = getShowNativeOverlaidScrollbars(n, e);\n const [B, j] = n(\"overflow\");\n const X = overflowIsVisible(B.x);\n const Y = overflowIsVisible(B.y);\n const W = _ || u || d || b || y || N;\n let J = S(a);\n let K = $(a);\n let Q = x(a);\n let Z = T(a);\n if (N && v) {\n f(G, !U);\n }\n if (W) {\n if (hasAttrClass(c, F, q)) {\n setMeasuringMode(true);\n }\n const [t] = A ? A() : [];\n const [n] = J = m(a);\n const [o] = K = O(a);\n const s = M(l);\n const e = h && getWindowSize(p());\n const r = {\n w: g(o.w + n.w),\n h: g(o.h + n.h)\n };\n const i = {\n w: g((e ? e.w : s.w + g(s.w - o.w)) + n.w),\n h: g((e ? e.h : s.h + g(s.h - o.h)) + n.h)\n };\n t && t();\n Z = E(i);\n Q = C(getOverflowAmount(r, i), a);\n }\n const [nt, ot] = Z;\n const [st, et] = Q;\n const [ct, rt] = K;\n const [lt, it] = J;\n const [at, ut] = H({\n x: st.w > 0,\n y: st.h > 0\n });\n const _t = X && Y && (at.x || at.y) || X && at.x && !at.y || Y && at.y && !at.x;\n const dt = u || b || y || it || rt || ot || et || j || N || W;\n const ft = createViewportOverflowState(at, B);\n const [pt, vt] = D(ft.G);\n const [, ht] = k(a);\n const gt = b || w || ht || ut || a;\n const [bt, wt] = gt ? V(a) : L();\n if (dt) {\n vt && setViewportOverflowStyle(ft.G);\n if (R && I) {\n setStyles(l, R(ft, i, I(ft, ct, lt)));\n }\n }\n setMeasuringMode(false);\n addRemoveAttrClass(c, F, q, _t);\n addRemoveAttrClass(r, tt, q, _t);\n assignDeep(s, {\n G: pt,\n Vt: {\n x: nt.w,\n y: nt.h\n },\n Rt: {\n x: st.w,\n y: st.h\n },\n en: at,\n Pt: sanitizeScrollCoordinates(bt, st)\n });\n return {\n nn: vt,\n Zt: ot,\n tn: et,\n sn: wt || et,\n dn: gt\n };\n };\n};\n\nconst createStructureSetup = t => {\n const [n, o, s] = createStructureSetupElements(t);\n const e = {\n cn: {\n t: 0,\n r: 0,\n b: 0,\n l: 0\n },\n un: false,\n rt: {\n [O]: 0,\n [$]: 0,\n [S]: 0,\n [b]: 0,\n [w]: 0,\n [m]: 0,\n [y]: 0\n },\n Vt: {\n x: 0,\n y: 0\n },\n Rt: {\n x: 0,\n y: 0\n },\n G: {\n x: I,\n y: I\n },\n en: {\n x: false,\n y: false\n },\n Pt: getZeroScrollCoordinates()\n };\n const {vt: c, gt: r, nt: l} = n;\n const {R: i, M: a} = getEnvironment();\n const u = !i && (a.x || a.y);\n const _ = [ createTrinsicUpdateSegment(n), createPaddingUpdateSegment(n, e), createOverflowUpdateSegment(n, e) ];\n return [ o, t => {\n const n = {};\n const o = u;\n const s = o && getElementScroll(r);\n each(_, (o => {\n assignDeep(n, o(t, n) || {});\n }));\n scrollElementTo(r, s);\n !l && scrollElementTo(c, 0);\n return n;\n }, e, n, s ];\n};\n\nconst createSetups = (t, n, o, s, e) => {\n const c = createOptionCheck(n, {});\n const [r, l, i, a, u] = createStructureSetup(t);\n const [_, d, f] = createObserversSetup(a, i, c, (t => {\n update({}, t);\n }));\n const [p, v, , h] = createScrollbarsSetup(t, n, f, i, a, e);\n const updateHintsAreTruthy = t => keys(t).some((n => !!t[n]));\n const update = (t, e) => {\n if (o()) {\n return false;\n }\n const {fn: c, Tt: r, At: i, pn: a} = t;\n const u = c || {};\n const _ = !!r;\n const p = {\n It: createOptionCheck(n, u, _),\n fn: u,\n Tt: _\n };\n if (a) {\n v(p);\n return false;\n }\n const h = e || d(assignDeep({}, p, {\n At: i\n }));\n const g = l(assignDeep({}, p, {\n an: f,\n Gt: h\n }));\n v(assignDeep({}, p, {\n Gt: h,\n Qt: g\n }));\n const b = updateHintsAreTruthy(h);\n const w = updateHintsAreTruthy(g);\n const y = b || w || !isEmptyObject(u) || _;\n y && s(t, {\n Gt: h,\n Qt: g\n });\n return y;\n };\n return [ () => {\n const {rn: t, gt: n} = a;\n const o = getElementScroll(t);\n const s = [ _(), r(), p() ];\n scrollElementTo(n, o);\n return bind(runEachAndClear, s);\n }, update, () => ({\n vn: f,\n hn: i\n }), {\n gn: a,\n bn: h\n }, u ];\n};\n\nconst OverlayScrollbars = (t, n, o) => {\n const {N: s} = getEnvironment();\n const e = isHTMLElement(t);\n const c = e ? t : t.target;\n const r = getInstance(c);\n if (n && !r) {\n let r = false;\n const l = [];\n const i = {};\n const validateOptions = t => {\n const n = removeUndefinedProperties(t, true);\n const o = getStaticPluginModuleInstance(zt);\n return o ? o(n, true) : n;\n };\n const a = assignDeep({}, s(), validateOptions(n));\n const [u, _, d] = createEventListenerHub();\n const [f, p, v] = createEventListenerHub(o);\n const triggerEvent = (t, n) => {\n v(t, n);\n d(t, n);\n };\n const [h, g, b, w, y] = createSetups(t, a, (() => r), (({fn: t, Tt: n}, {Gt: o, Qt: s}) => {\n const {ft: e, Ct: c, xt: r, Ht: l, Et: i, dt: a} = o;\n const {Zt: u, tn: _, nn: d, sn: f} = s;\n triggerEvent(\"updated\", [ m, {\n updateHints: {\n sizeChanged: !!e,\n directionChanged: !!c,\n heightIntrinsicChanged: !!r,\n overflowEdgeChanged: !!u,\n overflowAmountChanged: !!_,\n overflowStyleChanged: !!d,\n scrollCoordinatesChanged: !!f,\n contentMutation: !!l,\n hostMutation: !!i,\n appear: !!a\n },\n changedOptions: t || {},\n force: !!n\n } ]);\n }), (t => triggerEvent(\"scroll\", [ m, t ])));\n const destroy = t => {\n removeInstance(c);\n runEachAndClear(l);\n r = true;\n triggerEvent(\"destroyed\", [ m, t ]);\n _();\n p();\n };\n const m = {\n options(t, n) {\n if (t) {\n const o = n ? s() : {};\n const e = getOptionsDiff(a, assignDeep(o, validateOptions(t)));\n if (!isEmptyObject(e)) {\n assignDeep(a, e);\n g({\n fn: e\n });\n }\n }\n return assignDeep({}, a);\n },\n on: f,\n off: (t, n) => {\n t && n && p(t, n);\n },\n state() {\n const {vn: t, hn: n} = b();\n const {ct: o} = t;\n const {Vt: s, Rt: e, G: c, en: l, cn: i, un: a, Pt: u} = n;\n return assignDeep({}, {\n overflowEdge: s,\n overflowAmount: e,\n overflowStyle: c,\n hasOverflow: l,\n scrollCoordinates: {\n start: u.T,\n end: u.D\n },\n padding: i,\n paddingAbsolute: a,\n directionRTL: o,\n destroyed: r\n });\n },\n elements() {\n const {vt: t, ht: n, cn: o, ot: s, bt: e, gt: c, Kt: r} = w.gn;\n const {Ft: l, Wt: i} = w.bn;\n const translateScrollbarStructure = t => {\n const {Mt: n, kt: o, Lt: s} = t;\n return {\n scrollbar: s,\n track: o,\n handle: n\n };\n };\n const translateScrollbarsSetupElement = t => {\n const {jt: n, Xt: o} = t;\n const s = translateScrollbarStructure(n[0]);\n return assignDeep({}, s, {\n clone: () => {\n const t = translateScrollbarStructure(o());\n g({\n pn: true\n });\n return t;\n }\n });\n };\n return assignDeep({}, {\n target: t,\n host: n,\n padding: o || s,\n viewport: s,\n content: e || s,\n scrollOffsetElement: c,\n scrollEventElement: r,\n scrollbarHorizontal: translateScrollbarsSetupElement(l),\n scrollbarVertical: translateScrollbarsSetupElement(i)\n });\n },\n update: t => g({\n Tt: t,\n At: true\n }),\n destroy: bind(destroy, false),\n plugin: t => i[keys(t)[0]]\n };\n push(l, [ y ]);\n addInstance(c, m);\n registerPluginModuleInstances(Ht, OverlayScrollbars, [ m, u, i ]);\n if (cancelInitialization(w.gn.yt, !e && t.cancel)) {\n destroy(true);\n return m;\n }\n push(l, h());\n triggerEvent(\"initialized\", [ m ]);\n m.update(true);\n return m;\n }\n return r;\n};\n\nOverlayScrollbars.plugin = t => {\n const n = isArray(t);\n const o = n ? t : [ t ];\n const s = o.map((t => registerPluginModuleInstances(t, OverlayScrollbars)[0]));\n addPlugins(o);\n return n ? s : s[0];\n};\n\nOverlayScrollbars.valid = t => {\n const n = t && t.elements;\n const o = isFunction(n) && n();\n return isPlainObject(o) && !!getInstance(o.target);\n};\n\nOverlayScrollbars.env = () => {\n const {k: t, M: n, R: o, V: s, B: e, F: c, P: r, U: l, N: i, q: a} = getEnvironment();\n return assignDeep({}, {\n scrollbarsSize: t,\n scrollbarsOverlaid: n,\n scrollbarsHiding: o,\n scrollTimeline: s,\n staticDefaultInitialization: e,\n staticDefaultOptions: c,\n getDefaultInitialization: r,\n setDefaultInitialization: l,\n getDefaultOptions: i,\n setDefaultOptions: a\n });\n};\n\nexport { Mt as ClickScrollPlugin, OverlayScrollbars, Dt as ScrollbarsHidingPlugin, At as SizeObserverPlugin };\n//# sourceMappingURL=overlayscrollbars.mjs.map\n","import fesdDB from '../../fesdDB.js';\nimport { OverlayScrollbars } from 'overlayscrollbars';\n// self\nimport SHARED from './../shared/shared';\nimport { createUid, warn } from './../shared/utils';\n\nif (!window.MODALS) window.MODALS = {};\n\nconst { MODALS } = window;\n\n// create template method\nconst createTemplate = el => {\n const { TEMPLATE } = fesdDB.modal4;\n const { childDom } = el;\n const container = document.createElement('div');\n container.innerHTML = TEMPLATE(el.getAttribute('data-modal-template-setting'));\n\n const content = container.querySelector('.modal-content');\n [...childDom].forEach(child => {\n content.append(child);\n });\n\n return container.children[0];\n};\n\n// class\nclass ModernModal extends HTMLElement {\n constructor() {\n super();\n this.initialize = false;\n }\n\n static get observedAttributes() {\n return [':state'];\n }\n\n attributeChangedCallback(attr, oldVal, newVal) {\n switch (attr) {\n case ':state':\n this.#stateControl(newVal);\n break;\n }\n }\n\n connectedCallback() {\n if (this.initialize) return;\n this.initialize = true;\n this.#create();\n }\n\n #create() {\n const { ATTRS } = fesdDB.modal4;\n\n this.__events__ = {};\n\n if (!this.getAttribute(':state')) {\n this.setAttribute(':state', 'close');\n }\n\n const id = this.getAttribute(ATTRS.id) || createUid();\n if (!this.getAttribute(ATTRS.id)) {\n warn(`modern-modal needs a ${ATTRS.id} attribute with a unique id.`);\n this.setAttribute(ATTRS.id, id);\n }\n\n if (MODALS[id]) warn(`the ${ATTRS.id} \"${id}\" is already be used.`);\n MODALS[id] = this;\n\n this.#mount();\n }\n\n #mount() {\n this.childDom = this.childNodes;\n this.template = createTemplate(this);\n\n this.innerHTML = '';\n this.append(this.template);\n\n this.#init();\n }\n\n #init() {\n const scroller = this.querySelector('.modal-scroller');\n\n this.__scroller__ = OverlayScrollbars(scroller, {\n overflowBehavior: {\n x: 'hidden',\n },\n });\n\n this.#event();\n }\n\n #event() {\n const $self = this;\n const { ATTRS } = fesdDB.modal4;\n const { close, destroy } = ATTRS;\n\n $self.querySelectorAll(`[${close}]`)?.forEach(el => {\n el.addEventListener('click', function () {\n const closeAttr = this.getAttribute(close);\n const closeTarget = closeAttr && MODALS[closeAttr] ? MODALS[closeAttr] : $self;\n closeTarget.close();\n });\n });\n\n $self.querySelectorAll(`[${destroy}]`)?.forEach(el => {\n el.addEventListener('click', function () {\n const destroyAttr = this.getAttribute(destroy);\n const destroyTarget = destroyAttr && MODALS[destroyAttr] ? MODALS[destroyAttr] : $self;\n destroyTarget.destroy();\n });\n });\n\n $self.querySelector('[stop-propagation]')?.addEventListener('click', function (e) {\n e.stopPropagation();\n });\n }\n\n #stateControl(state) {\n const { __scroller__ } = this;\n\n if (state === 'open') {\n this.style.display = 'block';\n if (__scroller__) {\n const { viewport } = __scroller__.elements();\n viewport.scrollTo({\n top: 0,\n });\n }\n setTimeout(() => {\n this.classList.add('show');\n this.emit('open');\n }, 100);\n }\n if (state === 'close') {\n if (!this.classList.contains('show')) return;\n this.classList.remove('show');\n const transitionEndHandler = () => {\n this.style.removeProperty('display');\n this.emit('close');\n this.removeEventListener('transitionend', transitionEndHandler);\n };\n this.addEventListener('transitionend', transitionEndHandler);\n }\n if (state === 'destroy') {\n this.classList.remove('show');\n const transitionEndHandler = () => {\n const { ATTRS } = fesdDB.modal4;\n const id = this.getAttribute(ATTRS.id);\n this.style.removeProperty('display');\n this.emit('close');\n this.remove();\n this.emit('destroy');\n if (MODALS[id]) delete MODALS[id];\n };\n this.addEventListener('transitionend', transitionEndHandler);\n }\n }\n\n open() {\n this.setAttribute(':state', 'open');\n\n return this;\n }\n\n close() {\n this.setAttribute(':state', 'close');\n\n return this;\n }\n\n destroy() {\n this.setAttribute(':state', 'destroy');\n\n return this;\n }\n}\n\n// install on and emit\nObject.assign(ModernModal.prototype, SHARED);\n\nexport default ModernModal;\n","import fesdDB from '../../fesdDB.js';\nimport ModernModal from './modernModal';\nimport SHARED from './../shared/shared';\nimport { isString, isElementExist, isFunction, getElement, getAllElements, toHTMLElement, jsonParse, warn } from './../shared/utils';\n\n// define custom element\nif (!customElements.get('modern-modal')) {\n customElements.define('modern-modal', ModernModal);\n}\n\nconst { MODALS } = window;\n\n// use methods (for instance)\nconst useMethod = (instance, name, ...args) => {\n if (!name) return;\n const handler = instance[name];\n\n if (handler && isFunction(handler)) {\n handler.apply(instance, args);\n }\n};\n\n// use function (for static)\nconst useFunction = (handler, ...args) => {\n if (handler && isFunction(handler)) {\n handler.apply(Modal4, args);\n }\n};\n\n// dispatch modal\nconst dispatchModal = (options, instance) => {\n const { target } = options;\n\n const modal = MODALS[target] || getElement(options.target);\n\n if (modal) useModal(options, instance);\n if (!modal) useFetch(options, instance);\n};\n\n//\nconst useModal = (options, instance) => {\n const { target, action, on, e } = options;\n\n const modal = MODALS[target] || getElement(options.target);\n const events = ['open', 'close', 'destroy'];\n\n // trigger events\n events.forEach(name => {\n modal.once(name, () => {\n if (instance) {\n instance.emit(name, modal, e);\n useMethod(instance, on[name], modal, e);\n }\n if (!instance) {\n useFunction(on[name], modal);\n }\n });\n });\n\n // action\n switch (action) {\n case 'open':\n modal.open();\n break;\n case 'close':\n modal.close();\n break;\n case 'destroy':\n modal.destroy();\n break;\n default:\n const state = modal.getAttribute(':state');\n if (state === 'close') modal.open();\n if (state === 'open') modal.close();\n break;\n }\n};\n\n// fetch modal from files\nconst useFetch = async (options, instance) => {\n const { target, route, container, on, e } = options;\n\n if (!route) return warn('modal4', 'cannot find target or data-modal-route is not defined');\n\n // trigger event handler\n const useEvent = (name, ...args) => {\n if (instance) {\n instance.emit(name, ...args);\n useMethod(instance, on[name], ...args);\n }\n if (!instance) {\n useFunction(on[name], ...args);\n }\n };\n\n // get response\n fetch(route)\n .then(res => {\n // trigger success event\n useEvent('success', e);\n\n return res.text();\n })\n .then(data => {\n const doms = toHTMLElement(data); /** modern-modal is initialized in this state */\n const containerElement = getElement(container) || getElement(fesdDB.modal4.SETTINGS.container);\n\n // append dom\n [...doms].forEach(dom => {\n containerElement.append(dom);\n });\n\n const modal = MODALS[target] || getElement(options.target);\n\n // trigger complete event\n useEvent('complete', modal);\n useModal(options, instance);\n })\n .catch(error => {\n // trigger error event\n useEvent('error', error);\n });\n};\n\nclass Modal4 {\n constructor(el, options = {}) {\n this.__storage__ = {\n el,\n options,\n };\n\n this.#create();\n }\n\n #create() {\n const { el, options } = this.__storage__;\n if (!isString(el) || !isElementExist(el)) return;\n\n const { SETTINGS, EVENTS } = fesdDB.modal4;\n\n this.elements = getAllElements(el);\n this.options = Object.assign({}, SETTINGS, options);\n this.__events__ = Object.assign({}, EVENTS);\n\n if (this.options.on) {\n for (const [k, v] of Object.entries(this.options.on)) {\n this.__events__[k] = [v];\n }\n }\n\n this.#init();\n }\n\n #init() {\n const { elements, options } = this;\n\n elements.forEach(el => {\n el.modal = {};\n el.modal.instance = this;\n el.modal.eventHandler = this.#trigger;\n el.modal.defaultOptions = options;\n el.addEventListener('click', el.modal.eventHandler);\n });\n\n this.emit('init');\n }\n\n #trigger(e) {\n /** the keyword `this` in this method is pointed to the click target */\n const { defaultOptions, eventHandler, instance } = this.modal;\n\n const ons = jsonParse(this.getAttribute('data-modal-on'));\n if (ons && typeof ons !== 'object') warn('modal4', 'data-modal-on must be a json string.');\n\n const options = {\n target: this.getAttribute('data-modal-target') || defaultOptions.target,\n action: this.getAttribute('data-modal-action') || defaultOptions.action,\n route: this.getAttribute('data-modal-route') || defaultOptions.route,\n container: this.getAttribute('data-modal-container') || defaultOptions.container,\n on: ons && typeof ons === 'object' ? ons : {},\n e,\n };\n\n // prevent multiple click\n this.removeEventListener('click', eventHandler);\n setTimeout(() => {\n this.addEventListener('click', eventHandler);\n }, 200);\n\n // get modal\n dispatchModal(options, instance);\n }\n\n destroy() {\n const { elements } = this;\n\n elements.forEach(el => {\n if (!el.modal) return;\n\n el.removeEventListener('click', el.modal.eventHandler);\n delete el.modal;\n });\n\n return this;\n }\n\n update() {\n this.destroy().#create();\n\n this.emit('update');\n\n return this;\n }\n\n /** static method 'open' */\n static open(options) {\n const { SETTINGS } = fesdDB.modal4;\n const openOptions = Object.assign({}, SETTINGS, { on: {} }, options);\n dispatchModal(openOptions);\n }\n\n /** static method 'defineMethods' */\n static defineMethods(obj) {\n if (!Modal4.prototype.__methods__) Modal4.prototype.__methods__ = {};\n const methods = Modal4.prototype.__methods__;\n\n for (const [k, v] of Object.entries(obj)) {\n if (isFunction(v)) methods[k] = v;\n }\n\n Object.assign(Modal4.prototype, Modal4.prototype.__methods__);\n }\n}\n\nObject.assign(Modal4.prototype, SHARED);\n\nexport default Modal4;\n","import fesdDB from '../../fesdDB.js';\nimport SHARED from './../shared/shared';\nimport { isString, isElementExist, getElement, getAllElements } from './../shared/utils';\n\nconst interaction = (scrollElement, elements) => {\n const viewHeight = scrollElement === window ? scrollElement.innerHeight : scrollElement.getBoundingClientRect().height;\n const viewTop = scrollElement === window ? 0 : scrollElement.getBoundingClientRect().top;\n\n elements.forEach(el => {\n const { class: className, delay, start, end, repeat, instance } = el.aost;\n\n const { top, bottom } = el.getBoundingClientRect();\n const startTrigger = viewHeight * (start / 100);\n const endTrigger = viewHeight * (end / 100);\n const isEntered = top - viewTop <= startTrigger && bottom - viewTop >= endTrigger;\n\n // in view\n if (isEntered && el.offsetParent) {\n setTimeout(() => {\n // instance.emit('enter', el);\n el.classList.add(className);\n }, delay);\n }\n // out of view\n else {\n const shouldRemove = (el.classList.contains(className) && repeat === 'down' && top - viewTop >= startTrigger) || (repeat === 'up' && bottom - viewTop <= endTrigger) || repeat === true;\n setTimeout(() => {\n // instance.emit('leave', el);\n if (shouldRemove) el.classList.remove(className);\n }, delay);\n }\n });\n};\n\nconst detectRepeat = (repeatType, options) => {\n if (repeatType === 'up' || repeatType === 'down') {\n return repeatType;\n }\n\n if (repeatType !== null) {\n if (repeatType === 'true') {\n return true;\n } else if (repeatType === 'false') {\n return false;\n } else {\n return options.repeat;\n }\n }\n\n return options.repeat;\n};\n\nclass Aost4 {\n constructor(el, options = {}) {\n this.__storage__ = {\n el,\n options,\n };\n\n this.#create();\n }\n\n #create() {\n const { el, options } = this.__storage__;\n if (!isString(el) || !isElementExist(el)) return;\n\n const { SETTINGS, EVENTS } = fesdDB.aost4;\n\n this.elements = getAllElements(el);\n this.options = Object.assign({}, SETTINGS, options);\n this.__events__ = Object.assign({}, EVENTS);\n\n if (this.options.on) {\n for (const [k, v] of Object.entries(this.options.on)) {\n this.__events__[k] = [v];\n }\n }\n\n this.#init();\n }\n\n #init() {\n const { elements, options } = this;\n const { scroller } = options;\n const scrollElement = scroller === window || !isElementExist(scroller) ? window : getElement(scroller);\n\n this.eventHandler = () => {\n interaction(scrollElement, elements);\n };\n\n elements.forEach(el => {\n el.aost = {};\n el.aost.class = el.getAttribute('data-aost-class') || options.class;\n el.aost.delay = parseInt(el.getAttribute('data-aost-delay')) || options.delay;\n el.aost.start = parseInt(el.getAttribute('data-aost-start')) || options.start;\n el.aost.end = parseInt(el.getAttribute('data-aost-end')) || options.end;\n el.aost.repeat = detectRepeat(el.getAttribute('data-aost-repeat'), options);\n el.aost.instance = this;\n });\n\n const { eventHandler } = this;\n eventHandler();\n scrollElement.aost = {};\n scrollElement.aost.eventHandler = eventHandler;\n scrollElement.addEventListener('scroll', scrollElement.aost.eventHandler, false);\n }\n\n destroy(removeShow) {\n const { elements, options } = this;\n if (!elements) return this;\n\n const { scroller } = options;\n const scrollElement = scroller === window || !isElementExist(scroller) ? window : getElement(scroller);\n\n if (scrollElement.aost) {\n scrollElement.removeEventListener('scroll', scrollElement.aost.eventHandler);\n delete scrollElement.aost;\n }\n\n elements.forEach(el => {\n if (!el.aost) return;\n const { class: className } = el.aost;\n if (removeShow) {\n el.classList.remove(className);\n }\n delete el.aost;\n });\n\n return this;\n }\n\n update(removeShow) {\n this.destroy(removeShow).#create();\n }\n}\n\nObject.assign(Aost4.prototype, SHARED);\n\nexport default Aost4;\n","import fesdDB from '../../fesdDB.js';\nimport { insert, warn } from './../shared/utils';\n\n('use strict');\n\n// create template method\nconst createTemplate = el => {\n const { TEMPLATE } = fesdDB.video4;\n const { childDom } = el;\n const container = document.createElement('div');\n container.innerHTML = TEMPLATE();\n\n const content = container.querySelector('.player-wrapper');\n [...childDom].forEach(child => {\n content.append(child);\n });\n\n return container.children[0];\n};\n\n// class\nclass videoPlayer extends HTMLElement {\n constructor() {\n super();\n\n this.#create();\n }\n\n #create() {\n if (!this.getAttribute('video-id')) {\n warn('videoPlayer', `video-render needs a ['video-id'] attribute to creat player.`);\n return;\n }\n\n this.videoId = this.getAttribute('video-id');\n this.videoType = this.getAttribute('video-type');\n this.autoplay = this.getAttribute('video-autoplay');\n\n this.#mount();\n }\n\n #mount() {\n this.childDom = this.childNodes;\n this.template = createTemplate(this);\n\n // 清空原本結構\n this.innerHTML = '';\n // 放置整理過後的結構\n this.append(this.template);\n\n this.#init();\n }\n\n #init() {\n const { videoType } = this;\n let layout = '';\n\n switch (videoType) {\n case 'youtubeAPI':\n // this.#youtubeAPI();\n break;\n case 'youtube':\n layout = this.#youtube();\n break;\n case 'youkuAPI':\n // this.#youkuAPI();\n break;\n case 'youku':\n layout = this.#youku();\n break;\n case 'vimeo':\n layout = this.#vimeo();\n break;\n case 'bilibili':\n layout = this.#bilibili();\n break;\n case 'videojs':\n // this.#videoJs();\n break;\n default:\n break;\n }\n\n this.querySelector('.player-wrapper').insertAdjacentHTML(insert.prepend, layout);\n }\n\n // youtube iframe\n #youtube() {\n const { videoId, autoplay } = this;\n return `<iframe src=\"https://www.youtube.com/embed/${videoId}?rel=0&${autoplay === 'on' ? 'autoplay=1' : ''}&mute=1&loop=1&enablejsapi=1\" frameborder=\"0\" allowfullscreen=\"0\" volumn=\"0\" allow=\"${autoplay === 'on' ? 'autoplay;' : ''} encrypted-media; gyroscope; picture-in-picture;\"></iframe>`;\n }\n\n // vimeo iframe\n #vimeo() {\n const { videoId, autoplay, hash } = this;\n\n return `<iframe src=\"https://player.vimeo.com/video/${videoId}?h=${hash}&${autoplay === 'on' ? 'autoplay=1' : ''}&loop=1&color=ffffff&title=0&byline=0&portrait=0\" frameborder=\"0\" allow=\"${\n autoplay === 'on' ? 'autoplay;' : ''\n } fullscreen; picture-in-picture\" allowfullscreen></iframe><script src=\"https://player.vimeo.com/api/player.js\"></script>`;\n }\n\n // youku iframe\n #youku() {\n const { videoId, autoplay } = this;\n\n return `<iframe src=\"https://player.youku.com/embed/${videoId}?rel=0&${autoplay === 'on' ? 'autoplay=1' : ''}\" frameborder=0 \"allowfullscreen\"></iframe>`;\n }\n\n #bilibili() {\n const { videoId, autoplay } = this;\n return `<iframe src=\"//player.bilibili.com/player.html?bvid=${videoId}&page=1&as_wide=1&high_quality=1&danmaku=0\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\"></iframe>`;\n }\n\n play() {\n const { videoType } = this;\n\n switch (videoType) {\n case 'youtubeAPI':\n // 無可用 functione\n break;\n case 'youtube':\n this.querySelector('iframe').contentWindow.postMessage(JSON.stringify({ event: 'command', func: 'playVideo' }), '*');\n break;\n case 'youkuAPI':\n // 無可用 functione\n break;\n case 'youku':\n // 無可用 functione\n break;\n case 'vimeo':\n this.querySelector('iframe').contentWindow.postMessage(JSON.stringify({ value: 'true', method: 'play' }), '*');\n break;\n case 'bilibili':\n // 無可用 functione\n break;\n case 'videojs':\n // 無可用 functione\n break;\n default:\n break;\n }\n }\n\n pause() {\n const { videoType } = this;\n\n switch (videoType) {\n case 'youtubeAPI':\n // 無可用 functione\n break;\n case 'youtube':\n this.querySelector('iframe').contentWindow.postMessage(JSON.stringify({ event: 'command', func: 'pauseVideo' }), '*');\n break;\n case 'youkuAPI':\n // 無可用 functione\n break;\n case 'youku':\n // 無可用 functione\n break;\n case 'vimeo':\n this.querySelector('iframe').contentWindow.postMessage(JSON.stringify({ value: 'true', method: 'pause' }), '*');\n break;\n case 'bilibili':\n // 無可用 functione\n break;\n case 'videojs':\n // 無可用 functione\n break;\n default:\n break;\n }\n }\n}\n\nexport default videoPlayer;\n","const e=\"undefined\"!=typeof window,i=e&&!(\"onscroll\"in window)||\"undefined\"!=typeof navigator&&/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),n=e&&window.devicePixelRatio>1;export{i as isBot,n as isHiDpi,e as runningOnBrowser};\n","import{isBot as l,runningOnBrowser as e}from\"./environment.js\";const a={elements_selector:\".lazy\",container:l||e?document:null,threshold:300,thresholds:null,data_src:\"src\",data_srcset:\"srcset\",data_sizes:\"sizes\",data_bg:\"bg\",data_bg_hidpi:\"bg-hidpi\",data_bg_multi:\"bg-multi\",data_bg_multi_hidpi:\"bg-multi-hidpi\",data_bg_set:\"bg-set\",data_poster:\"poster\",class_applied:\"applied\",class_loading:\"loading\",class_loaded:\"loaded\",class_error:\"error\",class_entered:\"entered\",class_exited:\"exited\",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!0,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1,restore_on_error:!1},t=l=>Object.assign({},a,l);export{t as getExtendedSettings};\n","const t=function(t,e){let n;const i=\"LazyLoad::Initialized\",o=new t(e);try{n=new CustomEvent(i,{detail:{instance:o}})}catch(t){n=document.createEvent(\"CustomEvent\"),n.initCustomEvent(i,!1,!1,{instance:o})}window.dispatchEvent(n)},e=(e,n)=>{if(n)if(n.length)for(let i,o=0;i=n[o];o+=1)t(e,i);else t(e,n)};export{e as autoInitialize};\n","const s=\"src\",t=\"srcset\",r=\"sizes\",e=\"poster\",a=\"llOriginalAttrs\",c=\"data\";export{c as DATA,a as ORIGINALS,e as POSTER,r as SIZES,s as SRC,t as SRCSET};\n","const e=\"loading\",d=\"loaded\",o=\"applied\",r=\"entered\",a=\"error\",n=\"native\";export{o as statusApplied,r as statusEntered,a as statusError,d as statusLoaded,e as statusLoading,n as statusNative};\n","import{statusNative as t,statusLoading as e,statusError as l,statusLoaded as u,statusApplied as n}from\"./elementStatus.js\";const r=\"data-\",s=\"ll-status\",o=(t,e)=>t.getAttribute(r+e),i=(t,e,l)=>{const u=r+e;null!==l?t.setAttribute(u,l):t.removeAttribute(u)},a=t=>o(t,s),m=(t,e)=>i(t,s,e),b=t=>m(t,null),A=t=>null===a(t),c=t=>a(t)===e,d=t=>a(t)===l,f=e=>a(e)===t,p=[e,u,n,l],x=t=>p.indexOf(a(t))>=0;export{o as getData,a as getStatus,x as hadStartedLoading,A as hasEmptyStatus,d as hasStatusError,c as hasStatusLoading,f as hasStatusNative,b as resetStatus,i as setData,m as setStatus};\n","const o=(o,t,i,n)=>{o&&\"function\"==typeof o&&(void 0===n?void 0===i?o(t):o(t,i):o(t,i,n))};export{o as safeCallback};\n","import{runningOnBrowser as s}from\"./environment.js\";const o=(o,t)=>{s&&\"\"!==t&&o.classList.add(t)},t=(o,t)=>{s&&\"\"!==t&&o.classList.remove(t)};export{o as addClass,t as removeClass};\n","const e=e=>{e.llTempImage=document.createElement(\"IMG\")},l=e=>{delete e.llTempImage},m=e=>e.llTempImage;export{e as addTempImage,l as deleteTempImage,m as getTempImage};\n","const e=(e,n)=>{if(!n)return;const r=n._observer;r&&r.unobserve(e)},n=e=>{e.disconnect()},r=(n,r,o)=>{r.unobserve_entered&&e(n,o)};export{n as resetObserver,e as unobserve,r as unobserveEntered};\n","const o=(o,t)=>{o&&(o.loadingCount+=t)},t=o=>{o&&(o.toLoadCount-=1)},n=(o,t)=>{o&&(o.toLoadCount=t)},a=o=>o.loadingCount>0,d=o=>o.toLoadCount>0;export{t as decreaseToLoadCount,d as haveElementsToLoad,a as isSomethingLoading,n as setToLoadCount,o as updateLoadingCount};\n","const e=e=>{let t=[];for(let r,a=0;r=e.children[a];a+=1)\"SOURCE\"===r.tagName&&t.push(r);return t},t=(t,r)=>{const a=t.parentNode;a&&\"PICTURE\"===a.tagName&&e(a).forEach(r)},r=(t,r)=>{e(t).forEach(r)};export{t as forEachPictureSource,r as forEachVideoSource};\n","import{ORIGINALS as t,SRC as e,POSTER as r,SRCSET as o,SIZES as n,DATA as a}from\"./constants.js\";const c=[e],s=[e,r],u=[e,o,n],g=[a],b=e=>!!e[t],i=e=>e[t],m=e=>delete e[t],f=(e,r)=>{if(b(e))return;const o={};r.forEach((t=>{o[t]=e.getAttribute(t)})),e[t]=o},d=e=>{b(e)||(e[t]={backgroundImage:e.style.backgroundImage})},k=(t,e)=>{if(!b(t))return;const r=i(t);e.forEach((e=>{((t,e,r)=>{r?t.setAttribute(e,r):t.removeAttribute(e)})(t,e,r[e])}))},I=t=>{if(!b(t))return;const e=i(t);t.style.backgroundImage=e.backgroundImage};export{g as attrsData,c as attrsSrc,s as attrsSrcPoster,u as attrsSrcSrcsetSizes,m as deleteOriginalAttrs,i as getOriginalAttrs,b as hasOriginalAttrs,k as restoreOriginalAttrs,I as restoreOriginalBgImage,d as saveOriginalBackgroundStyle,f as setOriginalsObject};\n","import{SRC as t,POSTER as a,DATA as s,SIZES as o,SRCSET as r}from\"./constants.js\";import{getData as e,setStatus as m}from\"./data.js\";import{statusApplied as i,statusLoading as c}from\"./elementStatus.js\";import{safeCallback as d}from\"./callback.js\";import{addClass as l}from\"./class.js\";import{getTempImage as n}from\"./tempImage.js\";import{isHiDpi as p}from\"./environment.js\";import{unobserve as _}from\"./unobserve.js\";import{updateLoadingCount as g}from\"./counters.js\";import{forEachPictureSource as b,forEachVideoSource as u}from\"./forEachSource.js\";import{setOriginalsObject as f,attrsSrcSrcsetSizes as j,attrsSrc as I,attrsSrcPoster as k,attrsData as A}from\"./originalAttributes.js\";const E=(t,a,s)=>{l(t,a.class_applied),m(t,i),s&&(a.unobserve_completed&&_(t,a),d(a.callback_applied,t,s))},h=(t,a,s)=>{l(t,a.class_loading),m(t,c),s&&(g(s,1),d(a.callback_loading,t,s))},v=(t,a,s)=>{s&&t.setAttribute(a,s)},y=(a,s)=>{v(a,o,e(a,s.data_sizes)),v(a,r,e(a,s.data_srcset)),v(a,t,e(a,s.data_src))},M=(t,a)=>{b(t,(t=>{f(t,j),y(t,a)})),f(t,j),y(t,a)},N=(a,s)=>{f(a,I),v(a,t,e(a,s.data_src))},O=(s,o)=>{u(s,(a=>{f(a,I),v(a,t,e(a,o.data_src))})),f(s,k),v(s,a,e(s,o.data_poster)),v(s,t,e(s,o.data_src)),s.load()},S=(t,a)=>{f(t,A),v(t,s,e(t,a.data_src))},$=(a,s,o)=>{const r=e(a,s.data_bg),m=e(a,s.data_bg_hidpi),i=p&&m?m:r;i&&(a.style.backgroundImage=`url(\"${i}\")`,n(a).setAttribute(t,i),h(a,s,o))},x=(t,a,s)=>{const o=e(t,a.data_bg_multi),r=e(t,a.data_bg_multi_hidpi),m=p&&r?r:o;m&&(t.style.backgroundImage=m,E(t,a,s))},z=(t,a,s)=>{const o=e(t,a.data_bg_set);if(!o)return;let r=o.split(\"|\").map((t=>`image-set(${t})`));t.style.backgroundImage=r.join(),E(t,a,s)},B={IMG:M,IFRAME:N,VIDEO:O,OBJECT:S},C=(t,a)=>{const s=B[t.tagName];s&&s(t,a)},D=(t,a,s)=>{const o=B[t.tagName];o&&(o(t,a),h(t,a,s))};export{E as manageApplied,h as manageLoading,v as setAttributeIfValue,$ as setBackground,y as setImageAttributes,z as setImgsetBackground,x as setMultiBackground,D as setSources,N as setSourcesIframe,M as setSourcesImg,C as setSourcesNative,S as setSourcesObject,O as setSourcesVideo};\n","import{addClass as r,removeClass as o}from\"./class.js\";import{safeCallback as s}from\"./callback.js\";import{hasStatusNative as e,setStatus as t}from\"./data.js\";import{statusLoaded as l,statusError as a}from\"./elementStatus.js\";import{getTempImage as n,deleteTempImage as i}from\"./tempImage.js\";import{unobserve as m}from\"./unobserve.js\";import{isSomethingLoading as c,haveElementsToLoad as d,updateLoadingCount as f,decreaseToLoadCount as p}from\"./counters.js\";import{restoreOriginalAttrs as E,attrsSrcSrcsetSizes as v}from\"./originalAttributes.js\";const _=[\"IMG\",\"IFRAME\",\"VIDEO\",\"OBJECT\"],j=r=>_.indexOf(r.tagName)>-1,b=(r,o)=>{!o||c(o)||d(o)||s(r.callback_finish,o)},L=(r,o,s)=>{r.addEventListener(o,s),r.llEvLisnrs[o]=s},u=(r,o,s)=>{r.removeEventListener(o,s)},g=r=>!!r.llEvLisnrs,I=(r,o,s)=>{g(r)||(r.llEvLisnrs={});const e=\"VIDEO\"===r.tagName?\"loadeddata\":\"load\";L(r,e,o),L(r,\"error\",s)},k=r=>{if(!g(r))return;const o=r.llEvLisnrs;for(let s in o){const e=o[s];u(r,s,e)}delete r.llEvLisnrs},O=(r,s,e)=>{i(r),f(e,-1),p(e),o(r,s.class_loading),s.unobserve_completed&&m(r,e)},x=(o,a,n,i)=>{const m=e(a);O(a,n,i),r(a,n.class_loaded),t(a,l),s(n.callback_loaded,a,i),m||b(n,i)},A=(o,l,n,i)=>{const m=e(l);O(l,n,i),r(l,n.class_error),t(l,a),s(n.callback_error,l,i),n.restore_on_error&&E(l,v),m||b(n,i)},D=(r,o,s)=>{const e=n(r)||r;g(e)||I(e,(t=>{x(0,r,o,s),k(e)}),(t=>{A(0,r,o,s),k(e)}))};export{L as addEventListener,I as addEventListeners,D as addOneShotEventListeners,b as checkFinish,O as doneHandler,A as errorHandler,g as hasEventListeners,j as hasLoadEvent,x as loadHandler,u as removeEventListener,k as removeEventListeners};\n","import{setBackground as t,setMultiBackground as o,setImgsetBackground as r,setSources as m,setSourcesNative as e}from\"./set.js\";import{setStatus as i}from\"./data.js\";import{hasLoadEvent as s,addOneShotEventListeners as p}from\"./event.js\";import{statusNative as a}from\"./elementStatus.js\";import{addTempImage as f}from\"./tempImage.js\";import{saveOriginalBackgroundStyle as j}from\"./originalAttributes.js\";const n=(e,i,a)=>{s(e)?((t,o,r)=>{p(t,o,r),m(t,o,r)})(e,i,a):((m,e,i)=>{f(m),p(m,e,i),j(m),t(m,e,i),o(m,e,i),r(m,e,i)})(e,i,a)},l=(t,o,r)=>{t.setAttribute(\"loading\",\"lazy\"),p(t,o,r),e(t,o),i(t,a)};export{n as load,l as loadNative};\n","import{SRC as t,SRCSET as r,SIZES as o}from\"./constants.js\";import{forEachPictureSource as e}from\"./forEachSource.js\";const m=e=>{e.removeAttribute(t),e.removeAttribute(r),e.removeAttribute(o)},i=t=>{e(t,(t=>{m(t)})),m(t)};export{i as resetSourcesImg};\n","import{removeClass as s}from\"./class.js\";import{resetStatus as o,hasEmptyStatus as a,hasStatusNative as r}from\"./data.js\";import{forEachPictureSource as t,forEachVideoSource as e}from\"./forEachSource.js\";import{deleteOriginalAttrs as l,restoreOriginalBgImage as c,restoreOriginalAttrs as i,attrsSrcSrcsetSizes as m,attrsSrc as d,attrsSrcPoster as p,attrsData as _}from\"./originalAttributes.js\";const f=s=>{t(s,(s=>{i(s,m)})),i(s,m)},n=s=>{e(s,(s=>{i(s,d)})),i(s,p),s.load()},j=s=>{i(s,d)},E=s=>{i(s,_)},g={IMG:f,IFRAME:j,VIDEO:n,OBJECT:E},I=(t,e)=>{(s=>{const o=g[s.tagName];o?o(s):c(s)})(t),((o,t)=>{a(o)||r(o)||(s(o,t.class_entered),s(o,t.class_exited),s(o,t.class_applied),s(o,t.class_loading),s(o,t.class_loaded),s(o,t.class_error))})(t,e),o(t),l(t)};export{I as restore,j as restoreIframe,f as restoreImg,E as restoreObject,n as restoreVideo};\n","import{removeEventListeners as o}from\"./event.js\";import{resetSourcesImg as r}from\"./reset.js\";import{restoreImg as t}from\"./restore.js\";import{safeCallback as m}from\"./callback.js\";import{removeClass as s}from\"./class.js\";import{updateLoadingCount as a}from\"./counters.js\";import{hasStatusLoading as c,resetStatus as e}from\"./data.js\";const i=(i,l,p,f)=>{p.cancel_on_exit&&c(i)&&\"IMG\"===i.tagName&&(o(i),r(i),t(i),s(i,p.class_loading),a(f,-1),e(i),m(p.callback_cancel,i,l,f))};export{i as cancelLoading};\n","import{safeCallback as t}from\"./callback.js\";import{load as o}from\"./load.js\";import{hadStartedLoading as s,setStatus as r,hasEmptyStatus as e}from\"./data.js\";import{cancelLoading as a}from\"./cancelOnExit.js\";import{unobserveEntered as m}from\"./unobserve.js\";import{statusEntered as c}from\"./elementStatus.js\";import{addClass as l,removeClass as i}from\"./class.js\";const n=(e,a,n,p)=>{const f=s(e);r(e,c),l(e,n.class_entered),i(e,n.class_exited),m(e,n,p),t(n.callback_enter,e,a,p),f||o(e,n,p)},p=(o,s,r,m)=>{e(o)||(l(o,r.class_exited),a(o,s,r,m),t(r.callback_exit,o,s,m))};export{n as onEnter,p as onExit};\n","import{loadNative as o}from\"./load.js\";import{setToLoadCount as e}from\"./counters.js\";const t=[\"IMG\",\"IFRAME\",\"VIDEO\"],r=o=>o.use_native&&\"loading\"in HTMLImageElement.prototype,a=(r,a,m)=>{r.forEach((e=>{-1!==t.indexOf(e.tagName)&&o(e,a,m)})),e(m,0)};export{a as loadAllNative,r as shouldUseNative};\n","import{onEnter as r,onExit as e}from\"./intersectionHandlers.js\";import{shouldUseNative as o}from\"./native.js\";import{resetObserver as t}from\"./unobserve.js\";const n=r=>r.isIntersecting||r.intersectionRatio>0,s=(r,e)=>{e.forEach((e=>{r.observe(e)}))},i=(r,e)=>{t(r),s(r,e)},a=(t,s)=>{o(t)||(s._observer=new IntersectionObserver((o=>{((o,t,s)=>{o.forEach((o=>n(o)?r(o.target,o,t,s):e(o.target,o,t,s)))})(o,t,s)}),(r=>({root:r.container===document?null:r.container,rootMargin:r.thresholds||r.threshold+\"px\"}))(t)))};export{n as isIntersecting,s as observeElements,a as setObserver,i as updateObserver};\n","import{hasEmptyStatus as e,hasStatusError as r}from\"./data.js\";const t=e=>Array.prototype.slice.call(e),l=e=>e.container.querySelectorAll(e.elements_selector),o=r=>t(r).filter(e),c=e=>r(e),a=e=>t(e).filter(c),i=(e,r)=>o(e||l(r));export{o as excludeManagedElements,a as filterErrorElements,i as getElementsToLoad,c as hasError,l as queryElements,t as toArray};\n","import{runningOnBrowser as n}from\"./environment.js\";import{resetStatus as o}from\"./data.js\";import{removeClass as e}from\"./class.js\";import{filterErrorElements as r,queryElements as i}from\"./dom.js\";const t=(n,t)=>{r(i(n)).forEach((r=>{e(r,n.class_error),o(r)})),t.update()},m=(o,e)=>{n&&(e._onlineHandler=()=>{t(o,e)},window.addEventListener(\"online\",e._onlineHandler))},s=o=>{n&&window.removeEventListener(\"online\",o._onlineHandler)};export{s as resetOnlineCheck,t as retryLazyLoad,m as setOnlineCheck};\n","import{getExtendedSettings as t}from\"./defaults.js\";import{autoInitialize as o}from\"./autoInitialize.js\";import{load as s}from\"./load.js\";import{setObserver as i,updateObserver as e}from\"./intersectionObserver.js\";import{runningOnBrowser as r,isBot as n}from\"./environment.js\";import{shouldUseNative as m,loadAllNative as h}from\"./native.js\";import{setOnlineCheck as l,resetOnlineCheck as a}from\"./online.js\";import{getElementsToLoad as d,queryElements as f}from\"./dom.js\";import{resetStatus as p}from\"./data.js\";import{setToLoadCount as c}from\"./counters.js\";import{unobserve as u}from\"./unobserve.js\";import{restore as j}from\"./restore.js\";import{deleteOriginalAttrs as _}from\"./originalAttributes.js\";const g=function(o,s){const e=t(o);this._settings=e,this.loadingCount=0,i(e,this),l(e,this),this.update(s)};g.prototype={update:function(t){const o=this._settings,s=d(t,o);c(this,s.length),n?this.loadAll(s):m(o)?h(s,o,this):e(this._observer,s)},destroy:function(){this._observer&&this._observer.disconnect(),a(this),f(this._settings).forEach((t=>{_(t)})),delete this._observer,delete this._settings,delete this._onlineHandler,delete this.loadingCount,delete this.toLoadCount},loadAll:function(t){const o=this._settings;d(t,o).forEach((t=>{u(t,this),s(t,o,this)}))},restoreAll:function(){const t=this._settings;f(t).forEach((o=>{j(o,t)}))}},g.load=(o,i)=>{const e=t(i);s(o,e)},g.resetStatus=t=>{p(t)},r&&o(g,window.lazyLoadOptions);export{g as default};\n","/**\n * tua-body-scroll-lock v1.5.0\n * (c) 2024 Evinma, BuptStEve\n * @license MIT\n */\n\nvar isServer = function isServer() {\n return typeof window === 'undefined';\n};\nvar detectOS = function detectOS(ua) {\n ua = ua || navigator.userAgent;\n var ipad = /(iPad).*OS\\s([\\d_]+)/.test(ua);\n var iphone = !ipad && /(iPhone\\sOS)\\s([\\d_]+)/.test(ua);\n var android = /(Android);?[\\s/]+([\\d.]+)?/.test(ua);\n var ios = iphone || ipad;\n return {\n ios: ios,\n android: android\n };\n};\nfunction getEventListenerOptions(options) {\n /* istanbul ignore if */\n if (isServer()) return false;\n if (!options) {\n throw new Error('options must be provided');\n }\n var isSupportOptions = false;\n var listenerOptions = {\n get passive() {\n isSupportOptions = true;\n return undefined;\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n var noop = function noop() {};\n var testEvent = '__TUA_BSL_TEST_PASSIVE__';\n window.addEventListener(testEvent, noop, listenerOptions);\n window.removeEventListener(testEvent, noop, listenerOptions);\n var capture = options.capture;\n /* istanbul ignore next */\n return isSupportOptions ? options : typeof capture !== 'undefined' ? capture : false;\n}\nfunction noticeRequiredTargetElement(targetElement) {\n if (targetElement) return false;\n if (targetElement === null) return false;\n /* istanbul ignore if */\n if (process.env.NODE_ENV === 'production') return false;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'test') {\n console.warn('If scrolling is also required in the floating layer, ' + 'the target element must be provided.');\n }\n return true;\n}\n/**\n * Get global function that calls preventDefault\n */\nfunction getPreventEventDefault() {\n if ('__BSL_PREVENT_DEFAULT__' in window) {\n return window.__BSL_PREVENT_DEFAULT__;\n }\n window.__BSL_PREVENT_DEFAULT__ = function (event) {\n if (!event.cancelable) return;\n event.preventDefault();\n };\n return window.__BSL_PREVENT_DEFAULT__;\n}\n\nvar initialLockState = {\n lockedNum: 0,\n lockedElements: [],\n unLockCallback: null,\n documentListenerAdded: false,\n initialClientPos: {\n clientX: 0,\n clientY: 0\n }\n};\nfunction getLockState(options) {\n if (isServer()) return initialLockState;\n /** use local lockState */\n if (!(options === null || options === void 0 ? void 0 : options.useGlobalLockState)) return getLockState.lockState;\n /** use global lockState */\n var lockState = '__BSL_LOCK_STATE__' in window ? Object.assign(Object.assign({}, initialLockState), window.__BSL_LOCK_STATE__) : initialLockState;\n /** assign to global */\n window.__BSL_LOCK_STATE__ = lockState;\n return lockState;\n}\ngetLockState.lockState = initialLockState;\n\nfunction handleScroll(event, targetElement, initialClientPos) {\n if (targetElement) {\n var scrollTop = targetElement.scrollTop,\n scrollLeft = targetElement.scrollLeft,\n scrollWidth = targetElement.scrollWidth,\n scrollHeight = targetElement.scrollHeight,\n clientWidth = targetElement.clientWidth,\n clientHeight = targetElement.clientHeight;\n var clientX = event.targetTouches[0].clientX - initialClientPos.clientX;\n var clientY = event.targetTouches[0].clientY - initialClientPos.clientY;\n var isVertical = Math.abs(clientY) > Math.abs(clientX);\n var isOnTop = clientY > 0 && scrollTop === 0;\n var isOnLeft = clientX > 0 && scrollLeft === 0;\n var isOnRight = clientX < 0 && scrollLeft + clientWidth + 1 >= scrollWidth;\n var isOnBottom = clientY < 0 && scrollTop + clientHeight + 1 >= scrollHeight;\n if (isVertical && (isOnTop || isOnBottom) || !isVertical && (isOnLeft || isOnRight)) {\n return getPreventEventDefault()(event);\n }\n }\n event.stopPropagation();\n return true;\n}\n\nfunction setOverflowHiddenPc() {\n var $html = document.documentElement;\n var htmlStyle = Object.assign({}, $html.style);\n var scrollBarWidth = window.innerWidth - $html.clientWidth;\n var previousPaddingRight = parseInt(window.getComputedStyle($html).paddingRight, 10);\n $html.style.overflow = 'hidden';\n $html.style.boxSizing = 'border-box';\n $html.style.paddingRight = \"\".concat(scrollBarWidth + previousPaddingRight, \"px\");\n return function () {\n ['overflow', 'boxSizing', 'paddingRight'].forEach(function (x) {\n $html.style[x] = htmlStyle[x] || '';\n });\n };\n}\nfunction setOverflowHiddenMobile(options) {\n var $html = document.documentElement;\n var $body = document.body;\n var scrollTop = $html.scrollTop || $body.scrollTop;\n var htmlStyle = Object.assign({}, $html.style);\n var bodyStyle = Object.assign({}, $body.style);\n $html.style.height = '100%';\n $html.style.overflow = 'hidden';\n $body.style.top = \"-\".concat(scrollTop, \"px\");\n $body.style.width = '100%';\n $body.style.height = 'auto';\n $body.style.position = 'fixed';\n $body.style.overflow = (options === null || options === void 0 ? void 0 : options.overflowType) || 'hidden';\n return function () {\n $html.style.height = htmlStyle.height || '';\n $html.style.overflow = htmlStyle.overflow || '';\n ['top', 'width', 'height', 'overflow', 'position'].forEach(function (x) {\n $body.style[x] = bodyStyle[x] || '';\n });\n var supportsNativeSmoothScroll = ('scrollBehavior' in document.documentElement.style);\n if (supportsNativeSmoothScroll) {\n window.scrollTo({\n top: scrollTop,\n behavior: 'instant'\n });\n } else {\n window.scrollTo(0, scrollTop);\n }\n };\n}\n\nvar eventListenerOptions = getEventListenerOptions({\n passive: false\n});\nfunction lock(targetElement, options) {\n if (isServer()) return;\n noticeRequiredTargetElement(targetElement);\n var lockState = getLockState(options);\n if (detectOS().ios) {\n // iOS\n if (targetElement) {\n var elementArray = Array.isArray(targetElement) ? targetElement : [targetElement];\n elementArray.forEach(function (element) {\n if (element && lockState.lockedElements.indexOf(element) === -1) {\n element.ontouchstart = function (event) {\n var _event$targetTouches$ = event.targetTouches[0],\n clientX = _event$targetTouches$.clientX,\n clientY = _event$targetTouches$.clientY;\n lockState.initialClientPos = {\n clientX: clientX,\n clientY: clientY\n };\n };\n element.ontouchmove = function (event) {\n if (event.targetTouches.length !== 1) return;\n handleScroll(event, element, lockState.initialClientPos);\n };\n lockState.lockedElements.push(element);\n }\n });\n }\n if (!lockState.documentListenerAdded) {\n document.addEventListener('touchmove', getPreventEventDefault(), eventListenerOptions);\n lockState.documentListenerAdded = true;\n }\n } else if (lockState.lockedNum <= 0) {\n lockState.unLockCallback = detectOS().android ? setOverflowHiddenMobile(options) : setOverflowHiddenPc();\n }\n lockState.lockedNum += 1;\n}\nfunction unlock(targetElement, options) {\n if (isServer()) return;\n noticeRequiredTargetElement(targetElement);\n var lockState = getLockState(options);\n lockState.lockedNum -= 1;\n if (lockState.lockedNum > 0) return;\n if (!detectOS().ios && typeof lockState.unLockCallback === 'function') {\n lockState.unLockCallback();\n return;\n }\n // iOS\n if (targetElement) {\n var elementArray = Array.isArray(targetElement) ? targetElement : [targetElement];\n elementArray.forEach(function (element) {\n var index = lockState.lockedElements.indexOf(element);\n if (index !== -1) {\n element.ontouchmove = null;\n element.ontouchstart = null;\n lockState.lockedElements.splice(index, 1);\n }\n });\n }\n if (lockState.documentListenerAdded) {\n document.removeEventListener('touchmove', getPreventEventDefault(), eventListenerOptions);\n lockState.documentListenerAdded = false;\n }\n}\nfunction clearBodyLocks(options) {\n if (isServer()) return;\n var lockState = getLockState(options);\n lockState.lockedNum = 0;\n if (!detectOS().ios && typeof lockState.unLockCallback === 'function') {\n lockState.unLockCallback();\n return;\n }\n // iOS\n if (lockState.lockedElements.length) {\n // clear events\n var element = lockState.lockedElements.pop();\n while (element) {\n element.ontouchmove = null;\n element.ontouchstart = null;\n element = lockState.lockedElements.pop();\n }\n }\n if (lockState.documentListenerAdded) {\n document.removeEventListener('touchmove', getPreventEventDefault(), eventListenerOptions);\n lockState.documentListenerAdded = false;\n }\n}\n\nexport { clearBodyLocks, lock, unlock };\n","// import $ from 'jquery';\n// FESD\nimport { Aost4, Anchor4, ImageValidate, ImagePreview } from '../fesd';\n// LazyLoad\nimport LazyLoad from 'vanilla-lazyload';\n// scrollbar Lock\nimport { lock, unlock } from 'tua-body-scroll-lock';\n\nimport { OverlayScrollbars } from 'overlayscrollbars';\n\nexport function scrollLock(elements) {\n const elementArr = [];\n if (elements) {\n elements.forEach(element => {\n if (element instanceof HTMLElement) {\n elementArr.push(element);\n } else if (typeof element === 'string') {\n elementArr.push(...document.querySelectorAll(`${element}`));\n }\n });\n }\n lock(elementArr);\n}\n\nexport function scrollUnlock(elements) {\n const elementArr = [];\n if (elements) {\n elements.forEach(element => {\n if (element instanceof HTMLElement) {\n elementArr.push(element);\n } else if (typeof element === 'string') {\n elementArr.push(...document.querySelectorAll(`${element}`));\n }\n });\n }\n unlock(elementArr);\n}\n\nexport function loading() {\n const LoadingDOM = `<div class=\"loading-wrapper\"><div class=\"icon-box\"><svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 100 100\" preserveAspectRatio=\"xMidYMid\"><path d=\"M10 50A40 40 0 0 0 90 50A40 42 0 0 1 10 50\" fill=\"#ffffff\" stroke=\"none\"><animateTransform attributeName=\"transform\" type=\"rotate\" dur=\"1s\" repeatCount=\"indefinite\" keyTimes=\"0;1\" values=\"0 50 51;360 50 51\"></animateTransform></path></svg></div></div>`;\n $('body').append(LoadingDOM);\n $('.loading-wrapper')\n .fadeIn(300)\n .promise()\n .done(function () {\n scrollLock();\n });\n}\n\nexport function loaded() {\n $('.loading-wrapper')\n .fadeOut(300)\n .promise()\n .done(function () {\n $('.loading-wrapper').remove();\n scrollUnlock();\n });\n}\n\n\nexport function imagePreview(selector, options) {\n new ImagePreview(selector, options);\n}\n\nexport function ajaxUpdate() {\n const aost4 = new Aost4('[data-aost]')\n const lazy = new LazyLoad({ callback_loaded: img => { }, })\n const imageValidate = new ImageValidate()\n const anchor4 = new Anchor4('[data-anchor-target]')\n\n aost4.update();\n lazy.update();\n imageValidate.reValidate();\n anchor4.update();\n\n}\n\nexport function tabChange(target, callback = () => { }) {\n const $target = $(`[data-tab-content=${target}]`);\n $target.fadeIn(function () {\n if (typeof callback === \"function\") {\n callback();\n }\n }).siblings(\"[data-tab-content]\").hide();\n ajaxUpdate();\n}\n\n\n// WDD function 工具包\n/**\n *\n */\nexport function bodyScrollbarInit() {\n const bodyScrollbar = OverlayScrollbars(\n {\n target: document.body,\n cancel: {\n nativeScrollbarsOverlaid: true,\n body: null,\n },\n },\n {\n overflow: {\n x: 'hidden',\n },\n scrollbars: {\n autoHide: 'scroll',\n autoHideSuspend: true,\n },\n },\n {\n initialized() {\n console.log('body scrollbar initialized');\n },\n },\n );\n}\n/**\n * iOS 回上一頁空白修正\n */\nexport function appleDebug() {\n window.onpageshow = function (event) {\n if (event.persisted) {\n window.location.reload();\n }\n };\n}\n/**\n * 偵測 MacOS 版本\n * @returns\n */\nexport function detectMacOSVersion() {\n const userAgent = navigator.userAgent;\n return {\n BigSurUP: /Mac OS X 10.15/.test(userAgent) || /Mac OS X 10_15_7/.test(userAgent) || /Mac OS X 10_15_8/.test(userAgent) || /Mac OS X 10_15_9/.test(userAgent) || /Mac OS X 11_/.test(userAgent) || /Mac OS X 12_/.test(userAgent),\n };\n}\n\n/**\n * 點擊開關class\n * @param {object} target 目標 element\n * @param {string} className 欲切換的 class 名稱\n */\nexport function clickToggleClass(target, className) {\n $(target).on('click', function () {\n $(this).toggleClass(className);\n });\n}\n\n/**\n * 點擊切換active\n * @param {object} target 目標 element\n * @param {string} className 欲切換的 class 名稱\n */\nexport function clickSwitchClass(target, className) {\n $(target).on('click', function () {\n $(target).not(this).removeClass(className);\n $(this).addClass(className);\n });\n}\n\n/**\n * Debounce(去抖動)\n * @param {function} func 欲防止重複執行的 function\n * @param {number} delay 延遲執行的時間(毫秒)\n * @returns\n */\nexport function debounce(func, delay = 250) {\n let timer = null;\n return function (...args) {\n let context = this;\n clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(context, args);\n }, delay);\n };\n}\n\n/**\n * Throttle (節閥)\n * @param {*} func 欲防止重複執行的 function\n * @param {*} timeout 設定多少毫秒內只執行一次\n * @returns\n */\nexport function throttle(func, timeout = 250) {\n let last;\n let timer;\n return function () {\n const context = this;\n const args = arguments;\n const now = +new Date();\n if (last && now < last + timeout) {\n clearTimeout(timer);\n timer = setTimeout(function () {\n last = now;\n func.apply(context, args);\n }, timeout);\n } else {\n last = now;\n func.apply(context, args);\n }\n };\n}\n\n/**\n * 倒數計時\n *\n * 搭配以下結構使用\n *\n * .countdown(data-seconds=\"600\") data-seconds 填入欲倒數秒數\n *\n * clearInterval(_g.interval[?]) 可以暫停\n */\nexport function countDown() {\n window._g.interval = [];\n const countdowns = $('.countdown');\n countdowns.each((i, el) => {\n const set_seconds = Number($(el).attr('data-seconds')) + 1;\n let set_time = Math.floor(set_seconds / 60) + ':' + (set_seconds % 60);\n window._g.interval[i] = setInterval(function () {\n var timer = set_time.split(':');\n var minutes = parseInt(timer[0], 10);\n var seconds = parseInt(timer[1], 10);\n --seconds;\n minutes = seconds < 0 ? --minutes : minutes;\n minutes = minutes < 10 ? (minutes = '0' + minutes) : minutes;\n if (minutes == 0 && seconds == 0) clearInterval(window._g.interval[i]);\n seconds = seconds < 0 ? 59 : seconds;\n seconds = seconds < 10 ? '0' + seconds : seconds;\n $(el).html(minutes + ':' + seconds);\n set_time = minutes + ':' + seconds;\n }, 1000);\n });\n}\n\n/**\n * 計算手機100vh\n */\nexport function fixMobile100vh() {\n const init = function () {\n let vh = window.innerHeight * 0.01;\n document.documentElement.style.setProperty('--vh', vh + 'px');\n };\n init();\n window.addEventListener('resize', debounce(init));\n}\n\n/**\n * 文字切割\n * @param {object} target 目標 element\n * @param {boolean} isWrap 是否要每個單字再包一層\n * @param {number} delayStartTime 第一個的延遲時間(若為'random'則隨機)\n * @param {number} delaySpace 每一個字元延遲的間隔時間\n * @param {number} randomTransTime 隨機transition Max time\n */\nexport function wordAnimation(target, isWrap, delayStartTime, delaySpace, randomTransTime) {\n const $this = this;\n const word = $(target).html();\n const removeBr = word.split('<br>');\n let newText = '';\n let index = 0;\n removeBr.forEach((words, s) => {\n if (s !== 0) newText += `<br>`;\n const letters = words.split('');\n letters.forEach((letter, i) => {\n if (isWrap) {\n if (i === 0) newText += `<span class=\"letter-wrap\" style=\"display: inline-block\">`;\n if (letter === ' ') newText += '</span> <span class=\"letter-wrap\" style=\"display: inline-block\">';\n else {\n newText += `<span class=\"letter\"${randomTransTime || delayStartTime\n ? ` style=\"${randomTransTime ? `transition: ${$this.formatFloat(Math.random(), 2) * randomTransTime}s;` : ''}${delayStartTime ? (delayStartTime === 'random' ? `transition-delay: ${$this.formatFloat(Math.random(), 2)}s;` : `transition-delay: ${delayStartTime + index * delaySpace}s;`) : ''\n }\"`\n : ''\n }>${letter}</span>`;\n index++;\n }\n if (i === words.length - 1) newText += `</span>`;\n } else {\n if (letter === ' ') newText += ' ';\n else {\n newText += `<span class=\"letter\"${randomTransTime || delayStartTime\n ? ` style=\"${randomTransTime ? `transition: ${$this.formatFloat(Math.random(), 2) * randomTransTime}s;` : ''}${delayStartTime ? (delayStartTime === 'random' ? `transition-delay: ${$this.formatFloat(Math.random(), 2)}s;` : `transition-delay: ${delayStartTime + index * delaySpace}s;`) : ''\n }\"`\n : ''\n }>${letter}</span>`;\n index++;\n }\n }\n });\n });\n $(target).html(newText);\n}\n\n/**\n * 小數點後第N位四捨五入\n * @param {number} num 欲四捨五入的數字\n * @param {number} pos 欲取得小數點後第幾位\n * @returns\n */\nexport function formatFloat(num, pos) {\n const size = Math.pow(10, pos);\n return Math.round(num * size) / size;\n}\n\n/**\n * 取得SliderIndex\n * @param {object} swiper swiper物件\n * @returns\n */\nexport function getSlideDataIndex(swiper) {\n let activeIndex = swiper.activeIndex;\n let slidesLen = swiper.slides.length;\n if (swiper.params.loop) {\n switch (swiper.activeIndex) {\n case 0:\n activeIndex = slidesLen - 3;\n break;\n case slidesLen - 1:\n activeIndex = 0;\n break;\n default:\n --activeIndex;\n }\n }\n return activeIndex;\n}\n\n/**\n * 判斷Swiper輪播數量\n * @param {object} swiper swiper物件\n * @param {number} disableNum 設定數量 <= 多少會禁用 swiper\n */\nexport function getSlidesCount(swiper, disableNum) {\n const container = swiper.$el;\n const gridRows = swiper.params.grid.rows;\n const disableCount = disableNum ? disableNum : swiper.params.slidesPerView * gridRows;\n const slidesCount = () => {\n if (swiper.loopedSlides) return swiper.slides.length - swiper.loopedSlides * 2;\n else return swiper.slides.length;\n };\n if (slidesCount() <= disableCount) {\n container.addClass('swiper-no-swiping');\n $(swiper.params.navigation.nextEl).hide();\n $(swiper.params.navigation.prevEl).hide();\n $(swiper.params.pagination.el).hide();\n swiper.params.autoplay.enabled = false;\n swiper.autoplay.stop();\n } else {\n container.removeClass('swiper-no-swiping');\n $(swiper.params.navigation.nextEl).show();\n $(swiper.params.navigation.prevEl).show();\n $(swiper.params.pagination.el).show();\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n }\n }\n}\n\n/**\n * 偵測 swiper 內圖片深淺\n * @param {object} swiper swiper物件\n */\nexport function slideImgDetect(swiper) {\n swiper.el.querySelectorAll('img.detect-shade').forEach(img => {\n img.addEventListener('load', function () {\n detectShade(img);\n });\n });\n}\n\n/**\n * 判斷當前輪播是否為影片\n * @param {object} swiper swiper物件\n */\nexport function isVideo(swiper) {\n const container = swiper.el;\n const activeSlide = $(container).find('.swiper-slide-active');\n const video = $(activeSlide).find('video').get(0);\n const allVideo = $(container).find('.swiper-slide video');\n swiper.autoplay.stop();\n $(video).off('ended');\n if (video) {\n allVideo.each((index, el) => {\n el.currentTime = 0;\n });\n $(video).on('ended', function () {\n swiper.slideNext();\n });\n video.play();\n } else {\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n }\n }\n}\n\n/**\n * 數字從0跑到9\n *\n * 要用之前記得引用 layouts/_growAnimate.sass\n *\n * 結構 <div class=\"number-grow\" data-num=\"12345\"></div>\n */\nexport function numberGrow() {\n $('.number-grow').each(function (index, el) {\n const ele = $(el);\n const num = ele.attr('data-num');\n const comma = num.replace(/(\\d)(?=(?:\\d{3})+$)/g, '$1,');\n const splitNum = comma.split('');\n const zeroToNine = () => {\n let text = '';\n for (var i = 0; i <= 9; i++) {\n text += String(i) + '<br>';\n }\n return text;\n };\n $(splitNum).each(function (i, el) {\n const dom = () => {\n if (el !== ',') return `<div class=\"num\" data-final-num=\"${el}\"><div><br>${zeroToNine()}<br>${zeroToNine()}</div></div>`;\n else return `<div class=\"comma\">${el}</div>`;\n };\n ele.append(dom);\n });\n });\n}\n\n/**\n * 英文從A跑到Z(只能大寫)\n *\n * 要用之前記得引用 layouts/_growAnimate.sass\n *\n * 結構 結構 <div class=\"letter-grow\" data-num=\"ABCDE\"></div>\n */\nexport function letterGrow() {\n $('.letter-grow').each(function (index, el) {\n const ele = $(el);\n const letter = ele.attr('data-letter');\n const splitLetter = letter.split('');\n const a_z = [];\n const aToZ = () => {\n let text = '';\n for (let i = 65; i <= 90; i++) {\n a_z.push(String.fromCharCode(i));\n text += String.fromCharCode(i) + '<br>';\n }\n return text;\n };\n $(splitLetter).each(function (i, el) {\n const dom = `<div class=\"letter\" data-final-letter=\"${el}\"><div><br>${aToZ()}<br>${aToZ()}</div></div>`;\n ele.append(dom);\n });\n });\n}\n\n/**\n * 取得 target 的 transformX\n * @param {object} target 目標 element\n * @returns\n */\nexport function getTransformX(target) {\n const transform = getComputedStyle(target).transform;\n let mat = transform.match(/^matrix3d\\((.+)\\)$/);\n if (mat) return parseFloat(mat[1].split(', ')[12]);\n mat = transform.match(/^matrix\\((.+)\\)$/);\n return mat ? parseFloat(mat[1].split(', ')[4]) : 0;\n}\n\n/**\n * 取得 target 的 transformY\n * @param {object} target 目標 element\n * @returns\n */\nexport function getTransformY(target) {\n const transform = getComputedStyle(target).transform;\n let mat = transform.match(/^matrix3d\\((.+)\\)$/);\n if (mat) return parseFloat(mat[1].split(', ')[13]);\n mat = transform.match(/^matrix\\((.+)\\)$/);\n return mat ? parseFloat(mat[1].split(', ')[5]) : 0;\n}\n\n/**\n * HTML 字串轉 DOM\n * @param {string} htmlString HTML 字串\n * @returns\n */\nexport function htmlStringToDOM(htmlString) {\n const dom = document.createElement('div');\n dom.innerHTML = htmlString;\n return dom.childNodes[0];\n}","import fesdDB from '../../fesdDB.js';\nimport Modal4 from '../modal4/modal4';\nimport videoPlayer from './videoPlayer';\nimport SHARED from './../shared/shared';\nimport { scrollLock, scrollUnlock } from \"../../tools/utils.js\"\n\nimport { isString, isElement, isNodeList, getAllElements, warn, error, insert } from './../shared/utils';\n\n('use strict');\n\n// define custom element\nif (!customElements.get('video-player')) {\n customElements.define('video-player', videoPlayer);\n}\n\n// 判斷影片物件有沒有 video-id\nconst hasVideoID = data => {\n return data.videoId !== '' || typeof data.videoId !== 'undefined' ? true : false;\n};\n\n// 判斷影片物件是否已經啟用\nconst isActive = data => {\n return data.$selector.getAttribute('video4-active') === 'on' ? true : false;\n};\n\nconst createPlayer = params => {\n return `<video-player video-id=\"${params.videoId}\" video-type=\"${params.videoType}\" video-autoplay=\"${params.videoAutoplay}\"></video-player>`;\n};\n\nclass video4 {\n constructor(el, options = {}) {\n // 可傳 string 或 element 或 nodeList\n if (!isString(el) && !isElement(el) && !isNodeList(el)) {\n error('video4', `找不到該物件 -> ${el}`);\n return;\n }\n\n this.__storage__ = {\n el,\n options,\n };\n\n this.#create();\n }\n\n #create() {\n const { el, options } = this.__storage__;\n // 從 fesdDB 提取設定\n const { SETTINGS, EVENTS } = fesdDB.video4;\n\n this.elements = getAllElements(el);\n this.options = Object.assign({}, SETTINGS, options);\n this.__events__ = Object.assign({}, EVENTS);\n\n if (this.options.on) {\n for (const [k, v] of Object.entries(this.options.on)) {\n this.__events__[k] = [v];\n }\n }\n\n this.#init();\n }\n\n #init() {\n const { elements, options } = this;\n\n elements.forEach(el => {\n el.video = {};\n el.video.instance = this;\n el.video.defaultOptions = options;\n el.video.params = this.#getVideoData(el);\n\n if (hasVideoID(el.video.params) && !isActive(el.video.params)) {\n el.setAttribute('video4-active', 'on');\n this.#createCover(el);\n }\n\n if (!hasVideoID(el.video.params)) {\n error('video4', `無法取得影片 ID`);\n }\n });\n\n this.emit('init');\n }\n\n #createCover(el) {\n const { LAYOUT } = fesdDB.video4;\n const params = el.video.params;\n const { $selector, videoLayoutNo, videoId, videoType, videoMode, videoButton, videoCover } = params;\n\n if (videoMode === 'onBox') {\n let $target = null;\n if (videoCover === 'on') {\n el.classList.add('video4-cover');\n // 無圖片結構放置圖片結構\n if (!$selector.querySelector('img')) {\n $selector.insertAdjacentHTML(insert.prepend, '<picture><source srcset=\"\" type=\"image/webp\"><source srcset=\"\" type=\"image/jpeg\"><img src=\"\" alt></picture>');\n warn('video4', `若啟用 [videoCover] 且選擇 onBox 模式必須於 video-target 內放置 img 結構,若無結構則自動加入圖片結構`);\n }\n\n const $cover = $selector.querySelector('img');\n $cover.insertAdjacentHTML(insert.after, LAYOUT[videoLayoutNo]);\n\n const src = $cover?.getAttribute('src') || $cover?.getAttribute('data-src');\n\n // 無圖片時放置預設封面畫面,僅 youtube & vimeo 提供\n if (!src && videoType == 'youtube') {\n $cover.setAttribute('src', `https://img.youtube.com/vi/${videoId}/0.jpg`);\n } else if (!src && videoType == 'vimeo') {\n $cover.setAttribute('src', `https://vumbnail.com/${videoId}_large.jpg`);\n } else {\n warn('video4', `僅 youtube & vimeo 提供,無圖片時放置預設封面畫面,其他影片平台請自行上傳封面照片`);\n }\n }\n\n // 若無設定撥放按鈕,則點擊物件轉移為物件本身\n if (videoButton == 'off') {\n $target = $selector;\n } else {\n $target = $selector.querySelector(videoButton) ?? $selector;\n if (!$selector.querySelector(videoButton)) {\n warn('video4', `找不到 videoButton 設定的 element -> '${videoButton}' , 點擊物件轉移至 '${this.__storage__.el}'`);\n }\n }\n\n if (!$target.video) {\n $target.video = {};\n $target.video.params = params;\n }\n\n $target.video.eventHandler = this.#trigger;\n $target.addEventListener('click', $target.video.eventHandler);\n } else if (videoMode === 'onPage') {\n let $target = null;\n if (videoCover == 'on') {\n el.classList.add('video4-cover');\n // 無圖片結構放置圖片結構\n if (!$selector.querySelector('img')) {\n $selector.insertAdjacentHTML(insert.prepend, '<picture><source srcset=\"\" type=\"image/webp\"><source srcset=\"\" type=\"image/jpeg\"><img src=\"\" alt></picture>');\n warn('video', `若啟用 [videoCover] 且選擇 onBox 模式必須於 video-target 內放置 img 結構`);\n }\n\n const $cover = $selector.querySelector('img');\n $cover.insertAdjacentHTML(insert.after, LAYOUT[videoLayoutNo]);\n\n const src = $cover?.getAttribute('src') || $cover?.getAttribute('data-src');\n\n // 無圖片時放置預設封面畫面,僅 youtube 提供\n if (!src && videoType == 'youtube') {\n $cover.setAttribute('src', `https://img.youtube.com/vi/${videoId}/0.jpg`);\n } else if (!src && videoType == 'vimeo') {\n $cover.setAttribute('src', `https://vumbnail.com/${videoId}_large.jpg`);\n } else if (!src) {\n warn('video4', `僅 youtube & vimeo 提供,無圖片時放置預設封面畫面,其他影片平台請自行上傳封面照片`);\n }\n\n // 若無設定撥放按鈕,則點擊物件轉移為物件本身\n if (videoButton == 'off') {\n $target = $selector;\n } else {\n $target = $selector.querySelector(videoButton) ?? $selector;\n if (!$selector.querySelector(videoButton)) {\n warn('video4', `找不到 videoButton 設定的 element -> '${videoButton}', 點擊物件轉移至 '${this.__storage__.el}'`);\n }\n }\n } else {\n $selector.innerHTML = createPlayer(params);\n return;\n }\n\n if (!$target.video) {\n $target.video = {};\n $target.video.params = params;\n }\n\n $target.video.eventHandler = this.#trigger;\n $target.addEventListener('click', $target.video.eventHandler);\n }\n }\n\n #trigger(e) {\n const { video } = this;\n const { $selector, videoMode, videoTarget, videoTargetRoute } = video.params;\n const lazy = new LazyLoad({ callback_loaded: img => { }, })\n\n if (videoMode == 'onBox') {\n const options = {\n target: videoTarget,\n route: videoTargetRoute,\n on: {\n complete(modal) {\n modal.querySelector('.modal-content').insertAdjacentHTML('beforeend', createPlayer(video.params));\n },\n open(modal) {\n const scrollers = modal.querySelectorAll('[data-overlayscrollbars-viewport]');\n lazy.update();\n scrollLock([...scrollers]);\n },\n close(modal) {\n const scrollers = modal.querySelectorAll('[data-overlayscrollbars-viewport]');\n scrollUnlock([...scrollers]);\n },\n destroy(modal) { },\n },\n };\n\n Modal4.open(options);\n } else if (videoMode == 'onPage') {\n // onPage 點擊後應自動撥放影片\n video.params.videoAutoplay = 'on';\n // 直接替換 cover & playButton\n $selector.innerHTML = createPlayer(video.params);\n }\n }\n\n #getVideoData(el) {\n const { SETTINGS } = fesdDB.video4;\n\n return {\n $selector: el,\n videoId: el.getAttribute('video-id'),\n videoType: el.getAttribute('video-type'),\n videoAutoplay: el.getAttribute('video-autoplay') || SETTINGS.videoAutoplay,\n videoMode: el.getAttribute('video-mode') || SETTINGS.videoMode,\n videoButton: el.getAttribute('video-button') || SETTINGS.videoButton,\n videoCover: el.getAttribute('video-cover') || SETTINGS.videoCover,\n videoLayoutNo: el.getAttribute('video-layout-no') || SETTINGS.videoLayoutNo,\n videoTarget: el.getAttribute('video-target') || SETTINGS.videoTarget,\n videoTargetRoute: el.getAttribute('video-target-route') || SETTINGS.videoTargetRoute,\n };\n }\n\n update() {\n this.#create();\n }\n}\n\nObject.assign(video4.prototype, SHARED);\n\nexport default video4;\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf('<li') === 0) toCreate = 'ul';\n if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n if (html.indexOf('<tbody') === 0) toCreate = 'table';\n if (html.indexOf('<option') === 0) toCreate = 'select';\n const tempParent = document.createElement(toCreate);\n tempParent.innerHTML = html;\n\n for (let i = 0; i < tempParent.childNodes.length; i += 1) {\n arr.push(tempParent.childNodes[i]);\n }\n } else {\n arr = qsa(selector.trim(), context || document);\n } // arr = qsa(selector, document);\n\n } else if (selector.nodeType || selector === window || selector === document) {\n arr.push(selector);\n } else if (Array.isArray(selector)) {\n if (selector instanceof Dom7) return selector;\n arr = selector;\n }\n\n return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\n// eslint-disable-next-line\n\nfunction addClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionStart(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionstart', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionstart', fireCallBack);\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, transitionStart, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex]; // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n } // Update progress\n\n\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < swiper.loopedSlides; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlides.push(slides.eq(index)[0]);\n prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\n }\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line\n\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n $targetEl = $(eventPath[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopedSlidesLimit: true,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n }); // eslint-disable-next-line no-constructor-return\n\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n // eslint-disable-next-line no-constructor-return\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n\n swiper.update();\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n\n const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`<div class=\"${swiper.params.slideClass}\" data-swiper-slide-index=\"${index}\">${slide}</div>`);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides\n } = swiper.params;\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n\n emit('virtualUpdate');\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n\n return slidesToRender;\n }()\n });\n\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n\n return;\n }\n\n const prependIndexes = [];\n const appendIndexes = [];\n\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n\n appendIndexes.forEach(index => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach(index => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n\n update(true);\n }\n\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n\n function removeAllSlides() {\n swiper.virtual.slides = [];\n\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Keyboard({\n swiper,\n extendParams,\n on,\n emit\n}) {\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\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\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; // Directions locks\n\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false; // Check that swiper should be inside of visible area of window\n\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].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\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\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\n inView = true;\n }\n }\n\n if (!inView) return undefined;\n }\n\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\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\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n\n emit('keyPress', kc);\n return undefined;\n }\n\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\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}","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\nexport default function Mousewheel({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n // Legacy\n\n if ('detail' in e) {\n sY = e.detail;\n }\n\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n } // side scrolling on FF with DOMMouseScroll\n\n\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n } // Fall-back if spin cannot be determined\n\n\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n } // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n\n\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n } // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n\n\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n } // If you got here is because an animation has been triggered so store the current time\n\n\n lastScrollTime = new window.Date().getTime(); // Return false as a default\n\n return false;\n }\n\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n\n return false;\n }\n\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n if (params.invert) delta = -delta; // Get the scroll positions\n\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n }; // Keep the most recent events\n\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n } // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n\n\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n } // Emit event\n\n\n if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay\n\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\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\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\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 const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\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 const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\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\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n init();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","export default function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\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 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\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\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\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\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\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.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\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 $el.html(paginationHTML);\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 $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\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 = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\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 (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](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 {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !$(targetEl).hasClass(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.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n init();\n render();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl,\n progress\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n\n if (rtl) {\n newPos = -newPos;\n\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n }\n\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n }\n\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n $el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n clearTimeout(dragTimeout);\n $el.transition(0);\n\n if (params.hide) {\n $el.css('opacity', 1);\n }\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n\n emit('scrollbarDragStart', e);\n }\n\n function onDragMove(e) {\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n\n emit('scrollbarDragEnd', e);\n\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const {\n scrollbar,\n touchEventsTouch,\n touchEventsDesktop,\n params,\n support\n } = swiper;\n const $el = scrollbar.$el;\n if (!$el) return;\n const target = $el[0];\n const activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n\n function init() {\n const {\n scrollbar,\n $el: $swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let $el = $(params.el);\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n if ($dragEl.length === 0) {\n $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0]\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.scrollbar;\n const $el = swiper.scrollbar.$el;\n\n if ($el) {\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n\n disableDraggable();\n }\n\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.scrollbar;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n init();\n updateSize();\n setTranslate();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}","import $ from '../../shared/dom.js';\nexport default function Parallax({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n parallax: {\n enabled: false\n }\n });\n\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const {\n $el,\n slides,\n progress,\n snapGrid\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = (duration = swiper.params.speed) => {\n const {\n $el\n } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\nexport default function Zoom({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n\n scale = value;\n }\n\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n } // Events\n\n\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n\n if (!support.gestures) {\n if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n\n isScaling = true;\n }\n\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n }\n\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n\n if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\n return;\n }\n\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n } // Define if we need image drag\n\n\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n\n if (e.cancelable) {\n e.preventDefault();\n }\n\n e.stopPropagation();\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n } // Velocity\n\n\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY; // Fix duration\n\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY; // Define if we need image drag\n\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n } // Toggle Zoom\n\n\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const {\n passiveListener\n } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n } // Attach/Detach Events\n\n\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Lazy({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader'\n }\n });\n swiper.lazy = {};\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`) : swiper.slides.eq(index);\n const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images.push($slideEl[0]);\n }\n\n if ($images.length === 0) return;\n $images.each(imageEl => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n\n if ($pictureEl.length) {\n $pictureEl.children('source').each(sourceEl => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const {\n $wrapperEl,\n params: swiperParams,\n slides,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n let slidesPerView = swiperParams.slidesPerView;\n\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n const amount = params.loadPrevNextAmount;\n const spv = Math.ceil(slidesPerView);\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n for (let i = activeIndex + spv; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n } // Prev Slides\n\n\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const {\n rtlTranslate: rtl\n } = swiper;\n let inView = false;\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const {\n lazy,\n cssMode,\n watchSlidesProgress,\n touchReleaseOnEdges,\n resistanceRatio\n } = swiper.params;\n\n if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {\n load();\n }\n });\n on('destroy', () => {\n if (!swiper.$el) return;\n swiper.$el.find(`.${swiper.params.lazy.loadingClass}`).removeClass(swiper.params.lazy.loadingClass);\n });\n Object.assign(swiper.lazy, {\n load,\n loadInSlide\n });\n}","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n\n }\n });\n swiper.controller = {\n control: undefined\n };\n\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n\n return maxIndex;\n };\n }();\n\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n\n return this;\n } // xxx: for now i will just save one spline function to to\n\n\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n\n if (duration !== 0) {\n c.transitionStart();\n\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n\n c.transitionEnd();\n });\n }\n }\n\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\nexport default function A11y({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n\n function addElId($el, id) {\n $el.attr('id', id);\n }\n\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.each(bulletEl => {\n const $bulletEl = $(bulletEl);\n\n if (swiper.params.pagination.clickable) {\n makeElFocusable($bulletEl);\n\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n }\n }\n\n if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n $bulletEl.attr('aria-current', 'true');\n } else {\n $bulletEl.removeAttr('aria-current');\n }\n });\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n const handlePointerDown = () => {\n swiper.a11y.clicked = true;\n };\n\n const handlePointerUp = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n\n const handleFocus = e => {\n if (swiper.a11y.clicked) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n\n const initSlides = () => {\n const params = swiper.params.a11y;\n\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n\n if (params.slideRole) {\n addElRole($(swiper.slides), params.slideRole);\n }\n\n const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;\n\n if (params.slideLabelMessage) {\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n }\n };\n\n const init = () => {\n const params = swiper.params.a11y;\n swiper.$el.append(liveRegion); // Container\n\n const $containerEl = swiper.$el;\n\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n } // Wrapper\n\n\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live); // Slide\n\n initSlides(); // Navigation\n\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n } // Tab focus\n\n\n swiper.$el.on('focus', handleFocus, true);\n swiper.$el.on('pointerdown', handlePointerDown, true);\n swiper.$el.on('pointerup', handlePointerUp, true);\n };\n\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n } // Tab focus\n\n\n swiper.$el.off('focus', handleFocus, true);\n swiper.$el.off('pointerdown', handlePointerDown, true);\n swiper.$el.off('pointerup', handlePointerUp, true);\n }\n\n on('beforeInit', () => {\n liveRegion = $(`<span class=\"${swiper.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`);\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}","import { getWindow } from 'ssr-window';\nexport default function History({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n\n const currentState = window.history.state;\n\n if (currentState && currentState.value === value) {\n return;\n }\n\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n\n const destroy = () => {\n const window = getWindow();\n\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function HashNavigation({\n swiper,\n extendParams,\n emit,\n on\n}) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false\n }\n });\n\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '');\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n\n if (hash) {\n const speed = 0;\n\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay({\n swiper,\n extendParams,\n on,\n emit\n}) {\n let timeout;\n swiper.autoplay = {\n running: false,\n paused: false\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n\n function run() {\n if (!swiper.size) {\n swiper.autoplay.running = false;\n swiper.autoplay.paused = false;\n return;\n }\n\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n\n function onVisibilityChange() {\n const document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n\n if (swiper.autoplay.running) {\n stop();\n }\n\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop\n });\n}","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs\n\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\n const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}","import { now } from '../../shared/utils.js';\nexport default function freeMode({\n swiper,\n extendParams,\n emit,\n once\n}) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n\n function onTouchStart() {\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n\n function onTouchMove() {\n const {\n touchEventsData: data,\n touches\n } = swiper; // Velocity\n\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n\n function onTouchEnd({\n currentPos\n }) {\n const {\n params,\n $wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper; // Time diff\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n } // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n\n\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n\n newPosition = -newPosition;\n }\n\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n } // Fix duration\n\n\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}","export default function Grid({\n swiper,\n extendParams\n}) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = slidesLength => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const {\n slidesPerGroup,\n spaceBetween\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid; // Set slides order\n\n let newSlideOrderIndex;\n let column;\n let row;\n\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n\n slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : '');\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const {\n spaceBetween,\n centeredSlides,\n roundLengths\n } = swiper.params;\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`\n });\n\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize\n };\n}","export default function appendSlide(slides) {\n const swiper = this;\n const {\n $wrapperEl,\n params\n } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n}","export default function prependSlide(slides) {\n const swiper = this;\n const {\n params,\n $wrapperEl,\n activeIndex\n } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n let newActiveIndex = activeIndex + 1;\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n swiper.slideTo(newActiveIndex, 0, false);\n}","export default function addSlide(index, slides) {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n\n const baseLength = swiper.slides.length;\n\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n $wrapperEl,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n\n swiper.removeSlide(slidesIndexes);\n}","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\nexport default function Manipulation({\n swiper\n}) {\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}","export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows\n\n swiper.slides.each(slideEl => {\n const $slideEl = swiper.$(slideEl);\n $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove();\n }); // create new one\n\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden'\n });\n }\n\n return $slideEl;\n}","export default function effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides\n}) {\n const {\n slides,\n activeIndex,\n $wrapperEl\n } = swiper;\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);\n }\n\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFade({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.css({\n opacity: slideOpacity\n }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\nexport default function EffectCube({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n\n const createSlideShadows = ($slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n $slideEl.append(shadowBefore);\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n $slideEl.append(shadowAfter);\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n };\n\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.each(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows($(slideEl), progress, isHorizontal);\n });\n };\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n $wrapperEl.append($cubeShadowEl);\n }\n\n $cubeShadowEl.css({\n height: `${swiperWidth}px`\n });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n $el.append($cubeShadowEl);\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n\n $slideEl.transform(transform);\n\n if (params.slideShadows) {\n createSlideShadows($slideEl, progress, isHorizontal);\n }\n }\n\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n\n const setTransition = duration => {\n const {\n $el,\n slides\n } = swiper;\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}","import $ from './dom.js';\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`<div class=\"swiper-slide-shadow${side ? `-${side}` : ''}\"></div>`);\n $shadowContainer.append($shadowEl);\n }\n\n return $shadowEl;\n}","import $ from '../../shared/dom.js';\nimport createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFlip({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null\n }\n });\n\n const createSlideShadows = ($slideEl, progress, params) => {\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n };\n\n const recreateShadows = () => {\n // Set shadows\n const params = swiper.params.flipEffect;\n swiper.slides.each(slideEl => {\n const $slideEl = $(slideEl);\n let progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n\n createSlideShadows($slideEl, progress, params);\n });\n };\n\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n createSlideShadows($slideEl, progress, params);\n }\n\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nexport default function EffectCoverflow({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth; // Each slide offset from center\n\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCreative({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const {\n slides,\n $wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n } // set translate\n\n\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n }); // set rotates\n\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows\n\n if (custom && data.shadow || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({\n opacity: opacityString\n });\n\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCards({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n\n const setTranslate = () => {\n const {\n slides,\n activeIndex\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rotate : 0}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","/**\n * Swiper 8.4.7\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: January 30, 2023\n */\n\nimport Swiper from './core/core.js';\nexport { default as Swiper, default } from './core/core.js';\nimport Virtual from './modules/virtual/virtual.js';\nimport Keyboard from './modules/keyboard/keyboard.js';\nimport Mousewheel from './modules/mousewheel/mousewheel.js';\nimport Navigation from './modules/navigation/navigation.js';\nimport Pagination from './modules/pagination/pagination.js';\nimport Scrollbar from './modules/scrollbar/scrollbar.js';\nimport Parallax from './modules/parallax/parallax.js';\nimport Zoom from './modules/zoom/zoom.js';\nimport Lazy from './modules/lazy/lazy.js';\nimport Controller from './modules/controller/controller.js';\nimport A11y from './modules/a11y/a11y.js';\nimport History from './modules/history/history.js';\nimport HashNavigation from './modules/hash-navigation/hash-navigation.js';\nimport Autoplay from './modules/autoplay/autoplay.js';\nimport Thumbs from './modules/thumbs/thumbs.js';\nimport FreeMode from './modules/free-mode/free-mode.js';\nimport Grid from './modules/grid/grid.js';\nimport Manipulation from './modules/manipulation/manipulation.js';\nimport EffectFade from './modules/effect-fade/effect-fade.js';\nimport EffectCube from './modules/effect-cube/effect-cube.js';\nimport EffectFlip from './modules/effect-flip/effect-flip.js';\nimport EffectCoverflow from './modules/effect-coverflow/effect-coverflow.js';\nimport EffectCreative from './modules/effect-creative/effect-creative.js';\nimport EffectCards from './modules/effect-cards/effect-cards.js';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, Controller, A11y, History, HashNavigation, Autoplay, Thumbs, FreeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n","export const cityData = {\n 'zh-tw': {\n 臺北市: [\n ['中正區', '100'],\n ['大同區', '103'],\n ['中山區', '104'],\n ['松山區', '105'],\n ['大安區', '106'],\n ['萬華區', '108'],\n ['信義區', '110'],\n ['士林區', '111'],\n ['北投區', '112'],\n ['內湖區', '114'],\n ['南港區', '115'],\n ['文山區', '116'],\n ],\n 新北市: [\n ['萬里區', '207'],\n ['金山區', '208'],\n ['板橋區', '220'],\n ['汐止區', '221'],\n ['深坑區', '222'],\n ['石碇區', '223'],\n ['瑞芳區', '224'],\n ['平溪區', '226'],\n ['雙溪區', '227'],\n ['貢寮區', '228'],\n ['新店區', '231'],\n ['坪林區', '232'],\n ['烏來區', '233'],\n ['永和區', '234'],\n ['中和區', '235'],\n ['土城區', '236'],\n ['三峽區', '237'],\n ['樹林區', '238'],\n ['鶯歌區', '239'],\n ['三重區', '241'],\n ['新莊區', '242'],\n ['泰山區', '243'],\n ['林口區', '244'],\n ['蘆洲區', '247'],\n ['五股區', '248'],\n ['八里區', '249'],\n ['淡水區', '251'],\n ['三芝區', '252'],\n ['石門區', '253'],\n ],\n 基隆市: [\n ['仁愛區', '200'],\n ['信義區', '201'],\n ['中正區', '202'],\n ['中山區', '203'],\n ['安樂區', '204'],\n ['暖暖區', '205'],\n ['七堵區', '206'],\n ],\n 宜蘭縣: [\n ['宜蘭市', '260'],\n ['頭城鎮', '261'],\n ['礁溪鄉', '262'],\n ['壯圍鄉', '263'],\n ['員山鄉', '264'],\n ['羅東鎮', '265'],\n ['三星鄉', '266'],\n ['大同鄉', '267'],\n ['五結鄉', '268'],\n ['冬山鄉', '269'],\n ['蘇澳鎮', '270'],\n ['南澳鄉', '272'],\n ],\n 桃園市: [\n ['中壢區', '320'],\n ['平鎮區', '324'],\n ['龍潭區', '325'],\n ['楊梅區', '326'],\n ['新屋區', '327'],\n ['觀音區', '328'],\n ['桃園區', '330'],\n ['龜山區', '333'],\n ['八德區', '334'],\n ['大溪區', '335'],\n ['復興區', '336'],\n ['大園區', '337'],\n ['蘆竹區', '338'],\n ],\n 新竹市: [\n ['東區', '300'],\n ['北區', '301'],\n ['香山區', '309'],\n ],\n 新竹縣: [\n ['竹北市', '302'],\n ['湖口鄉', '303'],\n ['新豐鄉', '304'],\n ['新埔鎮', '305'],\n ['關西鎮', '306'],\n ['芎林鄉', '307'],\n ['寶山鄉', '308'],\n ['竹東鎮', '310'],\n ['五峰鄉', '311'],\n ['橫山鄉', '312'],\n ['尖石鄉', '313'],\n ['北埔鄉', '314'],\n ['峨嵋鄉', '315'],\n ],\n 苗栗縣: [\n ['竹南鎮', '350'],\n ['頭份鎮', '351'],\n ['三灣鄉', '352'],\n ['南庄鄉', '353'],\n ['獅潭鄉', '354'],\n ['後龍鎮', '356'],\n ['通霄鎮', '357'],\n ['苑裡鎮', '358'],\n ['苗栗市', '360'],\n ['造橋鄉', '361'],\n ['頭屋鄉', '362'],\n ['公館鄉', '363'],\n ['大湖鄉', '364'],\n ['泰安鄉', '365'],\n ['銅鑼鄉', '366'],\n ['三義鄉', '367'],\n ['西湖鄉', '368'],\n ['卓蘭鎮', '369'],\n ],\n 臺中市: [\n ['中區', '400'],\n ['東區', '401'],\n ['南區', '402'],\n ['西區', '403'],\n ['北區', '404'],\n ['北屯區', '406'],\n ['西屯區', '407'],\n ['南屯區', '408'],\n ['太平區', '411'],\n ['大里區', '412'],\n ['霧峰區', '413'],\n ['烏日區', '414'],\n ['豐原區', '420'],\n ['后里區', '421'],\n ['石岡區', '422'],\n ['東勢區', '423'],\n ['和平區', '424'],\n ['新社區', '426'],\n ['潭子區', '427'],\n ['大雅區', '428'],\n ['神岡區', '429'],\n ['大肚區', '432'],\n ['沙鹿區', '433'],\n ['龍井區', '434'],\n ['梧棲區', '435'],\n ['清水區', '436'],\n ['大甲區', '437'],\n ['外埔區', '438'],\n ['大安區', '439'],\n ],\n 彰化縣: [\n ['彰化市', '500'],\n ['芬園鄉', '502'],\n ['花壇鄉', '503'],\n ['秀水鄉', '504'],\n ['鹿港鎮', '505'],\n ['福興鄉', '506'],\n ['線西鄉', '507'],\n ['和美鎮', '508'],\n ['伸港鄉', '509'],\n ['員林鎮', '510'],\n ['社頭鄉', '511'],\n ['永靖鄉', '512'],\n ['埔心鄉', '513'],\n ['溪湖鎮', '514'],\n ['大村鄉', '515'],\n ['埔鹽鄉', '516'],\n ['田中鎮', '520'],\n ['北斗鎮', '521'],\n ['田尾鄉', '522'],\n ['埤頭鄉', '523'],\n ['溪州鄉', '524'],\n ['竹塘鄉', '525'],\n ['二林鎮', '526'],\n ['大城鄉', '527'],\n ['芳苑鄉', '528'],\n ['二水鄉', '530'],\n ],\n 南投縣: [\n ['南投市', '540'],\n ['中寮鄉', '541'],\n ['草屯鎮', '542'],\n ['國姓鄉', '544'],\n ['埔里鎮', '545'],\n ['仁愛鄉', '546'],\n ['名間鄉', '551'],\n ['集集鎮', '552'],\n ['水里鎮', '553'],\n ['魚池鄉', '555'],\n ['信義鄉', '556'],\n ['竹山鎮', '557'],\n ['鹿谷鄉', '558'],\n ],\n 雲林縣: [\n ['斗南鎮', '630'],\n ['大埤鄉', '631'],\n ['虎尾鎮', '632'],\n ['土庫鎮', '633'],\n ['褒忠鄉', '634'],\n ['東勢鄉', '635'],\n ['臺西鄉', '636'],\n ['崙背鄉', '637'],\n ['麥寮鄉', '638'],\n ['斗六市', '640'],\n ['林內鄉', '643'],\n ['古坑鄉', '646'],\n ['莿桐鄉', '647'],\n ['西螺鎮', '648'],\n ['二崙鄉', '649'],\n ['北港鎮', '651'],\n ['水林鄉', '652'],\n ['口湖鄉', '653'],\n ['四湖鄉', '654'],\n ['元長鄉', '655'],\n ],\n 嘉義市: [\n ['西區', '600'],\n ['東區', '601'],\n ],\n 嘉義縣: [\n ['番路鄉', '602'],\n ['梅山鄉', '603'],\n ['竹崎鄉', '604'],\n ['阿里山鄉', '605'],\n ['中埔鄉', '606'],\n ['大埔鄉', '607'],\n ['水上鄉', '608'],\n ['鹿草鄉', '611'],\n ['太保市', '612'],\n ['朴子市', '613'],\n ['東石鄉', '614'],\n ['六腳鄉', '615'],\n ['新港鄉', '616'],\n ['民雄鄉', '621'],\n ['大林鎮', '622'],\n ['溪口鄉', '623'],\n ['義竹鄉', '624'],\n ['布袋鎮', '625'],\n ],\n 臺南市: [\n ['中西區', '700'],\n ['東區', '701'],\n ['南區', '702'],\n ['北區', '704'],\n ['安平區', '708'],\n ['安南區', '709'],\n ['永康區', '710'],\n ['歸仁區', '711'],\n ['新化區', '712'],\n ['左鎮區', '713'],\n ['玉井區', '714'],\n ['楠西區', '715'],\n ['南化區', '716'],\n ['仁德區', '717'],\n ['關廟區', '718'],\n ['龍崎區', '719'],\n ['官田區', '720'],\n ['麻豆區', '721'],\n ['佳里區', '722'],\n ['西港區', '723'],\n ['七股區', '724'],\n ['將軍區', '725'],\n ['學甲區', '726'],\n ['北門區', '727'],\n ['新營區', '730'],\n ['後壁區', '731'],\n ['白河區', '732'],\n ['東山區', '733'],\n ['六甲區', '734'],\n ['下營區', '735'],\n ['柳營區', '736'],\n ['鹽水區', '737'],\n ['善化區', '741'],\n ['大內區', '742'],\n ['山上區', '743'],\n ['新市區', '744'],\n ['安定區', '745'],\n ],\n 高雄市: [\n ['新興區', '800'],\n ['前金區', '801'],\n ['苓雅區', '802'],\n ['鹽埕區', '803'],\n ['鼓山區', '804'],\n ['旗津區', '805'],\n ['前鎮區', '806'],\n ['三民區', '807'],\n ['楠梓區', '811'],\n ['小港區', '812'],\n ['左營區', '813'],\n ['仁武區', '814'],\n ['大社區', '815'],\n ['岡山區', '820'],\n ['路竹區', '821'],\n ['阿蓮區', '822'],\n ['田寮區', '823'],\n ['燕巢區', '824'],\n ['橋頭區', '825'],\n ['梓官區', '826'],\n ['彌陀區', '827'],\n ['永安區', '828'],\n ['湖內區', '829'],\n ['鳳山區', '830'],\n ['大寮區', '831'],\n ['林園區', '832'],\n ['鳥松區', '833'],\n ['大樹區', '840'],\n ['旗山區', '842'],\n ['美濃區', '843'],\n ['六龜區', '844'],\n ['內門區', '845'],\n ['杉林區', '846'],\n ['甲仙區', '847'],\n ['桃源區', '848'],\n ['那瑪夏區', '849'],\n ['茂林區', '851'],\n ['茄萣區', '852'],\n ],\n 屏東縣: [\n ['屏東市', '900'],\n ['三地鄉', '901'],\n ['霧臺鄉', '902'],\n ['瑪家鄉', '903'],\n ['九如鄉', '904'],\n ['里港鄉', '905'],\n ['高樹鄉', '906'],\n ['鹽埔鄉', '907'],\n ['長治鄉', '908'],\n ['麟洛鄉', '909'],\n ['竹田鄉', '911'],\n ['內埔鄉', '912'],\n ['萬丹鄉', '913'],\n ['潮州鎮', '920'],\n ['泰武鄉', '921'],\n ['來義鄉', '922'],\n ['萬巒鄉', '923'],\n ['崁頂鄉', '924'],\n ['新埤鄉', '925'],\n ['南州鄉', '926'],\n ['林邊鄉', '927'],\n ['東港鎮', '928'],\n ['琉球鄉', '929'],\n ['佳冬鄉', '931'],\n ['新園鄉', '932'],\n ['枋寮鄉', '940'],\n ['枋山鄉', '941'],\n ['春日鄉', '942'],\n ['獅子鄉', '943'],\n ['車城鄉', '944'],\n ['牡丹鄉', '945'],\n ['恒春鎮', '946'],\n ['滿州鄉', '947'],\n ],\n 花蓮縣: [\n ['花蓮市', '970'],\n ['新城鄉', '971'],\n ['秀林鄉', '972'],\n ['吉安鄉', '973'],\n ['壽豐鄉', '974'],\n ['鳳林鎮', '975'],\n ['光復鄉', '976'],\n ['豐濱鄉', '977'],\n ['瑞穗鄉', '978'],\n ['萬榮鄉', '979'],\n ['玉里鎮', '981'],\n ['卓溪鄉', '982'],\n ['富里鄉', '983'],\n ],\n 臺東縣: [\n ['臺東市', '950'],\n ['綠島鄉', '951'],\n ['蘭嶼鄉', '952'],\n ['延平鄉', '953'],\n ['卑南鄉', '954'],\n ['鹿野鄉', '955'],\n ['關山鎮', '956'],\n ['海端鄉', '957'],\n ['池上鄉', '958'],\n ['東河鄉', '959'],\n ['成功鄉', '961'],\n ['長濱鄉', '962'],\n ['太麻里鄉', '963'],\n ['金峰鄉', '964'],\n ['大武鄉', '965'],\n ['達仁鄉', '966'],\n ],\n 澎湖縣: [\n ['馬公市', '880'],\n ['西嶼鄉', '881'],\n ['望安鄉', '882'],\n ['七美鄉', '883'],\n ['白沙鄉', '884'],\n ['湖西鄉', '885'],\n ],\n 金門縣: [\n ['金沙鎮', '890'],\n ['金湖鎮', '891'],\n ['金寧鄉', '892'],\n ['金城鎮', '893'],\n ['烈嶼鄉', '894'],\n ['烏坵鄉', '896'],\n ],\n 連江縣: [\n ['南竿鄉', '209'],\n ['北竿鄉', '210'],\n ['莒光鄉', '211'],\n ['東引鄉', '212'],\n ],\n },\n en: {\n 'Taipei City': [\n ['Zhongzheng Dist', '100'],\n ['Datong Dist', '103'],\n ['Zhongshan Dist', '104'],\n ['Songshan Dist', '105'],\n [\"Da'an Dist\", '106'],\n ['Wanhua Dist', '108'],\n ['Xinyi Dist', '110'],\n ['Shilin Dist', '111'],\n ['Beitou Dist', '112'],\n ['Neihu Dist', '114'],\n ['Nangang Dist', '115'],\n ['Wenshan Dist', '116'],\n ],\n 'New Taipei City': [\n ['Wanli Dist', '207'],\n ['Jinshan Dist', '208'],\n ['Banqiao Dist', '220'],\n ['Xizhi Dist', '221'],\n ['Shenkeng Dist', '222'],\n ['Shiding Dist', '223'],\n ['Ruifang Dist', '224'],\n ['Pingxi Dist', '226'],\n ['Shuangxi Dist', '227'],\n ['Gongliao Dist', '228'],\n ['Xindian Dist', '231'],\n ['Pinglin Dist', '232'],\n ['Wulai Dist', '233'],\n ['Yonghe Dist', '234'],\n ['Zhonghe Dist', '235'],\n ['Tucheng Dist', '236'],\n ['Sanxia Dist', '237'],\n ['Shulin Dist', '238'],\n ['Yingge Dist', '239'],\n ['Sanchong Dist', '241'],\n ['Xinzhuang Dist', '242'],\n ['Taishan Dist', '243'],\n ['Linkou Dist', '244'],\n ['Luzhou Dist', '247'],\n ['Wugu Dist', '248'],\n ['Bali Dist', '249'],\n ['Tamsui Dist', '251'],\n ['Sanzhi Dist', '252'],\n ['Shimen Dist', '253'],\n ],\n 'Keelung City': [\n [\"Ren'ai Dist\", '200'],\n ['Xinyi Dist', '201'],\n ['Zhongzheng Dist', '202'],\n ['Zhongshan Dist', '203'],\n ['Anle Dist', '204'],\n ['Nuannuan Dist', '205'],\n ['Qidu Dist', '206'],\n ],\n 'Yilan County': [\n ['Yilan City', '260'],\n ['Toucheng Township', '261'],\n ['Jiaoxi Township', '262'],\n ['Zhuangwei Township', '263'],\n ['Yuanshan Township', '264'],\n ['Luodong Township', '265'],\n ['Sanxing Township', '266'],\n ['Datong Township', '267'],\n ['Wujie Township', '268'],\n ['Dongshan Township', '269'],\n [\"Su'ao Township\", '270'],\n ['0', '272'],\n ],\n 'Taoyuan City': [\n ['Zhongli Dist', '320'],\n ['Pingzhen Dist', '324'],\n ['Longtan Dist', '325'],\n ['Yangmei Dist', '326'],\n ['Xinwu Dist', '327'],\n ['Guanyin Dist', '328'],\n ['Taoyuan Dist', '330'],\n ['Guishan Dist', '333'],\n ['Bade Dist', '334'],\n ['Daxi Dist', '335'],\n ['Fuxing Dist', '336'],\n ['Dayuan Dist', '337'],\n ['Luzhu Dist', '338'],\n ],\n 'Taoyuan City': [\n ['Xiangshan Dist', '300'],\n ['0', '301'],\n ['0', '309'],\n ],\n 'Hsinchu County': [\n ['Zhubei City', '302'],\n ['Hukou Township', '303'],\n ['Xinfeng Township', '304'],\n ['Xinpu Township', '305'],\n ['Guanxi Township', '306'],\n ['Qionglin Township', '307'],\n ['Baoshan Township', '308'],\n ['Zhudong Township', '310'],\n ['Wufeng Township', '311'],\n ['Hengshan Township', '312'],\n ['Jianshi Township', '313'],\n ['Beipu Township', '314'],\n ['Emei Township', '315'],\n ],\n 'Miaoli County': [\n ['Zhunan Township', '350'],\n ['Toufen City', '351'],\n ['Sanwan Township', '352'],\n ['Nanzhuang Township', '353'],\n ['Shitan Township', '354'],\n ['Houlong Township', '356'],\n ['Tongxiao Township', '357'],\n ['Yuanli Township', '358'],\n ['Miaoli City', '360'],\n ['Zaoqiao Township', '361'],\n ['Touwu Township', '362'],\n ['Gongguan Township', '363'],\n ['Dahu Township', '364'],\n [\"Tai'an Township\", '365'],\n ['Tongluo Township', '366'],\n ['Sanyi Township', '367'],\n ['Xihu Township', '368'],\n ['Zhuolan Township', '369'],\n ],\n 'Taichung City': [\n ['Central Dist', '400'],\n ['East Dist', '401'],\n ['South Dist', '402'],\n ['West Dist', '403'],\n ['North Dist', '404'],\n ['Beitun Dist', '406'],\n ['Xitun Dist', '407'],\n ['Nantun Dist', '408'],\n ['Taiping Dist', '411'],\n ['Dali Dist', '412'],\n ['Wufeng Dist', '413'],\n ['Wuri Dist', '414'],\n ['Fengyuan Dist', '420'],\n ['Houli Dist', '421'],\n ['Shigang Dist', '422'],\n ['Dongshi Dist', '423'],\n ['Heping Dist', '424'],\n ['Xinshe Dist', '426'],\n ['Tanzi Dist', '427'],\n ['Daya Dist', '428'],\n ['Shengang Dist', '429'],\n ['Dadu Dist', '432'],\n ['Shalu Dist', '433'],\n ['Longjing Dist', '434'],\n ['Wuqi Dist', '435'],\n ['Qingshui Dist', '436'],\n ['Dajia Dist', '437'],\n ['Waipu Dist', '438'],\n [\"Da'an Dist\", '439'],\n ],\n 'Changhua County': [\n ['Changhua City', '500'],\n ['Fenyuan Township', '502'],\n ['Huatan Township', '503'],\n ['Xiushui Township', '504'],\n ['Lukang Township', '505'],\n ['Fuxing Township', '506'],\n ['Xianxi Township', '507'],\n ['Hemei Township', '508'],\n ['Shengang Township', '509'],\n ['Yuanlin City', '510'],\n ['Shetou Township', '511'],\n ['Yongjing Township', '512'],\n ['Puxin Township', '513'],\n ['Xihu Township', '514'],\n ['Dacun Township', '515'],\n ['Puyan Township', '516'],\n ['Tianzhong Township', '520'],\n ['Beidou Township', '521'],\n ['Tianwei Township', '522'],\n ['Pitou Township', '523'],\n ['Xizhou Township', '524'],\n ['Zhutang Township', '525'],\n ['Erlin Township', '526'],\n ['Dacheng Township', '527'],\n ['Fangyuan Township', '528'],\n ['Ershui Township', '530'],\n ],\n 'Nantou County': [\n ['Nantou City', '540'],\n ['Zhongliao Township', '541'],\n ['Caotun Township', '542'],\n ['Guoxing Township', '544'],\n ['Puli Township', '545'],\n [\"Ren'ai Township\", '546'],\n ['Mingjian Township', '551'],\n ['Jiji Township', '552'],\n ['Shuili Township', '553'],\n ['Yuchi Township', '555'],\n ['Xinyi Township', '556'],\n ['Zhushan Township', '557'],\n ['Lugu Township', '558'],\n ],\n 'Yunlin County': [\n ['Dounan Township', '630'],\n ['Dapi Township', '631'],\n ['Huwei Township', '632'],\n ['Tuku Township', '633'],\n ['Baozhong Township', '634'],\n ['Dongshi Township', '635'],\n ['Taixi Township', '636'],\n ['Lunbei Township', '637'],\n ['Mailiao Township', '638'],\n ['Douliu City', '640'],\n ['Linnei Township', '643'],\n ['Gukeng Township', '646'],\n ['Citong Township', '647'],\n ['Xiluo Township', '648'],\n ['Erlun Township', '649'],\n ['Beigang Township', '651'],\n ['Shuilin Township', '652'],\n ['Kouhu Township', '653'],\n ['Sihu Township', '654'],\n ['Yuanzhang Township', '655'],\n ],\n 'Chiayi City': [\n ['West Dist', '600'],\n ['0', '601'],\n ],\n 'Chiayi County': [\n ['Fanlu Township', '602'],\n ['Meishan Township', '603'],\n ['Zhuqi Township', '604'],\n ['Alishan Township', '605'],\n ['Zhongpu Township', '606'],\n ['Dapu Township', '607'],\n ['Shuishang Township', '608'],\n ['Lucao Township', '611'],\n ['Taibao City', '612'],\n ['Puzi City', '613'],\n ['Dongshi Township', '614'],\n ['Liujiao Township', '615'],\n ['Xingang Township', '616'],\n ['Minxiong Township', '621'],\n ['Dalin Township', '622'],\n ['Xikou Township', '623'],\n ['Yizhu Township', '624'],\n ['Budai Township', '625'],\n ],\n 'Tainan City': [\n ['West Central Dist', '700'],\n ['East Dist', '701'],\n ['South Dist', '702'],\n ['North Dist', '704'],\n ['Anping Dist', '708'],\n ['Annan Dist', '709'],\n ['Yongkang Dist', '710'],\n ['Guiren Dist', '711'],\n ['Xinhua Dist', '712'],\n ['Zuozhen Dist', '713'],\n ['Yujing Dist', '714'],\n ['Nanxi Dist', '715'],\n ['Nanhua Dist', '716'],\n ['Rende Dist', '717'],\n ['Guanmiao Dist', '718'],\n ['Longqi Dist', '719'],\n ['Guantian Dist', '720'],\n ['Madou Dist', '721'],\n ['Jiali Dist', '722'],\n ['Xigang Dist', '723'],\n ['Qigu Dist', '724'],\n ['Jiangjun Dist', '725'],\n ['Xuejia Dist', '726'],\n ['Beimen Dist', '727'],\n ['Xinying Dist', '730'],\n ['Houbi Dist', '731'],\n ['Baihe Dist', '732'],\n ['Dongshan Dist', '733'],\n ['Liujia Dist', '734'],\n ['Xiaying Dist', '735'],\n ['Liuying Dist', '736'],\n ['Yanshui Dist', '737'],\n ['Shanhua Dist', '741'],\n ['Danei Dist', '742'],\n ['Shanshang Dist', '743'],\n ['Xinshi Dist', '744'],\n ['Anding Dist', '745'],\n ],\n 'Kaohsiung City': [\n ['Xinxing Dist', '800'],\n ['Qianjin Dist', '801'],\n ['Lingya Dist', '802'],\n ['Yancheng Dist', '803'],\n ['Gushan Dist', '804'],\n ['Qijin Dist', '805'],\n ['Qianzhen Dist', '806'],\n ['Sanmin Dist', '807'],\n ['Nanzi Dist', '811'],\n ['Xiaogang Dist', '812'],\n ['Zuoying Dist', '813'],\n ['Renwu Dist', '814'],\n ['Dashe Dist', '815'],\n ['Gangshan Dist', '820'],\n ['Luzhu Dist', '821'],\n ['Alian Dist', '822'],\n ['Tianliao Dist', '823'],\n ['Yanchao Dist', '824'],\n ['Qiaotou Dist', '825'],\n ['Ziguan Dist', '826'],\n ['Mituo Dist', '827'],\n [\"Yong'an Dist\", '828'],\n ['Hunei Dist', '829'],\n ['Fengshan Dist', '830'],\n ['Daliao Dist', '831'],\n ['Linyuan Dist', '832'],\n ['Niaosong Dist', '833'],\n ['Dashu Dist', '840'],\n ['Qishan Dist', '842'],\n ['Meinong Dist', '843'],\n ['Liugui Dist', '844'],\n ['Neimen Dist', '845'],\n ['Shanlin Dist', '846'],\n ['Jiaxian Dist', '847'],\n ['Taoyuan Dist', '848'],\n ['Namaxia Dist', '849'],\n ['Maolin Dist', '851'],\n ['Qieding Dist', '852'],\n ],\n 'Pingtung County': [\n ['Pingtung City', '900'],\n ['Sandimen Township', '901'],\n ['Wutai Township', '902'],\n ['Majia Township', '903'],\n ['Jiuru Township', '904'],\n ['Ligang Township', '905'],\n ['Gaoshu Township', '906'],\n ['Yanpu Township', '907'],\n ['Changzhi Township', '908'],\n ['Linluo Township', '909'],\n ['Zhutian Township', '911'],\n ['Neipu Township', '912'],\n ['Wandan Township', '913'],\n ['Chaozhou Township', '920'],\n ['Taiwu Township', '921'],\n ['Laiyi Township', '922'],\n ['Wanluan Township', '923'],\n ['Kanding Township', '924'],\n ['Xinpi Township', '925'],\n ['Nanzhou Township', '926'],\n ['Linbian Township', '927'],\n ['Donggang Township', '928'],\n ['Liuqiu Township', '929'],\n ['Jiadong Township', '931'],\n ['Xinyuan Township', '932'],\n ['Fangliao Township', '940'],\n ['Fangshan Township', '941'],\n ['Chunri Township', '942'],\n ['Shizi Township', '943'],\n ['Checheng Township', '944'],\n ['Mudan Township', '945'],\n ['Hengchun Township', '946'],\n ['Manzhou Township', '947'],\n ],\n 'Hualien County': [\n ['Hualien City', '970'],\n ['Xincheng Township', '971'],\n ['Xiulin Township', '972'],\n [\"Ji'an Township\", '973'],\n ['Shoufeng Township', '974'],\n ['Fenglin Township', '975'],\n ['Guangfu Township', '976'],\n ['Fengbin Township', '977'],\n ['Ruisui Township', '978'],\n ['Wanrong Township', '979'],\n ['Yuli Township', '981'],\n ['Zhuoxi Township', '982'],\n ['Fuli Township', '983'],\n ],\n 'Taitung County': [\n ['Taitung City', '950'],\n ['Ludao Township', '951'],\n ['Lanyu Township', '952'],\n ['Yanping Township', '953'],\n ['Beinan Township', '954'],\n ['Luye Township', '955'],\n ['Guanshan Township', '956'],\n ['Haiduan Township', '957'],\n ['Chishang Township', '958'],\n ['Donghe Township', '959'],\n ['Chenggong Township', '961'],\n ['Changbin Township', '962'],\n ['Taimali Township', '963'],\n ['Jinfeng Township', '964'],\n ['Dawu Township', '965'],\n ['Daren Township', '966'],\n ],\n 'Penghu County': [\n ['Magong City', '880'],\n ['Xiyu Township', '881'],\n [\"Wang'an Township\", '882'],\n ['Qimei Township', '883'],\n ['Baisha Township', '884'],\n ['Huxi Township', '885'],\n ],\n 'Kinmen County': [\n ['Jinsha Township', '890'],\n ['Jinhu Township', '891'],\n ['Jinning Township', '892'],\n ['Jincheng Township', '893'],\n ['Lieyu Township', '894'],\n ['Wuqiu Township', '896'],\n ],\n 'Lienchiang County': [\n ['Nangan Township', '209'],\n ['Beigan Township', '210'],\n ['Juguang Township', '211'],\n ['Dongyin Township', '212'],\n ],\n },\n};\n","import fesdDB from '../../fesdDB.js';\nimport SHARED from '../shared/shared';\nimport { isElementExist, getElement, getAllElements, insert, warn } from '../shared/utils.js';\nimport { OverlayScrollbars } from 'overlayscrollbars';\n// 縣市資料\nimport { cityData } from './cityData.js';\n\n('use strict');\n\n// create template method\nconst createTemplate = d4 => {\n const { TEMPLATE } = fesdDB.dropdown4;\n const { childDom } = d4.s;\n const container = document.createElement('div');\n const filter = d4.classList.contains('filter');\n const filterPlaceholder = d4.getAttribute('filter-placeholder');\n container.innerHTML = TEMPLATE(filter, filterPlaceholder);\n const content = container.querySelector('.dropdown-list');\n [...childDom].forEach(child => {\n if (child.tagName === 'LI') {\n if (child.classList.contains('has-sublayer')) {\n const subOptions = child.querySelectorAll('li');\n [...subOptions].forEach(subOption => {\n if (!subOption.hasAttribute('data-option') || subOption.getAttribute('data-option').trim() === '') {\n subOption.setAttribute('data-option', subOption.textContent.trim());\n }\n });\n } else {\n if (!child.hasAttribute('data-option') || child.getAttribute('data-option').trim() === '') {\n child.setAttribute('data-option', child.textContent.trim());\n }\n }\n }\n content.append(child);\n });\n\n return container.children[0];\n};\n\n/**\n * 判斷是否有設定連動\n * @param {object} d4 d4 Element\n */\nconst detectSync = d4 => {\n const controlElements = d4.getAttribute('control-elements')?.split(',');\n if (controlElements) {\n controlElements.forEach(el => {\n const disabledEl = document.querySelector(el);\n if (!disabledEl) {\n warn('dropdown', `Can't not find control element(${el})`);\n }\n if (disabledEl && disabledEl.classList.contains('disabled')) {\n disabledEl.classList.remove('disabled');\n if (disabledEl.tagName === 'DROPDOWN-EL' && disabledEl.s.activeLi) {\n setSelectDisplay(disabledEl, [...disabledEl.s.allLi].indexOf(disabledEl.s.activeLi));\n }\n }\n });\n }\n};\n\n/**\n * 顯示選擇的選項\n * @param {object} d4 d4 Element\n * @param {number} valueIndex 被選擇的選項索引值\n * @returns\n */\nconst setSelectDisplay = (d4, valueIndex) => {\n const placeholder = d4.getAttribute('d4-placeholder');\n const allLi = d4.querySelectorAll('.dropdown-list li');\n if (valueIndex < 0 || valueIndex.length === 0) {\n // 恢復空值狀態\n allLi.forEach(el => {\n el.classList.remove('active');\n });\n d4.s.activeLi = undefined;\n // 判斷單選或複選\n switch (d4.s.selectType) {\n case 'single':\n d4.s.value = {\n index: -1,\n id: undefined,\n el: undefined,\n };\n break;\n case 'multiple':\n d4.s.value = [];\n break;\n }\n\n d4.s.selectDisplayEl.textContent = placeholder.trim();\n d4.setAttribute('d4-value', '');\n } else {\n if (d4.classList.contains('disabled')) {\n d4.s.selectDisplayEl.textContent = placeholder.trim();\n return;\n }\n // 判斷單選或複選\n switch (d4.s.selectType) {\n case 'single':\n const option = allLi[valueIndex].textContent.trim();\n d4.s.allLi.forEach(el => {\n el.classList.remove('active');\n });\n allLi[valueIndex].classList.add('active');\n d4.s.selectDisplayEl.textContent = option;\n d4.s.activeLi = allLi[valueIndex];\n d4.s.value = {\n index: valueIndex,\n id: allLi[valueIndex].getAttribute('data-option'),\n el: allLi[valueIndex],\n };\n break;\n case 'multiple':\n if (Array.isArray(valueIndex)) {\n d4.s.allLi.forEach(li => {\n if (valueIndex.indexOf([...d4.s.allLi].indexOf(li)) >= 0) {\n li.classList.add('active');\n } else {\n li.classList.remove('active');\n }\n });\n }\n const activeLi = d4.querySelectorAll('.dropdown-list li.active');\n if (activeLi.length <= 0) {\n d4.s.selectDisplayEl.textContent = placeholder.trim();\n } else {\n d4.s.selectDisplayEl.textContent = '';\n activeLi.forEach(li => {\n const id = li.getAttribute('data-option');\n const option = li.textContent.trim();\n const tagEl = `<div class=\"option-btn\" data-option=\"${id}\"><div class=\"text\">${option}</div><div class=\"remove-icon\"></div></div>`;\n d4.s.selectDisplayEl.insertAdjacentHTML(insert.append, tagEl);\n });\n }\n d4.s.activeLi = activeLi;\n d4.s.value = [...activeLi].map(option => {\n const obj = {\n index: [...allLi].indexOf(option),\n id: option.getAttribute('data-option'),\n el: option,\n };\n return obj;\n });\n const valueArray = [...activeLi].map(option => option.getAttribute('data-option'));\n d4.setAttribute('d4-value', valueArray.join());\n break;\n }\n }\n};\n\n/**\n * 載入台灣縣市資料\n * @param {*} d4 d4 Element\n */\nconst loadCityData = d4 => {\n const lang = d4.s.cityLang;\n // 塞入縣市資料\n if (d4.classList.contains('city')) {\n d4.s.dropdownEl.querySelector('.dropdown-list').innerHTML = '';\n Object.keys(cityData[lang]).forEach(city => {\n const li = document.createElement('li');\n li.textContent = city;\n li.setAttribute('data-option', city);\n d4.s.dropdownEl.querySelector('.dropdown-list').append(li);\n });\n d4.s.allLi = d4.querySelectorAll('.dropdown-list li');\n }\n};\n\n/**\n * 載入對應地區資料\n */\nconst loadDistData = (d4, city) => {\n const lang = d4.s.cityLang;\n // 塞入地區資料\n cityData[lang][city].forEach((dist, index) => {\n const li = document.createElement('li');\n li.textContent = dist[0];\n li.setAttribute('data-option', dist[0]);\n d4.querySelector('.dropdown-list').append(li);\n });\n};\n\n/**\n * 關閉全部下拉選單\n */\nconst closeAllDropdown = () => {\n const allDropdown = getAllElements('dropdown-el[d4-status=\"open\"]');\n allDropdown.forEach(el => {\n el.close();\n });\n};\n\n/**\n * 設定卷軸樣式\n */\nconst settingScrollbarStyle = () => {\n const { SETTINGS } = fesdDB.dropdown4;\n const setProperty = (element, obj) => {\n Object.keys(obj).forEach(key => {\n element.style.setProperty(`--${key}`, obj[key]);\n });\n };\n setProperty(document.documentElement, SETTINGS.scrollbar);\n};\n\nsettingScrollbarStyle();\n// 點擊空白處關閉下拉選單\ndocument.addEventListener('click', function () {\n closeAllDropdown();\n});\n\n// 創建 Custom Element\nclass Dropdown4 extends HTMLElement {\n constructor() {\n super();\n this.initialize = false;\n }\n static get observedAttributes() {\n return ['d4-status', 'd4-placeholder', 'd4-value'];\n }\n attributeChangedCallback(attr, oldVal, newVal) {\n const d4 = this;\n switch (attr) {\n case 'd4-status':\n if (oldVal === null || oldVal === newVal) return;\n if (newVal === 'open' || newVal === 'close') {\n d4.emit(newVal);\n }\n break;\n case 'd4-value':\n if (oldVal === null || oldVal === newVal) return;\n if (newVal !== '') {\n const selectType = d4.hasAttribute('multiple') ? 'multiple' : 'single';\n switch (selectType) {\n case 'single':\n const li = d4.querySelector(`.dropdown-list li[data-option=\"${newVal}\"]`);\n if (isElementExist(li)) {\n setSelectDisplay(d4, [...d4.s.allLi].indexOf(li));\n } else {\n setSelectDisplay(d4, -1);\n }\n break;\n case 'multiple':\n const valueLiArray = [];\n d4.querySelector(`.dropdown-list li`).classList.remove('active');\n newVal.split(',').forEach(option => {\n const li = d4.querySelector(`.dropdown-list li[data-option=\"${option}\"]`);\n if (isElementExist(li)) {\n li.classList.add('active');\n valueLiArray.push(li);\n }\n });\n const valueIndexArray = valueLiArray.map(li => [...d4.s.allLi].indexOf(li));\n setSelectDisplay(d4, valueIndexArray);\n break;\n }\n } else {\n setSelectDisplay(d4, -1);\n }\n d4.emit('change');\n break;\n case 'd4-placeholder':\n if (oldVal === null) return;\n if (oldVal !== newVal && d4.s.value.index < 0) {\n setSelectDisplay(d4, d4.s.value.index);\n }\n break;\n }\n }\n connectedCallback() {\n const d4 = this;\n if (d4.initialize || d4.classList.contains('d4-initialize')) return;\n d4.initialize = true;\n this.#create();\n }\n #create() {\n this.s = {};\n this.__events__ = {};\n\n if (!this.hasAttribute('d4-status')) {\n this.setAttribute('d4-status', 'close');\n }\n if (!this.hasAttribute('d4-value')) {\n this.setAttribute('d4-value', '');\n }\n this.#mount();\n }\n #mount() {\n this.s.childDom = this.childNodes;\n this.s.template = createTemplate(this);\n this.innerHTML = '';\n this.append(this.s.template);\n this.#init();\n }\n #init() {\n const d4 = this;\n d4.s.allLi = d4.querySelectorAll('.dropdown-list li');\n d4.s.selectDisplayEl = d4.querySelector('.select-display');\n d4.s.dropdownEl = d4.querySelector('.dropdown');\n d4.s.selectType = d4.hasAttribute('multiple') ? 'multiple' : 'single';\n d4.s.cityLang = d4.hasAttribute('city-lang') ? d4.getAttribute('city-lang') : 'zh-tw';\n loadCityData(d4);\n d4.s.subDropdownTotalH = 0;\n const value = d4.getAttribute('d4-value');\n switch (d4.s.selectType) {\n case 'single':\n let valueLi;\n // 如果是地區下拉選單\n if (d4.classList.contains('dist')) {\n const cityDropdown = document.querySelector(`dropdown-el[dist-select=\"${d4.id}\"]`);\n //判斷縣市下拉選單是否有值\n const cityDropdownHasVal = cityDropdown ? cityDropdown.getAttribute('d4-value') !== '' : false;\n if (cityDropdown && cityDropdownHasVal) {\n const city = cityDropdown.getAttribute('d4-value');\n loadDistData(d4, city);\n d4.s.allLi = d4.querySelectorAll('.dropdown-list li');\n d4.classList.remove('disabled');\n if (d4.getAttribute('d4-value') !== '') {\n const dist = value.split(',')[1];\n valueLi = d4.querySelector(`.dropdown-list li[data-option=\"${dist}\"]`);\n d4.setAttribute('d4-value', dist);\n }\n }\n } else {\n valueLi = d4.querySelector(`.dropdown-list li[data-option=\"${value}\"]`);\n }\n if (isElementExist(valueLi)) {\n valueLi.classList.add('active');\n d4.s.activeLi = valueLi;\n d4.s.value = {\n index: [...d4.s.allLi].indexOf(valueLi),\n id: value,\n el: valueLi,\n };\n } else {\n d4.s.activeLi = undefined;\n d4.s.value = {\n index: -1,\n id: undefined,\n el: undefined,\n };\n }\n break;\n case 'multiple':\n const valueLiArray = [];\n value.split(',').forEach(option => {\n const li = d4.querySelector(`.dropdown-list li[data-option=\"${option}\"]`);\n if (isElementExist(li)) {\n valueLiArray.push(li);\n }\n });\n if (valueLiArray.length > 0) {\n d4.s.value = {\n index: valueLiArray.map(li => [...d4.s.allLi].indexOf(li)),\n id: valueLiArray.map(li => li.getAttribute('data-option')),\n el: valueLiArray.map(li => li),\n };\n } else {\n d4.s.value = {\n index: [],\n id: undefined,\n el: undefined,\n };\n }\n break;\n }\n setSelectDisplay(d4, d4.s.value.index);\n d4.#event();\n d4.classList.add('d4-initialize');\n }\n #event() {\n const d4 = this;\n // 下拉選單開關\n d4.__events__.dropdownToggle = () => {\n d4.addEventListener('click', function (e) {\n e.stopPropagation();\n const status = d4.getAttribute('d4-status');\n switch (status) {\n case 'open':\n d4.close();\n break;\n case 'close':\n d4.open();\n break;\n }\n });\n };\n\n // 下拉選單完成過渡\n d4.__events__.transitionend = () => {\n function toggleTransitionend(event) {\n if (event.target === this) {\n const dropdownStatus = d4.getAttribute('d4-status');\n const hasFilter = d4.classList.contains('filter');\n switch (dropdownStatus) {\n case 'open':\n const scroller = d4.querySelector('.dropdown-scroller');\n // 捲動到 active 的選項\n const scrollToActive = () => {\n if (d4.__scroller__) {\n const { viewport } = d4.__scroller__.elements();\n if (isElementExist(d4.s.activeLi)) {\n const halfActiveLiHeight = d4.s.activeLi.clientHeight / 2;\n const offsetTop = d4.s.activeLi.offsetTop;\n const scroll = offsetTop - scroller.clientHeight / 2 + halfActiveLiHeight > 0 ? offsetTop - scroller.clientHeight / 2 + halfActiveLiHeight : 0;\n viewport.scrollTo({\n top: scroll,\n behavior: 'smooth',\n });\n } else {\n viewport.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n }\n }\n };\n if (hasFilter) {\n d4.querySelector('.filter-bar input').disabled = false;\n d4.querySelector('.filter-bar input').focus();\n }\n if (d4.s.selectType === 'single') {\n scrollToActive();\n }\n break;\n case 'close':\n d4.__scroller__.update(true);\n d4.s.dropdownEl.removeAttribute('style');\n if (hasFilter) d4.querySelector('.filter-bar input').disabled = true;\n break;\n }\n }\n }\n d4.s.dropdownEl.addEventListener('transitionend', toggleTransitionend);\n };\n\n // 綁定卷軸\n d4.__events__.bindScrollbar = (d4 = this) => {\n const scroller = d4.querySelector('.dropdown-scroller');\n // 綁定卷軸套件\n d4.__scroller__ = OverlayScrollbars(scroller, {\n overflowBehavior: {\n x: 'hidden',\n },\n });\n };\n\n // 顯示選的選項\n d4.__events__.selectOption = (d4 = this) => {\n let computedHeight, totalHeight;\n const scroller = d4.querySelector('.dropdown-scroller');\n const citySelect = d4.classList.contains('city');\n d4.s.allLi = d4.querySelectorAll('.dropdown-list li');\n d4.s.allLi.forEach(option => {\n option.addEventListener('click', function (e) {\n const clickOption = this;\n const clickIndex = [...d4.s.allLi].indexOf(clickOption);\n // 子下拉選單打開前的總高度\n const defaultHeight = parseInt(d4.getAttribute('d4-default-height'));\n // 有子層選單\n if (clickOption.classList.contains('has-sublayer')) {\n e.stopPropagation();\n const subDropdown = clickOption.querySelector('.sub-dropdown');\n const subDropdownList = subDropdown.querySelector('.sub-dropdown-list');\n const subDropdownListMargin = parseInt(getComputedStyle(subDropdownList).marginTop) + parseInt(getComputedStyle(subDropdownList).marginBottom);\n subDropdown.style.cssText = `--height: ${subDropdownList.offsetHeight + subDropdownListMargin}px`;\n // 子下拉選單高度\n const subDropdownH = parseInt(subDropdown.style.cssText.replace('--height:', '').trim());\n // 最大高度\n const maxHeight = parseInt(getComputedStyle(scroller).maxHeight);\n const recalculate = () => {\n // 重新計算整個下拉選單的高度\n computedHeight = defaultHeight + d4.s.subDropdownTotalH;\n totalHeight = computedHeight > maxHeight ? maxHeight : computedHeight;\n d4.style.cssText = `--maxHeight: ${totalHeight}px;`;\n d4.s.dropdownEl.style.height = `${totalHeight}px`;\n };\n if (!clickOption.classList.contains('open')) {\n // 子層下拉選單打開\n clickOption.classList.add('open');\n d4.s.subDropdownTotalH += subDropdownH;\n recalculate();\n } else {\n // 子層下拉選單關閉\n clickOption.classList.remove('open');\n d4.s.subDropdownTotalH -= subDropdownH;\n recalculate();\n }\n const collapse = () => {\n d4.__scroller__.update(true);\n subDropdown.removeEventListener('transitionend', collapse);\n };\n subDropdown.addEventListener('transitionend', collapse);\n }\n // 沒有子層選單\n else {\n detectSync(d4);\n // 判斷單選或複選\n switch (d4.s.selectType) {\n // 單選\n case 'single':\n d4.setAttribute('d4-value', clickOption.getAttribute('data-option'));\n // 選擇縣市\n if (citySelect) {\n const lang = d4.s.cityLang;\n const city = option.textContent.trim();\n const distSelectEl = document.getElementById(d4.getAttribute('dist-select'));\n if (distSelectEl) {\n distSelectEl.querySelector('.dropdown-list').textContent = '';\n setSelectDisplay(distSelectEl, -1);\n cityData[lang][city].forEach((dist, index) => {\n const li = document.createElement('li');\n li.textContent = dist[0];\n li.setAttribute('data-option', dist[0]);\n distSelectEl.querySelector('.dropdown-list').append(li);\n });\n d4.__events__.selectOption(distSelectEl);\n }\n }\n if (clickOption.parentNode.closest('li')?.classList.contains('has-sublayer')) {\n e.stopPropagation();\n d4.close();\n }\n break;\n // 複選\n case 'multiple':\n e.stopPropagation();\n clickOption.classList.toggle('active');\n setSelectDisplay(d4, clickIndex);\n break;\n }\n }\n });\n });\n };\n\n // 篩選功能\n d4.__events__.filterHandler = () => {\n if (d4.classList.contains('filter')) {\n d4.querySelector('.filter-bar').addEventListener('click', function (e) {\n e.stopPropagation();\n });\n d4.querySelector('.filter-input').addEventListener('input', function () {\n const val = this.value.toUpperCase();\n d4.s.allLi.forEach(el => {\n if (!el.textContent.toUpperCase().includes(val)) el.style.display = 'none';\n else el.removeAttribute('style');\n });\n });\n }\n };\n\n // 複選標籤移除\n d4.__events__.removeTag = () => {\n if (d4.s.selectType === 'single') return;\n d4.s.selectDisplayEl.addEventListener('click', function (e) {\n if (e.target.classList.contains('select-display')) return;\n const optionBtn = e.target.classList.contains('option-btn') ? e.target : e.target.parentElement;\n if (optionBtn.contains(e.target)) {\n e.stopPropagation();\n if (e.target.classList.contains('remove-icon')) {\n const tag = e.target.parentElement;\n const id = tag.getAttribute('data-option');\n d4.s.dropdownEl.querySelector(`.dropdown-list li[data-option=\"${id}\"]`).classList.remove('active');\n d4.s.activeLi = d4.querySelectorAll('.dropdown-list li.active');\n e.target.parentElement.remove();\n const activeLiArray = [...d4.s.activeLi];\n d4.s.value = activeLiArray.map(option => {\n const obj = {\n index: [...d4.s.allLi].indexOf(option),\n id: option.getAttribute('data-option'),\n el: option,\n };\n return obj;\n });\n d4.s.activeLi = activeLiArray;\n const valueArray = activeLiArray.map(option => option.getAttribute('data-option'));\n d4.setAttribute('d4-value', valueArray.join());\n if (activeLiArray.length <= 0) {\n d4.s.selectDisplayEl.textContent = d4.getAttribute('d4-placeholder').trim();\n }\n }\n }\n });\n };\n d4.__events__.dropdownToggle();\n d4.__events__.bindScrollbar();\n d4.__events__.selectOption();\n d4.__events__.filterHandler();\n d4.__events__.removeTag();\n d4.__events__.transitionend();\n }\n open() {\n const d4 = this;\n const dropdownHeight = d4.querySelector('.dropdown-scroller').clientHeight;\n const hasFilter = d4.classList.contains('filter');\n const totalHeight = () => {\n if (hasFilter) {\n return d4.querySelector('.filter-bar').clientHeight + dropdownHeight;\n }\n return dropdownHeight;\n };\n closeAllDropdown();\n d4.setAttribute('d4-status', 'open');\n d4.setAttribute('d4-default-height', totalHeight());\n d4.style.cssText = `--maxHeight: ${totalHeight()}px;`;\n d4.s.dropdownEl.style.cssText = `\n height: ${totalHeight()}px;\n z-index: 2;\n `;\n return this;\n }\n close() {\n const d4 = this;\n const allSublayer = d4.s.dropdownEl.querySelectorAll('.has-sublayer');\n const defaultHeight = parseInt(d4.getAttribute('d4-default-height'));\n d4.setAttribute('d4-status', 'close');\n d4.s.dropdownEl.style.height = '0px';\n allSublayer.forEach(item => {\n item.classList.remove('open');\n });\n d4.style.cssText = `--maxHeight: ${defaultHeight}px;`;\n d4.s.subDropdownTotalH = 0;\n return this;\n }\n scrollTo(scroll) {\n const d4 = this;\n const { viewport } = d4.__scroller__.elements();\n viewport.scrollTo({\n top: scroll,\n behavior: 'smooth',\n });\n }\n update() {\n this.__events__.selectOption();\n }\n}\n\nObject.assign(Dropdown4.prototype, SHARED);\n\n// define custom element\n// if (!customElements.get('dropdown-el')) {\n// customElements.define('dropdown-el', Dropdown4);\n// }\n\nexport default Dropdown4;\n","import fesdDB from '../../fesdDB.js';\nimport SHARED from '../shared/shared';\nimport { isElement } from '../shared/utils';\n\n// 第六版\nclass Tab4 extends HTMLElement {\n // 定義組件的初始狀態\n constructor(el, option) {\n super();\n }\n // 當組件的屬性被更改時會被呼叫\n static get observedAttributes() {\n return ['t4-active'];\n }\n attributeChangedCallback(attr, oldVal, newVal) {\n if (attr === 't4-active') {\n // change function\n if (oldVal !== newVal) {\n this.#stateChange(newVal);\n }\n }\n }\n connectedCallback() {\n // 防呆\n if (!this.classList.contains('t4-initialize')) {\n this.#create();\n }\n }\n #create() {\n const name = this.getAttribute('t4-name');\n const { SETTINGS } = fesdDB.tab4;\n // 防呆!\n if (document.querySelectorAll(`tab-el[t4-name=${name}]`).length > 1) {\n console.warn(name, '名字有重複喔!!!');\n }\n\n this.t = {\n tabs: [],\n name: name,\n tabPanels: [...this.children],\n activeTab: '',\n stepOutput: SETTINGS.stepOutput,\n recordUrl: this.getAttribute('t4-url') || SETTINGS.recordUrl,\n type: this.getAttribute('t4-type') || SETTINGS.type,\n display: this.getAttribute('t4-display') || SETTINGS.display,\n defaultPage: this.getAttribute('t4-defaultPage') || SETTINGS.defaultPage,\n anchor: this.getAttribute('t4-anchor'),\n gap: this.getAttribute('t4-gap') || SETTINGS.anchorGap,\n transition: {\n duration: this.getAttribute('t4-duration') || SETTINGS.transition.duration,\n timing: this.getAttribute('t4-timing') || SETTINGS.transition.timing,\n delay: this.getAttribute('t4-delay') || SETTINGS.transition.delay,\n },\n tabGroup: this.getAttribute('t4-group') || SETTINGS.tabGroup,\n };\n this.__events__ = {};\n this.t.tabs = this.#tabSet();\n this.t.step = document.querySelector(`[t4-control=\"${this.t.name}\"]${this.t.stepOutput}`);\n\n this.#init();\n }\n\n #init() {\n // 初始化設定\n this.t.activeTab = this.t.defaultPage;\n if (this.t.display === 'swiper') {\n this.#createSwiper();\n }\n if (this.t.recordUrl) {\n const params = new URLSearchParams(document.location.search);\n const val = params.get(this.t.name);\n const matchingTabs = document.querySelectorAll(`[t4-name=\"${this.t.name}\"] [t4-id=\"${val}\"]`);\n\n // 如果網址中有對應的參數,載入對應的頁籤\n if (val && matchingTabs.length === 1) {\n this.t.activeTab = val;\n } else {\n console.warn(`沒有${val}這頁喔!!`);\n }\n }\n this.setActiveTab(this.t.activeTab);\n // 設定防呆\n this.classList.add('t4-initialize');\n this.#resizeTab();\n }\n // 第一關 判斷數量以及id設定\n #tabSet() {\n const { t } = this;\n const tabs = Array.from(document.querySelectorAll(`[t4-control=\"${t.name}\"][t4-role=\"tab\"]`));\n // 防呆\n if (t.type === 'normal' && t.tabGroup === 'true') {\n // 是頁籤且是群組 判斷數量是否相符\n if (t.tabPanels.length !== tabs.length) {\n console.warn('按鈕與內容數量不同喔', t.tabPanels.length, tabs.length);\n }\n }\n if (t.tabGroup === 'true') {\n // 流水號\n t.tabPanels.forEach((el, index) => el.setAttribute('t4-id', index));\n } else {\n // 單一頁籤\n t.tabPanels.forEach(el => {\n if (!el.getAttribute('t4-id')) {\n console.warn(el, '請幫我設定id!!');\n }\n });\n }\n return tabs;\n }\n // 第二關 id命名提醒\n #getTabIndex(id) {\n const { t } = this;\n const tabPanelsWithId = t.tabPanels.filter(panel => panel.getAttribute('t4-id') === id);\n // 防呆!\n if (tabPanelsWithId.length > 1) {\n console.warn('有兩個相同id設定', tabPanelsWithId);\n }\n\n // 取得頁籤本人\n const tabPanel = tabPanelsWithId[0];\n if (tabPanel) {\n const tabIndex = t.tabPanels.indexOf(tabPanel);\n return tabIndex;\n } else {\n console.warn(`找不到t4-id為${id}的頁籤`);\n return 0;\n }\n }\n\n #createSwiper() {\n const swiperContainer = document.createElement('div');\n swiperContainer.classList.add('swiper-container');\n\n const swiperWrapper = document.createElement('div');\n swiperWrapper.classList.add('swiper-wrapper');\n\n this.t.tabPanels.forEach(slide => {\n swiperWrapper.appendChild(slide.cloneNode(true));\n });\n\n // 更新 t.tabPanels\n this.t.tabPanels = [...swiperWrapper.children];\n\n swiperContainer.appendChild(swiperWrapper);\n this.innerHTML = ''; // 清空原有的內容\n this.appendChild(swiperContainer);\n // 執行 Swiper 效果的相關初始化\n this.#initSwiper();\n }\n #initSwiper() {\n const sContainer = this.querySelector('.swiper-container');\n const sWrapper = this.querySelector('.swiper-wrapper');\n const tabPanels = this.t.tabPanels;\n\n // 設定容器和 wrapper 的樣式\n sContainer.style.overflow = 'hidden';\n sWrapper.style.display = 'flex';\n\n // 設定 wrapper 的寬度\n const totalWidth = tabPanels.length * 100 + '%';\n sWrapper.style.width = totalWidth;\n }\n\n #addUrl(panel) {\n const { t } = this;\n\n if (t.recordUrl === 'true') {\n const params = new URLSearchParams(document.location.search);\n params.set(t.name, panel);\n const newUrl = `${window.location.pathname}?${params.toString()}`;\n\n // 使用 replaceState 修改瀏覽器歷史記錄\n history.replaceState({ t4Id: panel }, '', newUrl);\n }\n }\n\n // 執行函式\n // 移動至指定位置\n #eventAnchor() {\n const gap = parseInt(this.t.gap, 10);\n const pageYOffset = window.pageYOffset;\n const targetOffset = this.getBoundingClientRect().top;\n const changeOffset = targetOffset + pageYOffset - gap;\n this.#goAnchor(changeOffset);\n }\n // 移動\n #goAnchor(val) {\n window.scrollTo({\n top: val,\n behavior: 'smooth',\n });\n }\n // 步驟狀態\n #step(val) {\n let current = parseInt(val, 10) + 1;\n this.t.step.textContent = `${current}`;\n this.t.step.setAttribute('now-page', current);\n }\n // next 按鈕狀態\n #btnNextState(newPage) {\n const next = document.querySelectorAll(`[t4-role=\"next\"][t4-control=\"${this.t.name}\"]`);\n\n const isSinglePage = this.t.tabPanels.length === 1;\n const isLastPage = newPage === this.t.tabPanels.length - 1;\n\n next.forEach(btn => {\n if (isSinglePage || isLastPage) {\n btn.setAttribute('disabled', '');\n } else {\n btn.removeAttribute('disabled');\n }\n });\n }\n // prev 按鈕狀態\n #btnPrevState(newPage) {\n const prev = document.querySelectorAll(`[t4-role=\"prev\"][t4-control=\"${this.t.name}\"]`);\n\n const isSinglePage = this.t.tabPanels.length === 1;\n const isFirstPage = newPage === 0;\n\n prev.forEach(btn => {\n if (isSinglePage || isFirstPage) {\n btn.setAttribute('disabled', '');\n } else {\n btn.removeAttribute('disabled');\n }\n });\n }\n // 頁籤狀態\n #tabState(newPage, tabId) {\n if (this.t.tabGroup === 'true') {\n this.t.tabs.forEach((tab, i) => {\n if (i == newPage) {\n tab.setAttribute('aria-selected', true);\n } else {\n tab.setAttribute('aria-selected', false);\n }\n });\n } else {\n // 自訂 id 的話...\n this.t.tabs.forEach((tab, i) => {\n if (tab.getAttribute('t4-id') === tabId) {\n tab.setAttribute('aria-selected', true);\n } else {\n tab.setAttribute('aria-selected', false);\n }\n });\n }\n }\n // 第三關各種元件判斷 及 執行\n #isTrue(fun, val, val2) {\n switch (fun) {\n case 'step':\n if (isElement(this.t.step)) {\n this.#step(val);\n }\n break;\n case 'eventAnchor':\n if (this.t.anchor) {\n this.#eventAnchor();\n }\n break;\n case 'tabState':\n // 流程沒有按鈕 客制的話....\n if (this.t.type == 'normal') {\n // 頁籤按鈕狀態\n this.#tabState(val, val2);\n }\n break;\n case 'btnState':\n this.#btnNextState(val);\n this.#btnPrevState(val);\n break;\n case 'tabUrl':\n if (this.t.recordUrl === 'true') {\n this.#addUrl(val);\n }\n break;\n default:\n console.warn('請增加判斷,謝謝');\n break;\n }\n }\n // 消失動畫\n #animationHide(index) {\n const { t } = this;\n const { duration, timing, delay } = this.t.transition;\n const tabPanel = t.tabPanels[index];\n // 動畫 消失 動畫 出現 搭配 settimeout 使用\n tabPanel.classList.add('hide');\n switch (t.display) {\n case 'fade':\n tabPanel.style.cssText = 'display: none; opacity: 0;';\n break;\n case 'slide':\n tabPanel.style.cssText = 'display: none; opacity: 0; max-height: unset;';\n break;\n case 'swiper':\n break;\n default:\n tabPanel.style.display = 'none';\n break;\n }\n }\n // 出現動畫\n #animationShow(index) {\n const { duration, timing, delay } = this.t.transition;\n const tabPanel = this.t.tabPanels[index];\n let timer;\n\n tabPanel.classList.remove('hide');\n tabPanel.style.transition = `opacity ${duration}ms ${timing} ${delay}ms`;\n tabPanel.style.display = 'block';\n\n switch (this.t.display) {\n case 'fade':\n tabPanel.style.opacity = '0';\n timer = setTimeout(() => {\n clearTimeout(timer);\n tabPanel.style.opacity = '1';\n }, 100);\n break;\n case 'slide':\n console.warn(this.t.display, '抱歉,好像壞掉了...');\n const clientHeight = tabPanel.offsetHeight;\n tabPanel.style.opacity = '1';\n tabPanel.style.maxHeight = '0';\n timer = setTimeout(() => {\n clearTimeout(timer);\n tabPanel.style.maxHeight = clientHeight + 'px';\n }, 100);\n break;\n case 'swiper':\n tabPanel.style.opacity = '1';\n const sWrapper = this.querySelector('.swiper-wrapper');\n const slideWidth = this.t.tabPanels[0].offsetWidth;\n const translateValue = -index * slideWidth;\n\n sWrapper.style.transition = `transform ${duration}ms ${timing} ${delay}ms`;\n sWrapper.style.transform = `translateX(${translateValue}px)`;\n break;\n default:\n console.warn(this.t.display, '沒有這個效果請自己想辦法!!!!');\n break;\n }\n }\n // 狀態\n #stateChange(tabId) {\n const newTabIndex = this.#getTabIndex(tabId);\n // 通知狀態改變\n this.#isTrue('step', newTabIndex);\n this.#isTrue('btnState', newTabIndex);\n this.#isTrue('tabState', newTabIndex, tabId);\n this.#isTrue('tabUrl', tabId);\n // 觸發自定義事件\n this.emit('change');\n }\n // resize\n #resizeTab() {\n const _this_ = this;\n window.addEventListener(\n 'resize',\n debounce(() => {\n _this_.update();\n }, 1000),\n );\n }\n\n // ------------- 我是分隔線呦 -------------\n // 頁籤切換\n tabClick(clickedTab) {\n const { t } = this;\n // 防呆!! 為了保證數量多餘頁籤時仍可正常執行\n const indexOf = t.tabs.indexOf(clickedTab) % t.tabPanels.length;\n const newTabId = t.tabGroup === 'true' ? String(indexOf) : clickedTab.getAttribute('t4-id');\n\n // 通知頁籤切換\n this.setActiveTab(newTabId);\n\n // 錨點滑動動畫\n setTimeout(() => {\n this.#isTrue('eventAnchor');\n }, t.transition.duration);\n }\n // 外部呼叫方法 $0.setActiveTab(0)\n setActiveTab(id) {\n const { t } = this;\n const defaultID = id === '' ? t.tabPanels[0].getAttribute('t4-id') : id;\n t.activeTab = defaultID;\n this.setAttribute('t4-active', defaultID);\n\n const newTabIndex = this.#getTabIndex(defaultID);\n\n t.tabPanels.forEach((panel, i) => {\n i === newTabIndex ? this.#animationShow(i) : this.#animationHide(i);\n });\n }\n // 外部呼叫方法 $0.goNext()\n goNext() {\n const tabIndex = this.#getTabIndex(this.t.activeTab);\n const nextPage = Math.min(this.t.tabPanels.length - 1, tabIndex + 1);\n const nextPageId = this.t.tabPanels[nextPage].getAttribute('t4-id');\n this.setActiveTab(nextPageId);\n }\n // 外部呼叫方法 $0.goPrev()\n goPrev() {\n const tabIndex = this.#getTabIndex(this.t.activeTab);\n const prevPage = Math.max(0, tabIndex - 1);\n const prevPageId = this.t.tabPanels[prevPage].getAttribute('t4-id');\n this.setActiveTab(prevPageId);\n }\n // 外部呼叫方法 $0.update()\n update() {\n this.t.tabs = this.#tabSet();\n // 事件重綁\n changeEvent();\n console.log('tab update!!!!');\n }\n}\n\nfunction debounce(func, time = 1000) {\n let timer;\n return function (event) {\n if (timer) clearTimeout(timer);\n timer = setTimeout(func, time, event);\n };\n}\n\n// 綁定點擊事件\nfunction changeEvent() {\n const targetElements = document.querySelectorAll('[t4-control]');\n\n document.addEventListener('click', function (event) {\n let isTarget = false;\n for (const targetElement of targetElements) {\n if (targetElement.contains(event.target) || event.target.closest('[t4-control]') === targetElement) {\n isTarget = true;\n break;\n }\n }\n if (isTarget) {\n // event.target 是目標元素或其子層\n const tabControl = event.target.closest('[t4-control]');\n const tabElName = tabControl.getAttribute('t4-control');\n const tabEls = document.querySelectorAll(`tab-el[t4-name=\"${tabElName}\"]`);\n const role = tabControl.getAttribute('t4-role');\n tabEls.forEach(el => {\n switch (role) {\n case 'tab':\n el.tabClick(tabControl);\n break;\n case 'next':\n el.goNext(tabControl);\n break;\n case 'prev':\n el.goPrev(tabControl);\n break;\n default:\n console.warn('你是誰??', tabControl);\n break;\n }\n });\n }\n });\n}\nchangeEvent();\n\nObject.assign(Tab4.prototype, SHARED);\n\n// if (!customElements.get('tab-el')) {\n// customElements.define('tab-el', Tab4);\n// }\n\nexport default Tab4;\n","import SHARED from '../shared/shared';\nimport { isString, isElement, isNodeList, isElementExist, isFunction, getElement, getAllElements, createUid, toHTMLElement, jsonParse, warn, error } from '../shared/utils';\n\n('use strict');\n\nconst collapseHandle = $wrapper => {\n const { defaultOptions } = $wrapper.collapse;\n const { collapseClass, target, transition } = defaultOptions;\n\n const $target = $wrapper.querySelector(target);\n\n $wrapper.classList.add(collapseClass);\n\n $target.style.height = 0;\n $target.style['transition-property'] = transition.property;\n $target.style['transition-duration'] = transition.duration;\n $target.style['transition-timing-function'] = transition.function;\n $target.style['transition-delay'] = transition.delay;\n $target.style.overflow = 'hidden';\n};\n\nconst expandHandle = $wrapper => {\n const { defaultOptions } = $wrapper.collapse;\n const { collapseClass, target, transition } = defaultOptions;\n\n const $target = $wrapper.querySelector(target);\n const height = $target.children[0].offsetHeight;\n $wrapper.collapse.height = height;\n\n // console.log( height );\n // console.log( $target.children[0].offsetHeight );\n $wrapper.classList.remove(collapseClass);\n\n $target.style.display = 'block';\n $target.style.height = `${height}px`;\n $target.style['transition-property'] = transition.property;\n $target.style['transition-duration'] = transition.duration;\n $target.style['transition-timing-function'] = transition.function;\n $target.style['transition-delay'] = transition.delay;\n $target.style.overflow = 'hidden';\n};\n\nclass Collapse4 {\n constructor(el, options = {}) {\n // 可傳 string 或 element 或 nodeList\n if (!isString(el) && !isElement(el) && !isNodeList(el) && !isElementExist(el)) return;\n\n this.__storage__ = {\n el,\n options,\n };\n\n this.#create();\n }\n\n #create() {\n const { el, options } = this.__storage__;\n const { SETTINGS, EVENTS } = fesdDB.collapse4;\n\n this.elements = getAllElements(el);\n this.options = Object.assign({}, SETTINGS, options);\n this.__events__ = Object.assign({}, EVENTS);\n\n if (this.options.on) {\n for (const [k, v] of Object.entries(this.options.on)) {\n this.__events__[k] = [v];\n }\n }\n\n this.#init();\n }\n\n #init() {\n const { elements, options } = this;\n\n elements.forEach(el => {\n el.collapse = {};\n el.collapse.instance = this;\n el.collapse.defaultOptions = options;\n\n this.#trigger(el);\n });\n\n this.emit('init');\n }\n\n #trigger(el) {\n const { options } = this;\n const { collapseClass, block, target, defaultOpen, targetStopPropagation, defaultActiveMark } = options;\n\n // collapse-wrapper\n // collapse-block\n // collapse-target\n\n const $wrapper = el;\n const $target = $wrapper.querySelector(target);\n $wrapper.collapse.height = $target.children[0].offsetHeight;\n\n // const $block = $wrapper.querySelector(block);\n\n // 是否預設全打開\n if (defaultOpen) {\n $target.style.height = `${$target.children[0].offsetHeight}px`;\n $wrapper.classList.remove(collapseClass);\n } else {\n if (!$wrapper.classList.contains(defaultActiveMark) && !$wrapper.hasAttribute(defaultActiveMark)) {\n $wrapper.classList.add(collapseClass);\n $target.style.height = '0px';\n $target.style.overflow = 'hidden';\n } else {\n $target.style.height = `${$target.children[0].offsetHeight}px`;\n $wrapper.classList.remove(collapseClass);\n }\n }\n\n // update() 避免重複綁定\n $wrapper.removeEventListener('click', this.#event);\n $wrapper.addEventListener('click', this.#event);\n\n // target 點擊不收合\n if (targetStopPropagation) {\n const event = e => {\n e.stopPropagation();\n };\n // update() 避免重複綁定\n $target.removeEventListener('click', event);\n $target.addEventListener('click', event);\n }\n }\n\n #event() {\n const { instance, defaultOptions } = this.collapse;\n const { collapseClass, block, target, single } = defaultOptions;\n\n const $wrapper = this;\n\n if ($wrapper.classList.contains(collapseClass)) {\n if (single) {\n $wrapper.parentNode.querySelectorAll(`.${$wrapper.classList[0]}`).forEach(el => {\n collapseHandle(el);\n });\n }\n\n expandHandle($wrapper);\n } else {\n collapseHandle($wrapper);\n }\n\n instance.emit('afterCollapse');\n }\n\n update() {\n this.#create();\n }\n}\n\nObject.assign(Collapse4.prototype, SHARED);\n\nexport default Collapse4;\n","import fesdDB from '../../fesdDB.js';\n\nfunction createRipple(e, r4) {\n const button = r4;\n const { color, opacity, duration } = r4.s.options;\n\n // 可以更改點擊時生成效果樣式的結構\n let ripples = document.createElement('span');\n\n //偵測滑鼠點擊位置\n let x = e.clientX - button.getBoundingClientRect().left;\n let y = e.clientY - button.getBoundingClientRect().top;\n\n ripples.style.cssText = `background: ${color};left: ${x}px;top: ${y}px;opacity: ${opacity};animation-duration: ${duration}ms`;\n ripples.classList.add('circle');\n\n // 生成\n button.appendChild(ripples);\n\n // 生成後消失\n setTimeout(function () {\n ripples.remove();\n }, `${duration}`);\n}\n\nfunction removeStyle() {\n document.querySelectorAll('ripple-btn').forEach(button => {\n const ball = button.querySelector('.hover-ball');\n button.style.setProperty('--r', '');\n button.classList.remove('entered');\n });\n}\n\ndocument.addEventListener('click', removeStyle);\n\nclass Ripple4 extends HTMLElement {\n constructor() {\n super();\n this.initialize = false;\n }\n\n connectedCallback() {\n const r4 = this;\n if (r4.initialize || r4.classList.contains('r4-initialize')) return;\n r4.initialize = true;\n this.#create();\n }\n\n #create() {\n const { SETTINGS } = fesdDB.ripple4;\n this.s = {};\n function attrToBoolean(str) {\n let booleanVal = Boolean(str);\n booleanVal = str === 'true';\n return booleanVal;\n }\n const options = {\n color: this.getAttribute('r4-color') || SETTINGS.color,\n opacity: this.getAttribute('r4-opacity') || SETTINGS.opacity,\n duration: Number(this.getAttribute('r4-duration')) || SETTINGS.duration,\n speed: Number(this.getAttribute('r4-speed')) || SETTINGS.speed,\n hover: this.getAttribute('r4-hover') ? attrToBoolean(this.getAttribute('r4-hover')) : SETTINGS.hover,\n click: this.getAttribute('r4-hover-click') ? attrToBoolean(this.getAttribute('r4-hover-click')) : SETTINGS.click,\n };\n\n this.s.options = options;\n if (this.s.options.hover) this.classList.add('hover-btn');\n\n this.#init();\n }\n\n #init() {\n this.#ball();\n this.#event();\n this.classList.add('r4-initialize');\n }\n\n #ball() {\n const button = this;\n const ball = document.createElement('i');\n ball.classList.add('hover-ball');\n ball.style.transitionDuration = `${button.s.options.speed}ms`;\n button.appendChild(ball);\n }\n\n #event() {\n const ball = this.querySelector('i.hover-ball');\n const button = this;\n // ripple點擊事件\n button.addEventListener('click', function (e) {\n e.stopPropagation();\n if (button.s.options.click) {\n createRipple(e, button);\n }\n });\n\n // 判斷操作事件使用 mouse 或是 touch\n let operateStart = 'ontouchstart' in document.documentElement ? 'touchstart' : 'mouseenter';\n let operateEnd = 'ontouchend' in document.documentElement ? 'touchend' : 'mouseleave';\n // hover\n button.addEventListener(operateStart, function (e) {\n if (operateStart === 'touchstart') {\n removeStyle();\n }\n if (button.s.options.hover) {\n const posX = operateStart === 'mouseenter' ? Math.round(e.clientX - button.getBoundingClientRect().left) : Math.round(e.changedTouches[0].clientX - button.getBoundingClientRect().x);\n const posY = operateStart === 'mouseenter' ? Math.round(e.clientY - button.getBoundingClientRect().top) : Math.round(e.changedTouches[0].clientY - button.getBoundingClientRect().y);\n const { offsetWidth, offsetHeight } = button;\n // 最大可覆蓋之半徑\n const rippleR = Math.ceil(Math.sqrt(offsetWidth ** 2 + offsetHeight ** 2) * 2);\n button.style.setProperty('--r', rippleR);\n ball.style.left = posX + 'px';\n ball.style.top = posY + 'px';\n button.classList.add('entered');\n }\n });\n button.addEventListener(operateEnd, function (e) {\n if (operateEnd === 'touchend') return;\n if (button.s.options.hover) {\n const posX = operateEnd === 'mouseleave' ? Math.round(e.clientX - button.getBoundingClientRect().left) : Math.round(e.changedTouches[0].clientX - button.getBoundingClientRect().x);\n const posY = operateEnd === 'mouseleave' ? Math.round(e.clientY - button.getBoundingClientRect().top) : Math.round(e.changedTouches[0].clientY - button.getBoundingClientRect().y);\n button.style.setProperty('--r', '');\n ball.style.left = posX + 'px';\n ball.style.top = posY + 'px';\n button.classList.remove('entered');\n }\n });\n }\n update() {\n this.classList.remove('r4-initialize');\n this.querySelector('i.hover-ball').remove();\n this.#create();\n }\n}\n\n// if (!customElements.get('ripple-btn')) {\n// customElements.define('ripple-btn', Ripple4);\n// }\n\nexport default Ripple4;\n","export default class ImageValidate {\n constructor() {\n this.init();\n }\n init() {\n const images = document.querySelectorAll('*:not([video-id]) > img');\n const noImageDom = (width, height) => {\n const div = document.createElement('div');\n const slash1 = document.createElement('span');\n const slash2 = document.createElement('span');\n const slashWidth = Math.sqrt(width ** 2 + height ** 2);\n const theta = (Math.asin(height / slashWidth) * 180) / Math.PI;\n div.className = 'no-image';\n slash1.className = 'slash1';\n slash1.style.cssText = `\n width: ${slashWidth}px;\n transform: rotate(${theta}deg);\n `;\n slash2.className = 'slash2';\n slash2.style.cssText = `\n width: ${slashWidth}px;\n transform: rotate(${-theta}deg);\n `;\n div.appendChild(slash1);\n div.appendChild(slash2);\n return div;\n };\n const errorImage = document.querySelectorAll('.error-image');\n for (let i = 0; i < errorImage.length; i++) {\n errorImage[i].remove();\n }\n images.forEach((img) => {\n let src;\n const wrapWidth = img.parentElement.clientWidth;\n const wrapHeight = img.parentElement.clientHeight;\n if (img.classList.contains('lazy') || img.classList.contains('swiper-lazy')) {\n src = img.getAttribute('data-src');\n } else {\n src = img.getAttribute('src');\n }\n if (src === '') {\n const wrapDIV = document.createElement('div');\n const parentsPosition = getComputedStyle(img.parentElement).position;\n wrapDIV.className = 'error-image';\n if (parentsPosition === 'static') {\n img.parentElement.style.position = 'relative';\n }\n img.parentElement.appendChild(wrapDIV);\n wrapDIV.style.cssText = `\n position: absolute;\n top: 50%;\n left: 50%;\n width: 100%;\n height: 100%;\n transform: translate(-50%,-50%);\n z-index: 1;\n `;\n wrapDIV.appendChild(noImageDom(wrapWidth, wrapHeight));\n }\n });\n function imageResize() {\n const noImage = document.querySelectorAll('.no-image');\n if (noImage.length <= 0) return;\n noImage.forEach((item) => {\n const wrapWidth = item.parentElement.clientWidth;\n const wrapHeight = item.parentElement.clientHeight;\n const slashWidth = Math.sqrt(wrapWidth ** 2 + wrapHeight ** 2);\n const theta = (Math.asin(wrapHeight / slashWidth) * 180) / Math.PI;\n item.querySelector('.slash1').style.cssText = `\n width: ${slashWidth}px;\n transform: rotate(${theta}deg);\n `;\n item.querySelector('.slash2').style.cssText = `\n width: ${slashWidth}px;\n transform: rotate(${-theta}deg);\n `;\n });\n }\n window.addEventListener('resize', imageResize);\n }\n reValidate() {\n this.init();\n }\n}\n","//建立 callback Function\nfunction createCallbackFunction(attributeValue, defaultValue) {\n if (attributeValue) {\n return function (el, res) {\n Function(attributeValue)(el, res);\n };\n } else {\n return defaultValue;\n }\n}\n\n//產生結構\nfunction createDOM(input, element, file, res) {\n const params = element.params;\n const preview = input.closest('[data-upload-item]').querySelector('[data-preview]');\n if (preview.querySelector('img')) preview.querySelector('img').remove();\n preview.appendChild(res.imgElement);\n const group = input.dataset.group;\n const inputIndex = document.querySelector(element.el).dataset.index;\n if (params.compress) {\n //副檔名\n const fileExt = file.name.substring(file.name.lastIndexOf('.')).replace('.');\n //檔名\n const fileName = file.name.replace(`.${fileExt}`, '');\n //檔案壓縮\n res.originalCanvas.toBlob(\n function (blob) {\n const imgFile = new File([blob], `${fileName}`, { type: file.type });\n uploadImage[`${group}`][inputIndex] = {\n file: imgFile,\n info: res,\n };\n if (params.on.changeAfter && typeof params.on.changeAfter === 'function') {\n params.on.changeAfter(input, res);\n }\n },\n file.type,\n params.compress,\n );\n } else {\n uploadImage[`${group}`][inputIndex] = {\n file: file,\n info: res,\n };\n if (params.on.changeAfter && typeof params.on.changeAfter === 'function') {\n params.on.changeAfter(input, res);\n }\n }\n}\n\n//產生Canvas\nfunction createCanvas(options, img, outputW, outputH) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n const originalWidth = img.width;\n const originalHeight = img.height;\n const originalRatio = (originalHeight / originalWidth) * 100;\n const outputRatio = (outputH / outputW) * 100;\n let newWidth = 0;\n let newHeight = 0;\n canvas.width = outputW;\n canvas.height = outputH;\n //縮圖填滿\n switch (options.previewSize) {\n case 'contain':\n if (originalRatio < outputRatio) {\n newWidth = canvas.width;\n newHeight = (outputW * originalRatio) / 100;\n } else if (originalRatio > outputRatio) {\n newWidth = (outputH / originalRatio) * 100;\n newHeight = canvas.height;\n } else {\n newWidth = canvas.width;\n newHeight = canvas.height;\n }\n break;\n case 'cover':\n if (originalRatio < outputRatio) {\n newWidth = (outputH / originalRatio) * 100;\n newHeight = canvas.height;\n } else if (originalRatio > outputRatio) {\n newWidth = canvas.width;\n newHeight = (outputW * originalRatio) / 100;\n } else if (originalRatio === outputRatio) {\n newWidth = canvas.width;\n newHeight = canvas.height;\n }\n break;\n }\n const x = (canvas.width - newWidth) * 0.5;\n const y = (canvas.height - newHeight) * 0.5;\n ctx.drawImage(img, x, y, newWidth, newHeight);\n\n return canvas;\n}\n\n//將檔案轉成圖片\nfunction convertImg(options, dataUrl) {\n return new Promise((resolve, reject) => {\n if (dataUrl) {\n const img = new Image();\n img.src = dataUrl;\n img.classList.add(options.previewSize);\n img.onload = () => {\n let result = {\n imgElement: img,\n originalCanvas: createCanvas(options, img, img.width, img.height),\n info: {\n originalWidth: img.width,\n originalHeight: img.height,\n ratio: (img.height / img.width) * 100 + '%',\n },\n };\n resolve(result);\n };\n } else {\n resolve();\n }\n });\n}\n\n//小數點後第N位四捨五入\nfunction formatFloat(num, pos) {\n const size = Math.pow(10, pos);\n return Math.round(num * size) / size;\n}\n\n//檢查檔案大小\nfunction checkSize(file, sizeLimit) {\n let fileSize = file.size / 1024 / 1024;\n return `${formatFloat(fileSize, 2)}` <= sizeLimit;\n}\n\n//讀取檔案\nfunction readFileHandler(e, input, element) {\n if (e.target.files.length <= 0) return;\n const file = e.target.files[0];\n const parentsEl = input.closest('[data-upload-item]');\n let reader = new FileReader();\n reader.onload = event => {\n const dataUrl = file.type.split('/')[0] === 'image' ? event.target.result : null;\n if (element.params.sizeLimit && !checkSize(file, element.params.sizeLimit)) {\n input.value = '';\n parentsEl.classList.add('over-limit');\n if (element.params.on.overLimit && typeof element.params.on.overLimit === 'function') {\n element.params.on.overLimit(input, element.params.sizeLimit);\n }\n return;\n } else {\n parentsEl.classList.remove('over-limit');\n parentsEl.classList.add('uploaded');\n convertImg(element.params, dataUrl).then(res => {\n createDOM(input, element, file, res);\n });\n }\n };\n reader.readAsDataURL(file);\n}\n\nclass ImagePreview {\n constructor(element, params) {\n const self = this;\n self.el = element;\n // default params\n self.params = {\n on: {\n changeAfter: null,\n overLimit: null,\n },\n group: 'group', //群組名稱 (type: String)\n sizeLimit: 2, //大小限制 (type: Number 單位: MB)\n previewSize: 'cover', //縮圖形式 (type: String 'contain' || 'cover')\n compress: 0.8, //壓縮品質 (type: Number 0~1 || false)\n };\n Object.assign(self.params, params);\n self.init();\n }\n init() {\n const self = this;\n const inputs = document.querySelectorAll(`${self.el}:not(.preview-active)`);\n if (inputs.length <= 0) return;\n window.uploadImage = {};\n inputs.forEach((input, index) => {\n input.classList.add('preview-active');\n // final set params\n const params = {\n group: input.dataset.group || self.params.group,\n sizeLimit: parseInt(input.dataset.limit) || self.params.sizeLimit,\n previewSize: input.dataset.previewSize || self.params.previewSize,\n compress: input.dataset.compress || self.params.compress,\n on: {\n changeAfter: createCallbackFunction(input.dataset.changeAfter, self.params.on.changeAfter),\n overLimit: createCallbackFunction(input.dataset.overLimit, self.params.on.overLimit),\n },\n };\n self.params = params;\n if (typeof uploadImage[`${params.group}`] === 'undefined') uploadImage[`${params.group}`] = [];\n if (!input.dataset.group) input.dataset.group = params.group;\n input.dataset.index = document.querySelectorAll(`[data-group=\"${params.group}\"]`).length - 1;\n input.addEventListener('change', function (e) {\n readFileHandler(e, input, self);\n });\n });\n }\n}\n\nexport default ImagePreview;\n"],"names":["FESD_DB","type","filter","filterPlaceholder","collapse","dropdown","Detect4","userAgent","isBrowser4","browser","key","isMobile4","mobile","isOs4","os","insert","isString","value","isElement","isNodeList","isElementExist","getElement","isFunction","getAllElements","createUid","toHTMLElement","str","dom","jsonParse","json","warn","target","msg","error","SHARED","events","handler","__events__","evt","evtHandler","index","onceHandler","args","event","data","ease","t","b","c","d","scrollTo","options","instance","container","spacer","speed","gap","easing","direction","isHorizontal","scrollDirection","rectPosition","rectSpace","containerEle","start","targetPoint","spacerGap","change","increment","currentTime","emitEvent","eventName","targetEle","animateScroll","val","_create","create_fn","_init","init_fn","_trigger","trigger_fn","Anchor4","el","__privateAdd","__privateMethod","elements","_a","SETTINGS","fesdDB","newOptions","targetName","EVENTS","k","v","defaultOptions","eventHandler","createCache","n","o","s","e","r","cacheUpdateContextual","l","i","a","u","getApi","_","f","p","h","g","isUndefined","isNull","isNumber","isBoolean","isArray","isObject","isArrayLike","isPlainObject","isHTMLElement","each","inArray","concat","push","from","createOrKeepArray","isEmptyArray","deduplicateArray","runEachAndClear","w","y","m","S","O","$","C","x","H","E","z","I","A","capitalizeFirstLetter","equal","equalWH","equalXY","equalTRBL","noop","bind","selfClearTimeout","debounce","mergeParms","flush","hasOwnProperty","keys","assignDeep","removeUndefinedProperties","isEmptyObject","capNumber","getDomTokensArray","getAttr","hasAttr","setAttrs","removeAttrs","domTokenListAttr","domTokenListOperation","removeAttrClass","addAttrClass","addRemoveAttrClass","hasAttrClass","createDomTokenListClass","removeClass","addClass","find","findFirst","is","isBodyElement","contents","parent","closest","getFocusedElement","liesBetween","removeElements","before","appendChildren","insertAfter","createDiv","createDOM","T","getCSSVal","validFiniteNumber","parseToZeroOrNumber","ratioToCssPercent","numberToCssPx","setStyles","getStyles","topRightBottomLeft","getTrasformTranslateValue","elementHasDimensions","D","getElmWidthHeightProperty","getWindowSize","M","R","getFractionalSize","getBoundingClientRect","hasDimensions","domRectHasDimensions","domRectAppeared","removeEventListener","addEventListener","stopPropagation","preventDefault","stopAndPrevent","scrollElementTo","getElementScroll","getZeroScrollCoordinates","sanitizeScrollCoordinates","sanitizeAxis","isDefaultDirectionScrollCoordinates","getAxis","getScrollCoordinatesPercent","focusElement","manageListener","createEventListenerHub","removeEvent","addEvent","triggerEvent","opsStringify","getPropByPath","V","getOptionsDiff","createOptionCheck","L","P","U","N","q","B","F","j","X","Y","W","J","K","G","Q","Z","tt","nt","ot","st","et","it","at","ut","_t","dt","ft","pt","vt","ht","gt","bt","wt","yt","mt","St","Ot","$t","Ct","createEnvironment","getNativeScrollbarSize","getNativeScrollbarsHiding","addZoomListener","getEnvironment","resolveInitialization","staticInitializationElement","dynamicInitializationElement","cancelInitialization","xt","addInstance","removeInstance","getInstance","createEventContentChange","destroy","updateElements","createDOMObserver","observerCallback","Ht","Et","addPlugins","registerPluginModuleInstances","getStaticPluginModuleInstance","zt","It","getShowNativeOverlaidScrollbars","overflowIsVisible","createViewportOverflowState","getAxisOverflowStyle","Tt","kt","createSizeObserver","onSizeChangedCallbackProxy","createTrinsicObserver","isHeightIntrinsic","triggerOnTrinsicChangedCallback","intersectionObserverCallback","onSizeChanged","createObserversSetup","getDirectionIsRTL","setDirection","onTrinsicChanged","onContentMutation","onHostMutation","ignoreMutationFromOptions","createScrollbarsSetupElements","initScrollTimeline","getScrollbarHandleLengthRatio","getScrollbarHandleOffsetRatio","addDirectionRTLKeyframes","cancelElementAnimations","setElementAnimation","scrollbarStructureAddRemoveClass","scrollbarStyle","scrollbarStructureRefreshHandleLength","scrollbarStructureRefreshHandleOffset","getAxisTransformValue","doRefreshScrollbarOffset","scrollbarsAddRemoveClass","refreshScrollbarsHandleLength","refreshScrollbarsHandleOffset","refreshScrollbarsScrollbarOffset","setScrollbarElementAnimation","styleScrollbarPosition","getTranslateValue","generateScrollbarDOM","appendElements","createScrollbarsSetupEvents","scrollOffsetElementScrollBy","createInteractiveScrollEvents","createRelativeHandleMove","getHandleOffset","releasePointerCapture","addScrollbarPressedClass","isAffectingTransition","animateHandleOffset","createScrollbarsSetup","isHoverablePointerType","manageScrollbarsAutoHideInstantInteraction","manageScrollbarsAutoHide","manageAutoHideSuspension","onHostMouseEnter","setScrollbarVisibility","createStructureSetupElements","getDocumentWindow","elementIsGenerated","unwrap","prepareWrapUnwrapFocus","createTrinsicUpdateSegment","createPaddingUpdateSegment","createOverflowUpdateSegment","setMeasuringMode","getOverflowAmount","createViewportOverflowStyleClassName","setViewportOverflowStyle","createAllOverflowStyleClassNames","ct","rt","lt","createStructureSetup","createSetups","update","updateHintsAreTruthy","OverlayScrollbars","validateOptions","translateScrollbarStructure","translateScrollbarsSetupElement","MODALS","createTemplate","TEMPLATE","childDom","content","child","_mount","mount_fn","_event","event_fn","_stateControl","stateControl_fn","ModernModal","attr","oldVal","newVal","ATTRS","id","scroller","_b","_c","$self","close","closeAttr","destroyAttr","state","__scroller__","viewport","transitionEndHandler","useMethod","name","useFunction","Modal4","dispatchModal","modal","useModal","useFetch","action","on","route","useEvent","res","doms","containerElement","_Modal4","openOptions","obj","methods","ons","interaction","scrollElement","viewHeight","viewTop","className","delay","end","repeat","top","bottom","startTrigger","endTrigger","shouldRemove","detectRepeat","repeatType","Aost4","removeShow","_youtube","youtube_fn","_vimeo","vimeo_fn","_youku","youku_fn","_bilibili","bilibili_fn","videoPlayer","videoType","layout","videoId","autoplay","hash","isServer","detectOS","ua","ipad","iphone","android","ios","getEventListenerOptions","isSupportOptions","listenerOptions","testEvent","capture","noticeRequiredTargetElement","targetElement","getPreventEventDefault","initialLockState","getLockState","lockState","handleScroll","initialClientPos","scrollTop","scrollLeft","scrollWidth","scrollHeight","clientWidth","clientHeight","clientX","clientY","isVertical","isOnTop","isOnLeft","isOnRight","isOnBottom","setOverflowHiddenPc","$html","htmlStyle","scrollBarWidth","previousPaddingRight","setOverflowHiddenMobile","$body","bodyStyle","supportsNativeSmoothScroll","eventListenerOptions","lock","elementArray","element","_event$targetTouches$","unlock","scrollLock","elementArr","scrollUnlock","loading","loaded","imagePreview","selector","ImagePreview","ajaxUpdate","aost4","lazy","LazyLoad","img","imageValidate","ImageValidate","anchor4","tabChange","callback","bodyScrollbarInit","appleDebug","detectMacOSVersion","clickToggleClass","clickSwitchClass","func","timer","context","throttle","timeout","last","now","countDown","set_seconds","set_time","minutes","seconds","fixMobile100vh","init","vh","wordAnimation","isWrap","delayStartTime","delaySpace","randomTransTime","$this","removeBr","newText","words","letter","formatFloat","num","pos","size","getSlideDataIndex","swiper","activeIndex","slidesLen","getSlidesCount","disableNum","gridRows","disableCount","slideImgDetect","isVideo","activeSlide","video","allVideo","numberGrow","ele","splitNum","zeroToNine","text","letterGrow","splitLetter","aToZ","getTransformX","transform","mat","getTransformY","hasVideoID","isActive","createPlayer","params","_createCover","createCover_fn","_getVideoData","getVideoData_fn","video4","LAYOUT","$selector","videoLayoutNo","videoMode","videoButton","videoCover","$target","$cover","src","videoTarget","videoTargetRoute","scrollers","extend","ssrDocument","getDocument","doc","ssrWindow","getWindow","win","makeReactive","proto","Dom7","items","arrayFlat","arr","arrayFilter","arrayUnique","uniqueArray","qsa","window","document","html","toCreate","tempParent","classes","classNames","toggleClass","hasClass","attrs","attrName","removeAttr","transition","duration","eventType","targetSelector","listener","handleLiveEvent","eventData","parents","handleEvent","off","handlers","trigger","dataIndex","transitionEnd","fireCallBack","outerWidth","includeMargins","styles","outerHeight","offset","box","body","clientTop","clientLeft","css","props","prop","result","compareWith","eq","length","returnIndex","append","els","newChild","tempDiv","prepend","next","nextAll","nextEls","prev","prevAll","prevEls","foundElements","found","children","childNodes","remove","Methods","methodName","deleteProps","object","nextTick","getComputedStyle","style","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","isNode","node","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","setCSSProperty","varName","varValue","animateCSSModeScroll","targetPosition","side","startPosition","startTime","time","dir","isOutOfBound","current","animate","progress","easeProgress","currentPosition","support","calcSupport","supportsPassive","opts","getSupport","deviceCached","calcDevice","platform","device","screenWidth","screenHeight","ipod","windows","macos","iPadScreens","getDevice","overrides","calcBrowser","isSafari","getBrowser","Resize","emit","observer","animationFrame","resizeHandler","createObserver","entries","width","height","newWidth","newHeight","contentBoxSize","contentRect","removeObserver","orientationChangeHandler","Observer","extendParams","observers","attach","ObserverFunc","mutations","observerUpdate","containerParents","eventsEmitter","priority","self","method","updateSize","$el","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","$wrapperEl","swiperSize","rtl","wrongRTL","isVirtual","previousSlidesLength","slides","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","gridEnabled","slideSize","shouldResetSlideSize","slide","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","marginLeft","marginRight","boxSizing","offsetWidth","newSlidesGrid","slidesGridItem","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","activeSlides","getSlideByIndex","updateSlidesOffset","updateSlidesProgress","translate","offsetCenter","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","updateProgress","multiplier","translatesDiff","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","realIndex","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","skip","updateClickedSlide","slideFound","getSwiperTranslate","currentTranslate","setTranslate","byController","wrapperEl","newProgress","minTranslate","maxTranslate","translateTo","runCallbacks","translateBounds","internal","newTranslate","isH","setTransition","transitionEmit","step","transitionStart","slideTo","initial","indexAsNumber","enabled","normalizedTranslate","normalizedGrid","normalizedGridNext","slideToLoop","newIndex","slideNext","animating","perGroup","slidePrev","rtlTranslate","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slideToClickedSlide","slidesPerView","slideToIndex","loopCreate","blankSlidesNum","blankNode","prependSlides","appendSlides","loopFix","loopedSlides","allowSlidePrev","allowSlideNext","diff","loopDestroy","loop","setGrabCursor","moving","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","onTouchStart","touches","$targetEl","swipingClassHasValue","eventPath","noSwipingSelector","isTargetShadow","startX","startY","edgeSwipeDetection","edgeSwipeThreshold","shouldPreventDefault","onTouchMove","targetTouch","pageX","pageY","diffX","diffY","touchAngle","disableParentSwiper","resistanceRatio","onTouchEnd","touchEndTime","timeDiff","pathTree","currentPos","stopIndex","groupSize","rewindFirstIndex","rewindLastIndex","ratio","onResize","onClick","onScroll","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","passiveListener","attachEvents","detachEvents","events$1","isGridEnabled","setBreakpoint","initialized","breakpoints","breakpoint","breakpointParams","wasMultiRow","isMultiRow","wasEnabled","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","isEnabled","getBreakpoint","containerEl","currentHeight","points","point","minRatio","prepareClasses","prefix","resultClasses","item","addClasses","suffixes","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","preloadImages","images","checkOverflow","wasLocked","slidesOffsetBefore","lastSlideIndex","lastSlideRightEdge","checkOverflow$1","defaults","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","prototypes","extendedDefaults","Swiper","swipers","newParams","mod","swiperParams","touch","desktop","min","cls","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","getWrapperSelector","wrapper","deleteInstance","cleanStyles","newDefaults","modules","module","prototypeGroup","protoMethod","Virtual","cssModeTimeout","renderSlide","$slideEl","force","slidesPerGroup","centeredSlides","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","slidesToRender","prependIndexes","appendIndexes","appendSlide","prependSlide","numberOfNewSlides","cache","newCache","cachedIndex","$cachedEl","cachedElIndex","removeSlide","slidesIndexes","removeAllSlides","Keyboard","handle","kc","pageUpDown","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","enable","disable","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","sX","sY","pX","pY","handleMouseEnter","handleMouseLeave","animateSlider","newEvent","releaseScroll","delta","rtlFactor","positions","prevEvent","ignoreWheelEvents","position","firstEvent","snapToThreshold","createElementIfNotDefined","originalParams","checkProps","Navigation","getEl","toggleEl","disabled","$nextEl","$prevEl","onPrevClick","onNextClick","_s","targetEl","isHidden","classesToSelector","Pagination","pfx","number","bulletSize","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","bulletActiveClass","total","bullets","firstIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","Scrollbar","isTouched","dragTimeout","dragStartPos","dragSize","trackSize","divider","scrollbar","$dragEl","newSize","newPos","getPointerPosition","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","touchEventsTouch","touchEventsDesktop","activeListener","eventMethod","enableDraggable","disableDraggable","$swiperEl","Parallax","setTransform","opacity","currentOpacity","currentScale","parallaxEl","$parallaxEl","parallaxDuration","_swiper","Zoom","isScaling","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","gesture","velocity","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","onGestureChange","zoom","onGestureEnd","scaledWidth","scaledHeight","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","slideWidth","slideHeight","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","Lazy","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","$imageEl","background","$pictureEl","sourceEl","$source","slideOriginalIndex","originalSlide","duplicatedSlide","load","slideExist","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","cssMode","watchSlidesProgress","touchReleaseOnEdges","Controller","LinearSpline","binarySearch","guess","array","i1","i3","getInterpolateFunction","controlled","controlledTranslate","setControlledTranslate","setControlledTransition","removeSpline","A11y","liveRegion","notify","message","notification","getRandomNumber","randomChar","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElControls","controls","addElLabel","addElId","addElLive","live","disableEl","enableEl","onEnterOrSpaceKey","updateNavigation","hasPagination","hasClickablePagination","updatePagination","bulletEl","initNavEl","wrapperId","handlePointerDown","handlePointerUp","handleFocus","isVisible","initSlides","ariaLabelMessage","$containerEl","History","paths","slugify","getPathValues","urlOverride","location","pathArray","part","setHistory","root","currentState","scrollToSlide","setHistoryPopState","HashNavigation","onHashChange","newHash","activeSlideHash","setHash","Autoplay","run","$activeSlideEl","autoplayResult","stop","pause","onVisibilityChange","onMouseEnter","onMouseLeave","attachMouseEvents","detachMouseEvents","Thumb","swiperCreated","onThumbClick","thumbsSwiper","clickedIndex","clickedSlide","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","autoScrollOffset","useOffset","currentThumbsIndex","newThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbs","freeMode","once","lastMoveEvent","velocityEvent","distance","momentumDistance","newPosition","doBounce","afterBouncePosition","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","rows","fill","updateSlide","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","updateWrapperSize","roundLengths","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","indexToRemove","Manipulation","effectInit","effect","overwriteParams","perspective","recreateShadows","getEffectParams","overwriteParamsResult","requireUpdateOnVirtual","effectTarget","effectParams","effectVirtualTransitionEnd","transformEl","allSlides","eventTriggered","$transitionEndTarget","triggerEvents","EffectFade","tx","ty","slideOpacity","EffectCube","createSlideShadows","shadowBefore","shadowAfter","wrapperRotate","$cubeShadowEl","slideAngle","round","tz","shadowAngle","scale1","scale2","zFactor","createShadow","shadowClass","$shadowContainer","$shadowEl","EffectFlip","rotateY","rotateX","EffectCoverflow","center","rotate","centerOffset","offsetMultiplier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","EffectCreative","isCenteredSlides","margin","originalProgress","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","EffectCards","startTranslate","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","Thumbs","FreeMode","cityData","d4","subOption","detectSync","controlElements","disabledEl","setSelectDisplay","valueIndex","placeholder","allLi","option","li","activeLi","tagEl","valueArray","loadCityData","lang","city","loadDistData","dist","closeAllDropdown","settingScrollbarStyle","Dropdown4","valueLiArray","valueIndexArray","dropdownHeight","hasFilter","totalHeight","allSublayer","defaultHeight","scroll","valueLi","cityDropdown","cityDropdownHasVal","toggleTransitionend","dropdownStatus","scrollToActive","halfActiveLiHeight","offsetTop","computedHeight","citySelect","clickOption","clickIndex","subDropdown","subDropdownList","subDropdownListMargin","subDropdownH","maxHeight","recalculate","distSelectEl","activeLiArray","_tabSet","tabSet_fn","_getTabIndex","getTabIndex_fn","_createSwiper","createSwiper_fn","_initSwiper","initSwiper_fn","_addUrl","addUrl_fn","_eventAnchor","eventAnchor_fn","_goAnchor","goAnchor_fn","_step","step_fn","_btnNextState","btnNextState_fn","_btnPrevState","btnPrevState_fn","_tabState","tabState_fn","_isTrue","isTrue_fn","_animationHide","animationHide_fn","_animationShow","animationShow_fn","_stateChange","stateChange_fn","_resizeTab","resizeTab_fn","Tab4","clickedTab","indexOf","newTabId","defaultID","newTabIndex","panel","tabIndex","nextPage","nextPageId","prevPage","prevPageId","changeEvent","matchingTabs","tabs","tabPanelsWithId","tabPanel","swiperContainer","swiperWrapper","sContainer","sWrapper","tabPanels","totalWidth","newUrl","pageYOffset","changeOffset","newPage","isSinglePage","isLastPage","btn","isFirstPage","tabId","tab","fun","val2","timing","_this_","targetElements","isTarget","tabControl","tabElName","tabEls","collapseHandle","$wrapper","collapseClass","expandHandle","Collapse4","block","defaultOpen","targetStopPropagation","defaultActiveMark","single","createRipple","r4","button","color","ripples","removeStyle","_ball","ball_fn","Ripple4","attrToBoolean","booleanVal","ball","operateStart","operateEnd","posX","posY","offsetHeight","rippleR","noImageDom","div","slash1","slash2","slashWidth","theta","errorImage","wrapWidth","wrapHeight","wrapDIV","parentsPosition","imageResize","noImage","createCallbackFunction","attributeValue","defaultValue","input","file","preview","group","inputIndex","fileExt","fileName","blob","imgFile","createCanvas","outputW","outputH","canvas","ctx","originalWidth","originalRatio","outputRatio","convertImg","dataUrl","resolve","reject","checkSize","sizeLimit","fileSize","readFileHandler","parentsEl","reader","inputs"],"mappings":"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Cb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,IACd;AAAA,IACD,KAAK;AAAA,MACH,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,IACd;AAAA,IACD,KAAK;AAAA,MACH,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,IACd;AAAA,IACD,KAAK;AAAA,MACH,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MA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Cb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,IACd;AAAA,IACD,KAAK;AAAA,MACH,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,IACd;AAAA,IACD,KAAK;AAAA,MACH,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,IACd;AAAA,IACD,KAAK;AAAA,MACH,CAAC,MAAM,KAAK;AAAA,MACZ,CAAC,MAAM,KAAK;AAAA,IACb;AAAA,IACD,KAAK;AAAA,MACH,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,QAAQ,KAAK;AAAA,MACd,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,IACd;AAAA,IACD,KAAK;AAAA,MACH,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,MAAM,KAAK;AAAA,MACZ,CAAC,MAAM,KAAK;AAAA,MACZ,CAAC,MAAM,KAAK;AAAA,MACZ,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,IACd;AAAA,IACD,KAAK;AAAA,MACH,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MACb,CAAC,OAAO,KAAK;AAAA,MA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","x_google_ignoreList":[5,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139]}