@xwadex/fesd 0.0.1-4.1.rc → 0.0.1-4.10.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/fesd/configs/config.js","../../src/fesd/commons/utils.js","../../src/fesd/commons/events.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","../../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/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","../../node_modules/.pnpm/colorthief@2.4.0/node_modules/colorthief/dist/color-thief.mjs","../../node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/esm/types/options.js","../../node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/esm/l10n/default.js","../../node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/esm/utils/index.js","../../node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/esm/utils/dom.js","../../node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/esm/utils/formatting.js","../../node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/esm/utils/dates.js","../../node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/esm/utils/polyfills.js","../../node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/esm/index.js","../../node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/l10n/zh.js","../../src/fesd/video4/video4.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":["export const 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\nexport const share4 = {\n SETTINGS: {\n success: null,\n text: null,\n className: null,\n duration: 1500,\n },\n}\n\nexport const 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\nexport const 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\nexport const 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 ${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\nexport const article4 = {\n SETTINGS: {\n basic_rwd: 900,\n },\n}\n\nexport const 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\nexport const 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\nexport const 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\nexport const 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\nexport const 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\nexport const 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\n\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 { isFunction } 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 { configs } from '../configs'\nimport {\n EVENTS,\n isString,\n isElementExist,\n isFunction,\n getElement,\n getAllElements\n} from '../commons'\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 } = configs.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 } = configs.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 } = configs.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, EVENTS);\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 { configs } from '../configs'\nimport { EVENTS, createUid, warn } from '../commons'\nimport { OverlayScrollbars } from 'overlayscrollbars'\n\nif (!window.MODALS) window.MODALS = {};\n\nconst { MODALS } = window;\n\n// create template method\nconst createTemplate = el => {\n const { TEMPLATE } = configs.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 } = configs.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 } = configs.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 } = configs.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, EVENTS);\n\nexport default ModernModal;\n","import { configs } from '../configs'\nimport ModernModal from './modernModal'\nimport {\n EVENTS,\n isString,\n isElementExist,\n isFunction,\n getElement,\n getAllElements,\n toHTMLElement,\n jsonParse, warn\n} from '../commons'\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(configs.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 } = configs.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 } = configs.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, EVENTS);\n\nexport default Modal4;\n","import { configs } from '../configs'\nimport {\n EVENTS,\n isString,\n isElementExist,\n getElement,\n getAllElements\n} from '../commons'\n\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 } = configs.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, EVENTS);\n\nexport default Aost4;\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","import { configs } from '../configs'\nimport { insert, warn } from '../commons'\n\n// create template method\nconst createTemplate = el => {\n const { TEMPLATE } = configs.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=\"${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 { Aost4, Anchor4, ImageValidate, ImagePreview } from '../fesd'\nimport LazyLoad from 'vanilla-lazyload'\nimport { lock, unlock } from 'tua-body-scroll-lock'\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}","if(!t)var t={map:function(t,r){var n={};return r?t.map(function(t,o){return n.index=o,r.call(n,t)}):t.slice()},naturalOrder:function(t,r){return t<r?-1:t>r?1:0},sum:function(t,r){var n={};return t.reduce(r?function(t,o,e){return n.index=e,t+r.call(n,o)}:function(t,r){return t+r},0)},max:function(r,n){return Math.max.apply(null,n?t.map(r,n):r)}};var r=function(){var r=5,n=8-r,o=1e3;function e(t,n,o){return(t<<2*r)+(n<<r)+o}function u(t){var r=[],n=!1;function o(){r.sort(t),n=!0}return{push:function(t){r.push(t),n=!1},peek:function(t){return n||o(),void 0===t&&(t=r.length-1),r[t]},pop:function(){return n||o(),r.pop()},size:function(){return r.length},map:function(t){return r.map(t)},debug:function(){return n||o(),r}}}function a(t,r,n,o,e,u,a){var i=this;i.r1=t,i.r2=r,i.g1=n,i.g2=o,i.b1=e,i.b2=u,i.histo=a}function i(){this.vboxes=new u(function(r,n){return t.naturalOrder(r.vbox.count()*r.vbox.volume(),n.vbox.count()*n.vbox.volume())})}function c(r,n){if(n.count()){var o=n.r2-n.r1+1,u=n.g2-n.g1+1,a=t.max([o,u,n.b2-n.b1+1]);if(1==n.count())return[n.copy()];var i,c,f,s,h=0,v=[],l=[];if(a==o)for(i=n.r1;i<=n.r2;i++){for(s=0,c=n.g1;c<=n.g2;c++)for(f=n.b1;f<=n.b2;f++)s+=r[e(i,c,f)]||0;v[i]=h+=s}else if(a==u)for(i=n.g1;i<=n.g2;i++){for(s=0,c=n.r1;c<=n.r2;c++)for(f=n.b1;f<=n.b2;f++)s+=r[e(c,i,f)]||0;v[i]=h+=s}else for(i=n.b1;i<=n.b2;i++){for(s=0,c=n.r1;c<=n.r2;c++)for(f=n.g1;f<=n.g2;f++)s+=r[e(c,f,i)]||0;v[i]=h+=s}return v.forEach(function(t,r){l[r]=h-t}),function(t){var r,o,e,u,a,c=t+\"1\",f=t+\"2\",s=0;for(i=n[c];i<=n[f];i++)if(v[i]>h/2){for(e=n.copy(),u=n.copy(),a=(r=i-n[c])<=(o=n[f]-i)?Math.min(n[f]-1,~~(i+o/2)):Math.max(n[c],~~(i-1-r/2));!v[a];)a++;for(s=l[a];!s&&v[a-1];)s=l[--a];return e[f]=a,u[c]=e[f]+1,[e,u]}}(a==o?\"r\":a==u?\"g\":\"b\")}}return a.prototype={volume:function(t){var r=this;return r._volume&&!t||(r._volume=(r.r2-r.r1+1)*(r.g2-r.g1+1)*(r.b2-r.b1+1)),r._volume},count:function(t){var r=this,n=r.histo;if(!r._count_set||t){var o,u,a,i=0;for(o=r.r1;o<=r.r2;o++)for(u=r.g1;u<=r.g2;u++)for(a=r.b1;a<=r.b2;a++)i+=n[e(o,u,a)]||0;r._count=i,r._count_set=!0}return r._count},copy:function(){var t=this;return new a(t.r1,t.r2,t.g1,t.g2,t.b1,t.b2,t.histo)},avg:function(t){var n=this,o=n.histo;if(!n._avg||t){var u,a,i,c,f=0,s=1<<8-r,h=0,v=0,l=0;for(a=n.r1;a<=n.r2;a++)for(i=n.g1;i<=n.g2;i++)for(c=n.b1;c<=n.b2;c++)f+=u=o[e(a,i,c)]||0,h+=u*(a+.5)*s,v+=u*(i+.5)*s,l+=u*(c+.5)*s;n._avg=f?[~~(h/f),~~(v/f),~~(l/f)]:[~~(s*(n.r1+n.r2+1)/2),~~(s*(n.g1+n.g2+1)/2),~~(s*(n.b1+n.b2+1)/2)]}return n._avg},contains:function(t){var r=this,o=t[0]>>n;return gval=t[1]>>n,bval=t[2]>>n,o>=r.r1&&o<=r.r2&&gval>=r.g1&&gval<=r.g2&&bval>=r.b1&&bval<=r.b2}},i.prototype={push:function(t){this.vboxes.push({vbox:t,color:t.avg()})},palette:function(){return this.vboxes.map(function(t){return t.color})},size:function(){return this.vboxes.size()},map:function(t){for(var r=this.vboxes,n=0;n<r.size();n++)if(r.peek(n).vbox.contains(t))return r.peek(n).color;return this.nearest(t)},nearest:function(t){for(var r,n,o,e=this.vboxes,u=0;u<e.size();u++)((n=Math.sqrt(Math.pow(t[0]-e.peek(u).color[0],2)+Math.pow(t[1]-e.peek(u).color[1],2)+Math.pow(t[2]-e.peek(u).color[2],2)))<r||void 0===r)&&(r=n,o=e.peek(u).color);return o},forcebw:function(){var r=this.vboxes;r.sort(function(r,n){return t.naturalOrder(t.sum(r.color),t.sum(n.color))});var n=r[0].color;n[0]<5&&n[1]<5&&n[2]<5&&(r[0].color=[0,0,0]);var o=r.length-1,e=r[o].color;e[0]>251&&e[1]>251&&e[2]>251&&(r[o].color=[255,255,255])}},{quantize:function(f,s){if(!f.length||s<2||s>256)return!1;var h=function(t){var o,u=new Array(1<<3*r);return t.forEach(function(t){o=e(t[0]>>n,t[1]>>n,t[2]>>n),u[o]=(u[o]||0)+1}),u}(f);h.forEach(function(){});var v=function(t,r){var o,e,u,i=1e6,c=0,f=1e6,s=0,h=1e6,v=0;return t.forEach(function(t){(o=t[0]>>n)<i?i=o:o>c&&(c=o),(e=t[1]>>n)<f?f=e:e>s&&(s=e),(u=t[2]>>n)<h?h=u:u>v&&(v=u)}),new a(i,c,f,s,h,v,r)}(f,h),l=new u(function(r,n){return t.naturalOrder(r.count(),n.count())});function g(t,r){for(var n,e=t.size(),u=0;u<o;){if(e>=r)return;if(u++>o)return;if((n=t.pop()).count()){var a=c(h,n),i=a[0],f=a[1];if(!i)return;t.push(i),f&&(t.push(f),e++)}else t.push(n),u++}}l.push(v),g(l,.75*s);for(var p=new u(function(r,n){return t.naturalOrder(r.count()*r.volume(),n.count()*n.volume())});l.size();)p.push(l.pop());g(p,s);for(var b=new i;p.size();)b.push(p.pop());return b}}}().quantize,n=function(t){this.canvas=document.createElement(\"canvas\"),this.context=this.canvas.getContext(\"2d\"),this.width=this.canvas.width=t.naturalWidth,this.height=this.canvas.height=t.naturalHeight,this.context.drawImage(t,0,0,this.width,this.height)};n.prototype.getImageData=function(){return this.context.getImageData(0,0,this.width,this.height)};var o=function(){};o.prototype.getColor=function(t,r){return void 0===r&&(r=10),this.getPalette(t,5,r)[0]},o.prototype.getPalette=function(t,o,e){var u=function(t){var r=t.colorCount,n=t.quality;if(void 0!==r&&Number.isInteger(r)){if(1===r)throw new Error(\"colorCount should be between 2 and 20. To get one color, call getColor() instead of getPalette()\");r=Math.max(r,2),r=Math.min(r,20)}else r=10;return(void 0===n||!Number.isInteger(n)||n<1)&&(n=10),{colorCount:r,quality:n}}({colorCount:o,quality:e}),a=new n(t),i=function(t,r,n){for(var o,e,u,a,i,c=t,f=[],s=0;s<r;s+=n)e=c[0+(o=4*s)],u=c[o+1],a=c[o+2],(void 0===(i=c[o+3])||i>=125)&&(e>250&&u>250&&a>250||f.push([e,u,a]));return f}(a.getImageData().data,a.width*a.height,u.quality),c=r(i,u.colorCount);return c?c.palette():null},o.prototype.getColorFromUrl=function(t,r,n){var o=this,e=document.createElement(\"img\");e.addEventListener(\"load\",function(){var u=o.getPalette(e,5,n);r(u[0],t)}),e.src=t},o.prototype.getImageData=function(t,r){var n=new XMLHttpRequest;n.open(\"GET\",t,!0),n.responseType=\"arraybuffer\",n.onload=function(){if(200==this.status){var t=new Uint8Array(this.response);i=t.length;for(var n=new Array(i),o=0;o<t.length;o++)n[o]=String.fromCharCode(t[o]);var e=n.join(\"\"),u=window.btoa(e);r(\"data:image/png;base64,\"+u)}},n.send()},o.prototype.getColorAsync=function(t,r,n){var o=this;this.getImageData(t,function(t){var e=document.createElement(\"img\");e.addEventListener(\"load\",function(){var t=o.getPalette(e,5,n);r(t[0],this)}),e.src=t})};export{o as default};\n","export var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport var defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n","export var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n","export var pad = function (number, length) {\n if (length === void 0) { length = 2; }\n return (\"000\" + number).slice(length * -1);\n};\nexport var int = function (bool) { return (bool === true ? 1 : 0); };\nexport function debounce(fn, wait) {\n var t;\n return function () {\n var _this = this;\n var args = arguments;\n clearTimeout(t);\n t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n };\n}\nexport var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n};\n","export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n","import { int, pad } from \"../utils\";\nvar doNothing = function () { return undefined; };\nexport var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexport var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport var tokenRegex = {\n D: \"\",\n F: \"\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport var formats = {\n Z: function (date) { return date.toISOString(); },\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: function (date) { return pad(date.getHours()); },\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: function (date) { return pad(date.getSeconds()); },\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: function (date) { return pad(date.getFullYear(), 4); },\n d: function (date) { return pad(date.getDate()); },\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n i: function (date) { return pad(date.getMinutes()); },\n j: function (date) { return date.getDate(); },\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: function (date) { return pad(date.getMonth() + 1); },\n n: function (date) { return date.getMonth() + 1; },\n s: function (date) { return date.getSeconds(); },\n u: function (date) { return date.getTime(); },\n w: function (date) { return date.getDay(); },\n y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n};\nexport var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (config && config.parseDate) {\n parsedDate = config.parseDate(date, format);\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr)) {\n parsedDate = new Date(date);\n }\n else {\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token = format[i];\n var isBackSlash = token === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n }\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n};\nexport function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function (secondsSinceMidnight) {\n var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n var hours = config.defaultHour;\n var minutes = config.defaultMinute;\n var seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n var minHour = config.minDate.getHours();\n var minMinutes = config.minDate.getMinutes();\n var minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n var maxHr = config.maxDate.getHours();\n var maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours: hours, minutes: minutes, seconds: seconds };\n}\n","\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign(__assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self.onMouseOver = onMouseOver;\n self._createElement = createElement;\n self.createDay = createDay;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.updateValue = updateValue;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function getClosestActiveElement() {\n var _a;\n return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n .activeElement || document.activeElement);\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n var defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n var defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (self.config.maxTime !== undefined &&\n self.config.minTime !== undefined &&\n self.config.minTime > self.config.maxTime) {\n var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n if (currentTime > maxBound && currentTime < minBound) {\n var result = parseSeconds(minBound);\n hours = result[0];\n minutes = result[1];\n seconds = result[2];\n }\n }\n else {\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date && date instanceof Date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n var eventTarget = getEventTarget(event);\n var year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: function () { return element.removeEventListener(event, handler, options); },\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(self._input, \"keydown\", onKeyDown);\n if (self.calendarContainer !== undefined) {\n bind(self.calendarContainer, \"keydown\", onKeyDown);\n }\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return getEventTarget(e).select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", function (e) {\n updateTime(e);\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n var eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n var target = e && getEventTarget(e);\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, _dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n i % 7 === 6) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var activeElement = getClosestActiveElement();\n var dayFocused = isInView(activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = getEventTarget(e);\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n var defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n <span class='flatpickr-weekday'>\\n \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n </span>\\n \";\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers,\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n if (self.config.allowInput) {\n self.setDate(self._input.value, false, self.config.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1)\n self.clear(false);\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n var _a;\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n var isInput = e.target === self._input;\n var valueChanged = self._input.value.trimEnd() !== getDateStr();\n if (isInput &&\n valueChanged &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n var eventTarget = getEventTarget(e);\n var isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n self.close();\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n var activeElement = getClosestActiveElement();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (activeElement && isInView(activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(eventTarget);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem, cellClass) {\n if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(cellClass) ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n hoverableCells.forEach(function (dayElem) {\n var date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return;\n }\n else if (containsDisabled && !outOfRange)\n return;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n });\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n var eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n },\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\"),\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset + inputBounds.left;\n var isCenter = false;\n var isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n var right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n var editableSheet = null;\n for (var i = 0; i < document.styleSheets.length; i++) {\n var sheet = document.styleSheets[i];\n if (!sheet.cssRules)\n continue;\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n var style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n positionElement: [updatePositionElement],\n clickOpens: [\n function () {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter(function (x) { return x; });\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n updatePositionElement();\n }\n function updatePositionElement() {\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n var selectedDate = self.selectedDates[i];\n if (selectedDate instanceof Date &&\n compareDates(selectedDate, date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(specificFormat) {\n var format = specificFormat ||\n (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var eventTarget = getEventTarget(e);\n var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n var isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: __assign({}, English),\n default: __assign({}, English),\n};\nflatpickr.localize = function (l10n) {\n flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.zh = {}));\n}(this, (function (exports) { 'use strict';\n\n var fp = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {},\n };\n var Mandarin = {\n weekdays: {\n shorthand: [\"周日\", \"周一\", \"周二\", \"周三\", \"周四\", \"周五\", \"周六\"],\n longhand: [\n \"星期日\",\n \"星期一\",\n \"星期二\",\n \"星期三\",\n \"星期四\",\n \"星期五\",\n \"星期六\",\n ],\n },\n months: {\n shorthand: [\n \"一月\",\n \"二月\",\n \"三月\",\n \"四月\",\n \"五月\",\n \"六月\",\n \"七月\",\n \"八月\",\n \"九月\",\n \"十月\",\n \"十一月\",\n \"十二月\",\n ],\n longhand: [\n \"一月\",\n \"二月\",\n \"三月\",\n \"四月\",\n \"五月\",\n \"六月\",\n \"七月\",\n \"八月\",\n \"九月\",\n \"十月\",\n \"十一月\",\n \"十二月\",\n ],\n },\n rangeSeparator: \" 至 \",\n weekAbbreviation: \"周\",\n scrollTitle: \"滚动切换\",\n toggleTitle: \"点击切换 12/24 小时时制\",\n };\n fp.l10ns.zh = Mandarin;\n var zh = fp.l10ns;\n\n exports.Mandarin = Mandarin;\n exports.default = zh;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","import { configs } from '../configs'\nimport Modal4 from '../modal4'\nimport videoPlayer from './videoPlayer'\nimport { scrollLock, scrollUnlock } from \"@/tools\"\nimport {\n EVENTS,\n isString,\n isElement,\n isNodeList,\n getAllElements,\n warn,\n error,\n insert\n} from '../commons'\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 // 從 configs 提取設定\n const { SETTINGS, EVENTS } = configs.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 } = configs.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 } = configs.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, EVENTS);\n\nexport default video4;\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 { configs } from '../configs'\nimport {\n EVENTS,\n isElementExist,\n getElement,\n getAllElements,\n insert,\n warn\n} from '../commons'\nimport { cityData } from './cityData'\nimport { OverlayScrollbars } from 'overlayscrollbars'\n\n('use strict');\n\n// create template method\nconst createTemplate = d4 => {\n const { TEMPLATE } = configs.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 } = configs.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, EVENTS);\n\n// define custom element\n// if (!customElements.get('dropdown-el')) {\n// customElements.define('dropdown-el', Dropdown4);\n// }\n\nexport default Dropdown4;\n","import { configs } from '../configs'\nimport { EVENTS, isElement } from '../commons'\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 } = configs.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, EVENTS);\n\n// if (!customElements.get('tab-el')) {\n// customElements.define('tab-el', Tab4);\n// }\n\nexport default Tab4;\n","import { configs } from '../configs'\nimport {\n EVENTS,\n isString,\n isElement,\n isNodeList,\n isElementExist,\n isFunction,\n getElement,\n getAllElements,\n createUid,\n toHTMLElement,\n jsonParse,\n warn,\n error\n} from '../commons'\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 } = configs.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, EVENTS);\n\nexport default Collapse4;\n","import { configs } from '../configs'\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 } = configs.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\nexport default class 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\n"],"names":["video4","share4","modal4","type","marquee4","dropdown4","filter","filterPlaceholder","article4","aost4","anchor4","multipurpose4","collapse","dropdown","tab4","collapse4","ripple4","insert","isString","value","isElement","isNodeList","isElementExist","getElement","isFunction","getAllElements","createUid","toHTMLElement","str","dom","jsonParse","json","warn","target","msg","error","EVENTS","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","configs.anchor4","newOptions","targetName","k","v","defaultOptions","eventHandler","createCache","o","s","e","r","cacheUpdateContextual","n","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","configs.modal4","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","configs.aost4","extend","src","key","ssrDocument","getDocument","doc","ssrWindow","callback","getWindow","win","makeReactive","proto","Dom7","items","arrayFlat","arr","arrayFilter","arrayUnique","uniqueArray","qsa","selector","context","window","document","html","toCreate","tempParent","classes","classNames","toggleClass","hasClass","attrs","attrName","removeAttr","transform","transition","duration","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","parents","handleEvent","off","handlers","trigger","dataIndex","transitionEnd","fireCallBack","outerWidth","includeMargins","styles","outerHeight","offset","box","body","clientTop","clientLeft","scrollTop","scrollLeft","css","props","prop","result","text","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","now","getComputedStyle","style","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","isNode","node","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","setCSSProperty","varName","varValue","animateCSSModeScroll","swiper","targetPosition","side","startPosition","startTime","time","dir","isOutOfBound","current","animate","progress","easeProgress","currentPosition","support","calcSupport","supportsPassive","opts","getSupport","deviceCached","calcDevice","userAgent","platform","ua","device","screenWidth","screenHeight","android","ipad","ipod","iphone","windows","macos","iPadScreens","getDevice","overrides","browser","calcBrowser","isSafari","getBrowser","Resize","emit","observer","animationFrame","resizeHandler","createObserver","entries","width","height","newWidth","newHeight","contentBoxSize","contentRect","removeObserver","orientationChangeHandler","Observer","extendParams","observers","attach","ObserverFunc","mutations","observerUpdate","init","containerParents","eventsEmitter","priority","self","method","updateSize","$el","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","params","$wrapperEl","swiperSize","rtl","wrongRTL","isVirtual","previousSlidesLength","slides","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","gridEnabled","slideSize","shouldResetSlideSize","slide","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","marginLeft","marginRight","boxSizing","clientWidth","offsetWidth","newSlidesGrid","slidesGridItem","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","activeSlides","getSlideByIndex","updateSlidesOffset","updateSlidesProgress","translate","offsetCenter","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","updateProgress","multiplier","translatesDiff","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeIndex","realIndex","activeSlide","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","skip","updateClickedSlide","slideFound","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","$selector","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$1","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","prototypes","extendedDefaults","Swiper","swipers","newParams","mod","swiperParams","defaults","touch","desktop","min","cls","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","getWrapperSelector","wrapper","deleteInstance","cleanStyles","newDefaults","modules","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","timeout","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","sX","sY","pX","pY","handleMouseEnter","handleMouseLeave","animateSlider","newEvent","releaseScroll","delta","rtlFactor","positions","prevEvent","ignoreWheelEvents","position","firstEvent","snapToThreshold","createElementIfNotDefined","originalParams","checkProps","element","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","lazy","cssMode","watchSlidesProgress","touchReleaseOnEdges","Controller","LinearSpline","binarySearch","guess","array","i1","i3","getInterpolateFunction","controlled","controlledTranslate","setControlledTranslate","setControlledTransition","removeSpline","A11y","liveRegion","notify","message","notification","getRandomNumber","size","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","isActive","isVisible","initSlides","ariaLabelMessage","$containerEl","History","paths","slugify","getPathValues","urlOverride","location","pathArray","part","setHistory","root","currentState","scrollToSlide","setHistoryPopState","HashNavigation","onHashChange","newHash","activeSlideHash","setHash","hash","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","configs.video4","_youtube","youtube_fn","_vimeo","vimeo_fn","_youku","youku_fn","_bilibili","bilibili_fn","videoPlayer","videoType","layout","videoId","autoplay","isServer","detectOS","ios","getEventListenerOptions","isSupportOptions","listenerOptions","testEvent","noticeRequiredTargetElement","targetElement","getPreventEventDefault","initialLockState","getLockState","lockState","handleScroll","initialClientPos","scrollWidth","scrollHeight","clientHeight","clientX","clientY","isVertical","isOnTop","isOnLeft","isOnRight","isOnBottom","setOverflowHiddenPc","$html","htmlStyle","scrollBarWidth","previousPaddingRight","setOverflowHiddenMobile","$body","bodyStyle","supportsNativeSmoothScroll","eventListenerOptions","lock","elementArray","_event$targetTouches$","unlock","scrollLock","elementArr","scrollUnlock","loading","loaded","imagePreview","ImagePreview","ajaxUpdate","LazyLoad","img","imageValidate","ImageValidate","tabChange","bodyScrollbarInit","appleDebug","detectMacOSVersion","clickToggleClass","clickSwitchClass","func","timer","throttle","last","countDown","set_seconds","set_time","minutes","seconds","fixMobile100vh","vh","wordAnimation","isWrap","delayStartTime","delaySpace","randomTransTime","$this","removeBr","newText","words","letter","formatFloat","num","pos","getSlideDataIndex","slidesLen","getSlidesCount","disableNum","gridRows","disableCount","slideImgDetect","isVideo","video","allVideo","numberGrow","ele","splitNum","zeroToNine","letterGrow","splitLetter","aToZ","getTransformX","mat","getTransformY","HOOKS","err","givenDate","date","week1","english","nth","pad","int","bool","fn","wait","_this","arrayify","elem","createElement","tag","clearNode","findParent","condition","createNumberInput","inputClassName","numInput","arrowUp","arrowDown","getEventTarget","path","doNothing","monthToStr","monthNumber","shorthand","locale","revFormat","dateObj","monthName","hour","day","amPM","shortMonth","unixSeconds","weekNum","weekNumber","year","ISODate","month","unixMillSeconds","tokenRegex","formats","createDateFormatter","config","l10n","_d","isMobile","frmt","overrideLocale","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","format","datestr","matched","ops","matchIndex","regexStr","token","isBackSlash","escaped","match","compareDates","date1","date2","isBetween","ts","ts1","ts2","calculateSecondsSinceMidnight","hours","parseSeconds","secondsSinceMidnight","getDefaultHours","minHour","minMinutes","minSeconds","maxHr","maxMinutes","_i","_loop_1","source","args_1","__assign","__spreadArrays","il","jl","DEBOUNCED_CHANGE_MS","FlatpickrInstance","instanceConfig","flatpickr","English","setHoursFromDate","positionCalendar","changeMonth","changeYear","clear","onMouseOver","createDay","jumpToDate","updateValue","open","redraw","set","setDate","toggle","setupHelperFunctions","yr","parseConfig","setupLocale","setupInputs","setupDates","build","bindEvents","setCalendarWidth","getClosestActiveElement","bindToInstance","daysWidth","updateTime","defaultDate","timeWrapper","prevValue","setHoursFromInputs","ampm2military","military2ampm","limitMinHours","limitMaxHours","minBound","maxBound","maxTime","minTime","setHours","onYearInput","eventTarget","ev","triggerChange","setupMobile","debouncedResize","onKeyDown","documentClick","onMonthNavClick","selectDate","selText","timeIncrement","onBlur","jumpDate","jumpTo","oldYear","oldMonth","buildMonthSwitch","incrementNumInput","inputElem","input","createEvent","fragment","buildMonthNav","buildWeeks","weekWrapper","weekNumbers","buildWeekdays","buildDays","buildTime","customAppend","_dayNumber","dateIsEnabled","dayElement","isDateSelected","isDateInRange","focusOnDayElem","targetNode","getFirstAvailableDay","startMonth","endMonth","startIndex","endIndex","getNextAvailableDay","givenMonth","loopDelta","numMonthDays","focusOnDay","activeElement","dayFocused","isInView","startElem","buildMonthDays","firstOfMonth","prevMonthDays","daysInMonth","days","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayNumber","dayIndex","dayNum","dayContainer","frag","shouldBuildMonth","buildMonth","monthNavFragment","monthElement","selectedMonth","yearInput","yearElement","currentMonth","buildMonths","updateNavigationCurrentMonth","separator","hourInput","minuteInput","secondInput","updateWeekdays","firstDayOfWeek","weekdays","isOffset","triggerChangeEvent","toInitial","isCalendarElem","eventTarget_1","isCalendarElement","isInput","lostFocus","isIgnored","newYear","newYearNum","isNewYear","dateToCheck","parsed","valueChanged","getDateStr","allowInput","allowKeydown","allowInlineKeydown","isTimeObj","focusAndClose","delta_1","elems","cellClass","hoverDate","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","hoverableCells","dayElem","timestamp","outOfRange","positionElement","wasOpen","minMaxDateSetter","inverseDateObj","boolOpts","userConfig","dates","parseDateRules","timeMode","defaultDateFormat","defaultAltFormat","minMaxTimeSetter","hook","pluginConf","getInputElem","customPositionElement","calendarHeight","acc","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","distanceFromBottom","showOnTop","left","isCenter","isRight","right","rightMost","centerMost","getDocumentStyleSheet","bodyWidth","centerLeft","centerBefore","centerAfter","centerIndex","centerStyle","editableSheet","sheet","createStyleSheet","isSelectable","selectedDate","shouldChangeMonth","selectedIndex","single","range","CALLBACKS","updatePositionElement","option","setSelectedDate","inputDate","rule","preloadedDate","inputType","hooks","specificFormat","dObj","isPrevMonth","isNextMonth","isKeyDown","max","curValue","newValue","isHourElem","isMinuteElem","_flatpickr","nodeList","nodes","instances","global","factory","exports","this","fp","Mandarin","zh","hasVideoID","createPlayer","_createCover","createCover_fn","_getVideoData","getVideoData_fn","LAYOUT","videoLayoutNo","videoMode","videoButton","videoCover","$target","$cover","videoTarget","videoTargetRoute","scrollers","cityData","d4","configs.dropdown4","subOption","detectSync","controlElements","disabledEl","setSelectDisplay","valueIndex","placeholder","allLi","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","configs.tab4","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","configs.collapse4","block","defaultOpen","targetStopPropagation","defaultActiveMark","createRipple","r4","button","color","ripples","removeStyle","_ball","ball_fn","Ripple4","configs.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","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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ACb,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,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,M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ACH,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,IACd;AAAA,IACD,KAAK;AAAA,M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","x_google_ignoreList":[4,8,9,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,36,37,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,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,138,139,140,141,142,143,144,145,146,147]}