From ae899f8a2313ddb36fae292c748a54253df0976e Mon Sep 17 00:00:00 2001 From: Istarengwa Date: Fri, 13 Mar 2026 00:44:18 +0100 Subject: [PATCH 1/2] add full js function for carroussel --- .../stylesheets/application.bootstrap.scss | 182 +- .../controllers/shop_swiper_controller.js | 126 + .../home_pages/_shop_product_card.html.erb | 6 + app/views/home_pages/index.html.erb | 66 +- package.json | 5 +- vendor/javascript/swiper/LICENSE | 20 + vendor/javascript/swiper/README.md | 11 + .../swiper/modules/a11y-element.css | 9 + .../swiper/modules/a11y-element.min.css | 1 + vendor/javascript/swiper/modules/a11y.css | 9 + vendor/javascript/swiper/modules/a11y.min.css | 1 + vendor/javascript/swiper/modules/a11y.min.mjs | 2 + .../swiper/modules/a11y.min.mjs.map | 1 + vendor/javascript/swiper/modules/a11y.mjs | 378 + .../swiper/modules/autoplay-element.css | 0 .../swiper/modules/autoplay-element.min.css | 0 vendor/javascript/swiper/modules/autoplay.css | 0 .../swiper/modules/autoplay.min.css | 0 .../swiper/modules/autoplay.min.mjs | 2 + .../swiper/modules/autoplay.min.mjs.map | 1 + vendor/javascript/swiper/modules/autoplay.mjs | 306 + .../swiper/modules/controller-element.css | 0 .../swiper/modules/controller-element.min.css | 0 .../javascript/swiper/modules/controller.css | 0 .../swiper/modules/controller.min.css | 0 .../swiper/modules/controller.min.mjs | 2 + .../swiper/modules/controller.min.mjs.map | 1 + .../javascript/swiper/modules/controller.mjs | 190 + .../swiper/modules/effect-cards-element.css | 8 + .../modules/effect-cards-element.min.css | 1 + .../swiper/modules/effect-cards.css | 10 + .../swiper/modules/effect-cards.min.css | 1 + .../swiper/modules/effect-cards.min.mjs | 2 + .../swiper/modules/effect-cards.min.mjs.map | 1 + .../swiper/modules/effect-cards.mjs | 127 + .../modules/effect-coverflow-element.css | 2 + .../modules/effect-coverflow-element.min.css | 0 .../swiper/modules/effect-coverflow.css | 2 + .../swiper/modules/effect-coverflow.min.css | 0 .../swiper/modules/effect-coverflow.min.mjs | 2 + .../modules/effect-coverflow.min.mjs.map | 1 + .../swiper/modules/effect-coverflow.mjs | 103 + .../modules/effect-creative-element.css | 5 + .../modules/effect-creative-element.min.css | 1 + .../swiper/modules/effect-creative.css | 7 + .../swiper/modules/effect-creative.min.css | 1 + .../swiper/modules/effect-creative.min.mjs | 2 + .../modules/effect-creative.min.mjs.map | 1 + .../swiper/modules/effect-creative.mjs | 145 + .../swiper/modules/effect-cube-element.css | 52 + .../modules/effect-cube-element.min.css | 1 + .../javascript/swiper/modules/effect-cube.css | 70 + .../swiper/modules/effect-cube.min.css | 1 + .../swiper/modules/effect-cube.min.mjs | 2 + .../swiper/modules/effect-cube.min.mjs.map | 1 + .../javascript/swiper/modules/effect-cube.mjs | 173 + .../swiper/modules/effect-fade-element.css | 16 + .../modules/effect-fade-element.min.css | 1 + .../javascript/swiper/modules/effect-fade.css | 20 + .../swiper/modules/effect-fade.min.css | 1 + .../swiper/modules/effect-fade.min.mjs | 2 + .../swiper/modules/effect-fade.min.mjs.map | 1 + .../javascript/swiper/modules/effect-fade.mjs | 65 + .../swiper/modules/effect-flip-element.css | 16 + .../modules/effect-flip-element.min.css | 1 + .../javascript/swiper/modules/effect-flip.css | 30 + .../swiper/modules/effect-flip.min.css | 1 + .../swiper/modules/effect-flip.min.mjs | 2 + .../swiper/modules/effect-flip.min.mjs.map | 1 + .../javascript/swiper/modules/effect-flip.mjs | 110 + .../swiper/modules/free-mode-element.css | 4 + .../swiper/modules/free-mode-element.min.css | 1 + .../javascript/swiper/modules/free-mode.css | 4 + .../swiper/modules/free-mode.min.css | 1 + .../swiper/modules/free-mode.min.mjs | 2 + .../swiper/modules/free-mode.min.mjs.map | 1 + .../javascript/swiper/modules/free-mode.mjs | 235 + .../swiper/modules/grid-element.css | 7 + .../swiper/modules/grid-element.min.css | 1 + vendor/javascript/swiper/modules/grid.css | 7 + vendor/javascript/swiper/modules/grid.min.css | 1 + vendor/javascript/swiper/modules/grid.min.mjs | 2 + .../swiper/modules/grid.min.mjs.map | 1 + vendor/javascript/swiper/modules/grid.mjs | 154 + .../modules/hash-navigation-element.css | 0 .../modules/hash-navigation-element.min.css | 0 .../swiper/modules/hash-navigation.css | 0 .../swiper/modules/hash-navigation.min.css | 0 .../swiper/modules/hash-navigation.min.mjs | 2 + .../modules/hash-navigation.min.mjs.map | 1 + .../swiper/modules/hash-navigation.mjs | 92 + .../swiper/modules/history-element.css | 0 .../swiper/modules/history-element.min.css | 0 vendor/javascript/swiper/modules/history.css | 0 .../javascript/swiper/modules/history.min.css | 0 .../javascript/swiper/modules/history.min.mjs | 2 + .../swiper/modules/history.min.mjs.map | 1 + vendor/javascript/swiper/modules/history.mjs | 141 + .../javascript/swiper/modules/index.min.mjs | 2 + .../swiper/modules/index.min.mjs.map | 1 + vendor/javascript/swiper/modules/index.mjs | 23 + .../swiper/modules/keyboard-element.css | 0 .../swiper/modules/keyboard-element.min.css | 0 vendor/javascript/swiper/modules/keyboard.css | 0 .../swiper/modules/keyboard.min.css | 0 .../swiper/modules/keyboard.min.mjs | 2 + .../swiper/modules/keyboard.min.mjs.map | 1 + vendor/javascript/swiper/modules/keyboard.mjs | 118 + .../swiper/modules/manipulation-element.css | 0 .../modules/manipulation-element.min.css | 0 .../swiper/modules/manipulation.css | 0 .../swiper/modules/manipulation.min.css | 0 .../swiper/modules/manipulation.min.mjs | 2 + .../swiper/modules/manipulation.min.mjs.map | 1 + .../swiper/modules/manipulation.mjs | 192 + .../swiper/modules/mousewheel-element.css | 0 .../swiper/modules/mousewheel-element.min.css | 0 .../javascript/swiper/modules/mousewheel.css | 0 .../swiper/modules/mousewheel.min.css | 0 .../swiper/modules/mousewheel.min.mjs | 2 + .../swiper/modules/mousewheel.min.mjs.map | 1 + .../javascript/swiper/modules/mousewheel.mjs | 394 + .../swiper/modules/navigation-element.css | 117 + .../swiper/modules/navigation-element.min.css | 1 + .../javascript/swiper/modules/navigation.css | 129 + .../swiper/modules/navigation.min.css | 1 + .../swiper/modules/navigation.min.mjs | 2 + .../swiper/modules/navigation.min.mjs.map | 1 + .../javascript/swiper/modules/navigation.mjs | 208 + .../swiper/modules/pagination-element.css | 184 + .../swiper/modules/pagination-element.min.css | 1 + .../javascript/swiper/modules/pagination.css | 185 + .../swiper/modules/pagination.min.css | 1 + .../swiper/modules/pagination.min.mjs | 2 + .../swiper/modules/pagination.min.mjs.map | 1 + .../javascript/swiper/modules/pagination.mjs | 459 + .../swiper/modules/parallax-element.css | 0 .../swiper/modules/parallax-element.min.css | 0 vendor/javascript/swiper/modules/parallax.css | 0 .../swiper/modules/parallax.min.css | 0 .../swiper/modules/parallax.min.mjs | 2 + .../swiper/modules/parallax.min.mjs.map | 1 + vendor/javascript/swiper/modules/parallax.mjs | 120 + .../swiper/modules/scrollbar-element.css | 58 + .../swiper/modules/scrollbar-element.min.css | 1 + .../javascript/swiper/modules/scrollbar.css | 58 + .../swiper/modules/scrollbar.min.css | 1 + .../swiper/modules/scrollbar.min.mjs | 2 + .../swiper/modules/scrollbar.min.mjs.map | 1 + .../javascript/swiper/modules/scrollbar.mjs | 365 + .../swiper/modules/thumbs-element.css | 3 + .../swiper/modules/thumbs-element.min.css | 0 vendor/javascript/swiper/modules/thumbs.css | 5 + .../javascript/swiper/modules/thumbs.min.css | 0 .../javascript/swiper/modules/thumbs.min.mjs | 2 + .../swiper/modules/thumbs.min.mjs.map | 1 + vendor/javascript/swiper/modules/thumbs.mjs | 215 + .../swiper/modules/virtual-element.css | 20 + .../swiper/modules/virtual-element.min.css | 1 + vendor/javascript/swiper/modules/virtual.css | 26 + .../javascript/swiper/modules/virtual.min.css | 1 + .../javascript/swiper/modules/virtual.min.mjs | 2 + .../swiper/modules/virtual.min.mjs.map | 1 + vendor/javascript/swiper/modules/virtual.mjs | 364 + .../swiper/modules/zoom-element.css | 6 + .../swiper/modules/zoom-element.min.css | 1 + vendor/javascript/swiper/modules/zoom.css | 23 + vendor/javascript/swiper/modules/zoom.min.css | 1 + vendor/javascript/swiper/modules/zoom.min.mjs | 2 + .../swiper/modules/zoom.min.mjs.map | 1 + vendor/javascript/swiper/modules/zoom.mjs | 702 ++ vendor/javascript/swiper/package.json | 165 + .../swiper/shared/classes-to-selector.min.mjs | 2 + .../shared/classes-to-selector.min.mjs.map | 1 + .../swiper/shared/classes-to-selector.mjs | 7 + .../create-element-if-not-defined.min.mjs | 2 + .../create-element-if-not-defined.min.mjs.map | 1 + .../shared/create-element-if-not-defined.mjs | 21 + .../swiper/shared/create-shadow.min.mjs | 2 + .../swiper/shared/create-shadow.min.mjs.map | 1 + .../swiper/shared/create-shadow.mjs | 14 + .../swiper/shared/effect-init.min.mjs | 2 + .../swiper/shared/effect-init.min.mjs.map | 1 + .../javascript/swiper/shared/effect-init.mjs | 58 + .../swiper/shared/effect-target.min.mjs | 2 + .../swiper/shared/effect-target.min.mjs.map | 1 + .../swiper/shared/effect-target.mjs | 12 + .../effect-virtual-transition-end.min.mjs | 2 + .../effect-virtual-transition-end.min.mjs.map | 1 + .../shared/effect-virtual-transition-end.mjs | 47 + .../swiper/shared/get-element-params.min.mjs | 2 + .../shared/get-element-params.min.mjs.map | 1 + .../swiper/shared/get-element-params.mjs | 113 + .../swiper/shared/ssr-window.esm.min.mjs | 2 + .../swiper/shared/ssr-window.esm.min.mjs.map | 1 + .../swiper/shared/ssr-window.esm.mjs | 140 + .../swiper/shared/swiper-core.min.mjs | 2 + .../swiper/shared/swiper-core.min.mjs.map | 1 + .../javascript/swiper/shared/swiper-core.mjs | 3922 ++++++ .../shared/update-on-virtual-data.min.mjs | 2 + .../shared/update-on-virtual-data.min.mjs.map | 1 + .../swiper/shared/update-on-virtual-data.mjs | 124 + .../swiper/shared/update-swiper.min.mjs | 2 + .../swiper/shared/update-swiper.min.mjs.map | 1 + .../swiper/shared/update-swiper.mjs | 219 + vendor/javascript/swiper/shared/utils.min.mjs | 2 + .../swiper/shared/utils.min.mjs.map | 1 + vendor/javascript/swiper/shared/utils.mjs | 323 + vendor/javascript/swiper/swiper-bundle.css | 859 ++ vendor/javascript/swiper/swiper-bundle.js | 9813 +++++++++++++++ .../javascript/swiper/swiper-bundle.min.css | 13 + vendor/javascript/swiper/swiper-bundle.min.js | 14 + .../swiper/swiper-bundle.min.js.map | 1 + .../javascript/swiper/swiper-bundle.min.mjs | 14 + .../swiper/swiper-bundle.min.mjs.map | 1 + vendor/javascript/swiper/swiper-bundle.mjs | 42 + .../swiper/swiper-effect-utils.d.ts | 28 + .../swiper/swiper-effect-utils.min.mjs | 14 + .../swiper/swiper-effect-utils.min.mjs.map | 1 + .../javascript/swiper/swiper-effect-utils.mjs | 17 + .../swiper/swiper-element-bundle.js | 10395 ++++++++++++++++ .../swiper/swiper-element-bundle.min.js | 14 + .../swiper/swiper-element-bundle.min.js.map | 1 + .../swiper/swiper-element-bundle.min.mjs | 14 + .../swiper/swiper-element-bundle.min.mjs.map | 1 + .../swiper/swiper-element-bundle.mjs | 276 + vendor/javascript/swiper/swiper-element.d.ts | 444 + vendor/javascript/swiper/swiper-element.js | 4939 ++++++++ .../javascript/swiper/swiper-element.min.js | 14 + .../swiper/swiper-element.min.js.map | 1 + .../javascript/swiper/swiper-element.min.mjs | 14 + .../swiper/swiper-element.min.mjs.map | 1 + vendor/javascript/swiper/swiper-element.mjs | 275 + vendor/javascript/swiper/swiper-react.d.ts | 501 + vendor/javascript/swiper/swiper-react.mjs | 398 + vendor/javascript/swiper/swiper-vue.d.ts | 870 ++ vendor/javascript/swiper/swiper-vue.mjs | 836 ++ vendor/javascript/swiper/swiper.css | 251 + vendor/javascript/swiper/swiper.d.ts | 5 + vendor/javascript/swiper/swiper.js | 4348 +++++++ vendor/javascript/swiper/swiper.min.css | 13 + vendor/javascript/swiper/swiper.min.js | 14 + vendor/javascript/swiper/swiper.min.js.map | 1 + vendor/javascript/swiper/swiper.min.mjs | 14 + vendor/javascript/swiper/swiper.min.mjs.map | 1 + vendor/javascript/swiper/swiper.mjs | 13 + vendor/javascript/swiper/types/index.d.ts | 6 + .../javascript/swiper/types/modules/a11y.d.ts | 117 + .../swiper/types/modules/autoplay.d.ts | 133 + .../swiper/types/modules/controller.d.ts | 35 + .../swiper/types/modules/effect-cards.d.ts | 33 + .../types/modules/effect-coverflow.d.ts | 45 + .../swiper/types/modules/effect-creative.d.ts | 86 + .../swiper/types/modules/effect-cube.d.ts | 30 + .../swiper/types/modules/effect-fade.d.ts | 12 + .../swiper/types/modules/effect-flip.d.ts | 18 + .../swiper/types/modules/free-mode.d.ts | 64 + .../javascript/swiper/types/modules/grid.d.ts | 21 + .../swiper/types/modules/hash-navigation.d.ts | 38 + .../swiper/types/modules/history.d.ts | 43 + .../swiper/types/modules/index.d.ts | 51 + .../swiper/types/modules/keyboard.d.ts | 52 + .../swiper/types/modules/manipulation.d.ts | 70 + .../swiper/types/modules/mousewheel.d.ts | 86 + .../swiper/types/modules/navigation.d.ts | 112 + .../swiper/types/modules/pagination.d.ts | 307 + .../swiper/types/modules/parallax.d.ts | 12 + .../swiper/types/modules/public-api.d.ts | 23 + .../swiper/types/modules/scrollbar.d.ts | 140 + .../swiper/types/modules/thumbs.d.ts | 54 + .../swiper/types/modules/virtual.d.ts | 143 + .../javascript/swiper/types/modules/zoom.d.ts | 91 + vendor/javascript/swiper/types/shared.d.ts | 13 + .../javascript/swiper/types/swiper-class.d.ts | 522 + .../swiper/types/swiper-events.d.ts | 359 + .../swiper/types/swiper-options.d.ts | 1226 ++ yarn.lock | 5 + 277 files changed, 50559 insertions(+), 45 deletions(-) create mode 100644 app/javascript/controllers/shop_swiper_controller.js create mode 100644 app/views/home_pages/_shop_product_card.html.erb create mode 100644 vendor/javascript/swiper/LICENSE create mode 100644 vendor/javascript/swiper/README.md create mode 100644 vendor/javascript/swiper/modules/a11y-element.css create mode 100644 vendor/javascript/swiper/modules/a11y-element.min.css create mode 100644 vendor/javascript/swiper/modules/a11y.css create mode 100644 vendor/javascript/swiper/modules/a11y.min.css create mode 100644 vendor/javascript/swiper/modules/a11y.min.mjs create mode 100644 vendor/javascript/swiper/modules/a11y.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/a11y.mjs create mode 100644 vendor/javascript/swiper/modules/autoplay-element.css create mode 100644 vendor/javascript/swiper/modules/autoplay-element.min.css create mode 100644 vendor/javascript/swiper/modules/autoplay.css create mode 100644 vendor/javascript/swiper/modules/autoplay.min.css create mode 100644 vendor/javascript/swiper/modules/autoplay.min.mjs create mode 100644 vendor/javascript/swiper/modules/autoplay.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/autoplay.mjs create mode 100644 vendor/javascript/swiper/modules/controller-element.css create mode 100644 vendor/javascript/swiper/modules/controller-element.min.css create mode 100644 vendor/javascript/swiper/modules/controller.css create mode 100644 vendor/javascript/swiper/modules/controller.min.css create mode 100644 vendor/javascript/swiper/modules/controller.min.mjs create mode 100644 vendor/javascript/swiper/modules/controller.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/controller.mjs create mode 100644 vendor/javascript/swiper/modules/effect-cards-element.css create mode 100644 vendor/javascript/swiper/modules/effect-cards-element.min.css create mode 100644 vendor/javascript/swiper/modules/effect-cards.css create mode 100644 vendor/javascript/swiper/modules/effect-cards.min.css create mode 100644 vendor/javascript/swiper/modules/effect-cards.min.mjs create mode 100644 vendor/javascript/swiper/modules/effect-cards.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/effect-cards.mjs create mode 100644 vendor/javascript/swiper/modules/effect-coverflow-element.css create mode 100644 vendor/javascript/swiper/modules/effect-coverflow-element.min.css create mode 100644 vendor/javascript/swiper/modules/effect-coverflow.css create mode 100644 vendor/javascript/swiper/modules/effect-coverflow.min.css create mode 100644 vendor/javascript/swiper/modules/effect-coverflow.min.mjs create mode 100644 vendor/javascript/swiper/modules/effect-coverflow.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/effect-coverflow.mjs create mode 100644 vendor/javascript/swiper/modules/effect-creative-element.css create mode 100644 vendor/javascript/swiper/modules/effect-creative-element.min.css create mode 100644 vendor/javascript/swiper/modules/effect-creative.css create mode 100644 vendor/javascript/swiper/modules/effect-creative.min.css create mode 100644 vendor/javascript/swiper/modules/effect-creative.min.mjs create mode 100644 vendor/javascript/swiper/modules/effect-creative.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/effect-creative.mjs create mode 100644 vendor/javascript/swiper/modules/effect-cube-element.css create mode 100644 vendor/javascript/swiper/modules/effect-cube-element.min.css create mode 100644 vendor/javascript/swiper/modules/effect-cube.css create mode 100644 vendor/javascript/swiper/modules/effect-cube.min.css create mode 100644 vendor/javascript/swiper/modules/effect-cube.min.mjs create mode 100644 vendor/javascript/swiper/modules/effect-cube.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/effect-cube.mjs create mode 100644 vendor/javascript/swiper/modules/effect-fade-element.css create mode 100644 vendor/javascript/swiper/modules/effect-fade-element.min.css create mode 100644 vendor/javascript/swiper/modules/effect-fade.css create mode 100644 vendor/javascript/swiper/modules/effect-fade.min.css create mode 100644 vendor/javascript/swiper/modules/effect-fade.min.mjs create mode 100644 vendor/javascript/swiper/modules/effect-fade.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/effect-fade.mjs create mode 100644 vendor/javascript/swiper/modules/effect-flip-element.css create mode 100644 vendor/javascript/swiper/modules/effect-flip-element.min.css create mode 100644 vendor/javascript/swiper/modules/effect-flip.css create mode 100644 vendor/javascript/swiper/modules/effect-flip.min.css create mode 100644 vendor/javascript/swiper/modules/effect-flip.min.mjs create mode 100644 vendor/javascript/swiper/modules/effect-flip.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/effect-flip.mjs create mode 100644 vendor/javascript/swiper/modules/free-mode-element.css create mode 100644 vendor/javascript/swiper/modules/free-mode-element.min.css create mode 100644 vendor/javascript/swiper/modules/free-mode.css create mode 100644 vendor/javascript/swiper/modules/free-mode.min.css create mode 100644 vendor/javascript/swiper/modules/free-mode.min.mjs create mode 100644 vendor/javascript/swiper/modules/free-mode.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/free-mode.mjs create mode 100644 vendor/javascript/swiper/modules/grid-element.css create mode 100644 vendor/javascript/swiper/modules/grid-element.min.css create mode 100644 vendor/javascript/swiper/modules/grid.css create mode 100644 vendor/javascript/swiper/modules/grid.min.css create mode 100644 vendor/javascript/swiper/modules/grid.min.mjs create mode 100644 vendor/javascript/swiper/modules/grid.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/grid.mjs create mode 100644 vendor/javascript/swiper/modules/hash-navigation-element.css create mode 100644 vendor/javascript/swiper/modules/hash-navigation-element.min.css create mode 100644 vendor/javascript/swiper/modules/hash-navigation.css create mode 100644 vendor/javascript/swiper/modules/hash-navigation.min.css create mode 100644 vendor/javascript/swiper/modules/hash-navigation.min.mjs create mode 100644 vendor/javascript/swiper/modules/hash-navigation.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/hash-navigation.mjs create mode 100644 vendor/javascript/swiper/modules/history-element.css create mode 100644 vendor/javascript/swiper/modules/history-element.min.css create mode 100644 vendor/javascript/swiper/modules/history.css create mode 100644 vendor/javascript/swiper/modules/history.min.css create mode 100644 vendor/javascript/swiper/modules/history.min.mjs create mode 100644 vendor/javascript/swiper/modules/history.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/history.mjs create mode 100644 vendor/javascript/swiper/modules/index.min.mjs create mode 100644 vendor/javascript/swiper/modules/index.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/index.mjs create mode 100644 vendor/javascript/swiper/modules/keyboard-element.css create mode 100644 vendor/javascript/swiper/modules/keyboard-element.min.css create mode 100644 vendor/javascript/swiper/modules/keyboard.css create mode 100644 vendor/javascript/swiper/modules/keyboard.min.css create mode 100644 vendor/javascript/swiper/modules/keyboard.min.mjs create mode 100644 vendor/javascript/swiper/modules/keyboard.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/keyboard.mjs create mode 100644 vendor/javascript/swiper/modules/manipulation-element.css create mode 100644 vendor/javascript/swiper/modules/manipulation-element.min.css create mode 100644 vendor/javascript/swiper/modules/manipulation.css create mode 100644 vendor/javascript/swiper/modules/manipulation.min.css create mode 100644 vendor/javascript/swiper/modules/manipulation.min.mjs create mode 100644 vendor/javascript/swiper/modules/manipulation.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/manipulation.mjs create mode 100644 vendor/javascript/swiper/modules/mousewheel-element.css create mode 100644 vendor/javascript/swiper/modules/mousewheel-element.min.css create mode 100644 vendor/javascript/swiper/modules/mousewheel.css create mode 100644 vendor/javascript/swiper/modules/mousewheel.min.css create mode 100644 vendor/javascript/swiper/modules/mousewheel.min.mjs create mode 100644 vendor/javascript/swiper/modules/mousewheel.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/mousewheel.mjs create mode 100644 vendor/javascript/swiper/modules/navigation-element.css create mode 100644 vendor/javascript/swiper/modules/navigation-element.min.css create mode 100644 vendor/javascript/swiper/modules/navigation.css create mode 100644 vendor/javascript/swiper/modules/navigation.min.css create mode 100644 vendor/javascript/swiper/modules/navigation.min.mjs create mode 100644 vendor/javascript/swiper/modules/navigation.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/navigation.mjs create mode 100644 vendor/javascript/swiper/modules/pagination-element.css create mode 100644 vendor/javascript/swiper/modules/pagination-element.min.css create mode 100644 vendor/javascript/swiper/modules/pagination.css create mode 100644 vendor/javascript/swiper/modules/pagination.min.css create mode 100644 vendor/javascript/swiper/modules/pagination.min.mjs create mode 100644 vendor/javascript/swiper/modules/pagination.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/pagination.mjs create mode 100644 vendor/javascript/swiper/modules/parallax-element.css create mode 100644 vendor/javascript/swiper/modules/parallax-element.min.css create mode 100644 vendor/javascript/swiper/modules/parallax.css create mode 100644 vendor/javascript/swiper/modules/parallax.min.css create mode 100644 vendor/javascript/swiper/modules/parallax.min.mjs create mode 100644 vendor/javascript/swiper/modules/parallax.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/parallax.mjs create mode 100644 vendor/javascript/swiper/modules/scrollbar-element.css create mode 100644 vendor/javascript/swiper/modules/scrollbar-element.min.css create mode 100644 vendor/javascript/swiper/modules/scrollbar.css create mode 100644 vendor/javascript/swiper/modules/scrollbar.min.css create mode 100644 vendor/javascript/swiper/modules/scrollbar.min.mjs create mode 100644 vendor/javascript/swiper/modules/scrollbar.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/scrollbar.mjs create mode 100644 vendor/javascript/swiper/modules/thumbs-element.css create mode 100644 vendor/javascript/swiper/modules/thumbs-element.min.css create mode 100644 vendor/javascript/swiper/modules/thumbs.css create mode 100644 vendor/javascript/swiper/modules/thumbs.min.css create mode 100644 vendor/javascript/swiper/modules/thumbs.min.mjs create mode 100644 vendor/javascript/swiper/modules/thumbs.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/thumbs.mjs create mode 100644 vendor/javascript/swiper/modules/virtual-element.css create mode 100644 vendor/javascript/swiper/modules/virtual-element.min.css create mode 100644 vendor/javascript/swiper/modules/virtual.css create mode 100644 vendor/javascript/swiper/modules/virtual.min.css create mode 100644 vendor/javascript/swiper/modules/virtual.min.mjs create mode 100644 vendor/javascript/swiper/modules/virtual.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/virtual.mjs create mode 100644 vendor/javascript/swiper/modules/zoom-element.css create mode 100644 vendor/javascript/swiper/modules/zoom-element.min.css create mode 100644 vendor/javascript/swiper/modules/zoom.css create mode 100644 vendor/javascript/swiper/modules/zoom.min.css create mode 100644 vendor/javascript/swiper/modules/zoom.min.mjs create mode 100644 vendor/javascript/swiper/modules/zoom.min.mjs.map create mode 100644 vendor/javascript/swiper/modules/zoom.mjs create mode 100644 vendor/javascript/swiper/package.json create mode 100644 vendor/javascript/swiper/shared/classes-to-selector.min.mjs create mode 100644 vendor/javascript/swiper/shared/classes-to-selector.min.mjs.map create mode 100644 vendor/javascript/swiper/shared/classes-to-selector.mjs create mode 100644 vendor/javascript/swiper/shared/create-element-if-not-defined.min.mjs create mode 100644 vendor/javascript/swiper/shared/create-element-if-not-defined.min.mjs.map create mode 100644 vendor/javascript/swiper/shared/create-element-if-not-defined.mjs create mode 100644 vendor/javascript/swiper/shared/create-shadow.min.mjs create mode 100644 vendor/javascript/swiper/shared/create-shadow.min.mjs.map create mode 100644 vendor/javascript/swiper/shared/create-shadow.mjs create mode 100644 vendor/javascript/swiper/shared/effect-init.min.mjs create mode 100644 vendor/javascript/swiper/shared/effect-init.min.mjs.map create mode 100644 vendor/javascript/swiper/shared/effect-init.mjs create mode 100644 vendor/javascript/swiper/shared/effect-target.min.mjs create mode 100644 vendor/javascript/swiper/shared/effect-target.min.mjs.map create mode 100644 vendor/javascript/swiper/shared/effect-target.mjs create mode 100644 vendor/javascript/swiper/shared/effect-virtual-transition-end.min.mjs create mode 100644 vendor/javascript/swiper/shared/effect-virtual-transition-end.min.mjs.map create mode 100644 vendor/javascript/swiper/shared/effect-virtual-transition-end.mjs create mode 100644 vendor/javascript/swiper/shared/get-element-params.min.mjs create mode 100644 vendor/javascript/swiper/shared/get-element-params.min.mjs.map create mode 100644 vendor/javascript/swiper/shared/get-element-params.mjs create mode 100644 vendor/javascript/swiper/shared/ssr-window.esm.min.mjs create mode 100644 vendor/javascript/swiper/shared/ssr-window.esm.min.mjs.map create mode 100644 vendor/javascript/swiper/shared/ssr-window.esm.mjs create mode 100644 vendor/javascript/swiper/shared/swiper-core.min.mjs create mode 100644 vendor/javascript/swiper/shared/swiper-core.min.mjs.map create mode 100644 vendor/javascript/swiper/shared/swiper-core.mjs create mode 100644 vendor/javascript/swiper/shared/update-on-virtual-data.min.mjs create mode 100644 vendor/javascript/swiper/shared/update-on-virtual-data.min.mjs.map create mode 100644 vendor/javascript/swiper/shared/update-on-virtual-data.mjs create mode 100644 vendor/javascript/swiper/shared/update-swiper.min.mjs create mode 100644 vendor/javascript/swiper/shared/update-swiper.min.mjs.map create mode 100644 vendor/javascript/swiper/shared/update-swiper.mjs create mode 100644 vendor/javascript/swiper/shared/utils.min.mjs create mode 100644 vendor/javascript/swiper/shared/utils.min.mjs.map create mode 100644 vendor/javascript/swiper/shared/utils.mjs create mode 100644 vendor/javascript/swiper/swiper-bundle.css create mode 100644 vendor/javascript/swiper/swiper-bundle.js create mode 100644 vendor/javascript/swiper/swiper-bundle.min.css create mode 100644 vendor/javascript/swiper/swiper-bundle.min.js create mode 100644 vendor/javascript/swiper/swiper-bundle.min.js.map create mode 100644 vendor/javascript/swiper/swiper-bundle.min.mjs create mode 100644 vendor/javascript/swiper/swiper-bundle.min.mjs.map create mode 100644 vendor/javascript/swiper/swiper-bundle.mjs create mode 100644 vendor/javascript/swiper/swiper-effect-utils.d.ts create mode 100644 vendor/javascript/swiper/swiper-effect-utils.min.mjs create mode 100644 vendor/javascript/swiper/swiper-effect-utils.min.mjs.map create mode 100644 vendor/javascript/swiper/swiper-effect-utils.mjs create mode 100644 vendor/javascript/swiper/swiper-element-bundle.js create mode 100644 vendor/javascript/swiper/swiper-element-bundle.min.js create mode 100644 vendor/javascript/swiper/swiper-element-bundle.min.js.map create mode 100644 vendor/javascript/swiper/swiper-element-bundle.min.mjs create mode 100644 vendor/javascript/swiper/swiper-element-bundle.min.mjs.map create mode 100644 vendor/javascript/swiper/swiper-element-bundle.mjs create mode 100644 vendor/javascript/swiper/swiper-element.d.ts create mode 100644 vendor/javascript/swiper/swiper-element.js create mode 100644 vendor/javascript/swiper/swiper-element.min.js create mode 100644 vendor/javascript/swiper/swiper-element.min.js.map create mode 100644 vendor/javascript/swiper/swiper-element.min.mjs create mode 100644 vendor/javascript/swiper/swiper-element.min.mjs.map create mode 100644 vendor/javascript/swiper/swiper-element.mjs create mode 100644 vendor/javascript/swiper/swiper-react.d.ts create mode 100644 vendor/javascript/swiper/swiper-react.mjs create mode 100644 vendor/javascript/swiper/swiper-vue.d.ts create mode 100644 vendor/javascript/swiper/swiper-vue.mjs create mode 100644 vendor/javascript/swiper/swiper.css create mode 100644 vendor/javascript/swiper/swiper.d.ts create mode 100644 vendor/javascript/swiper/swiper.js create mode 100644 vendor/javascript/swiper/swiper.min.css create mode 100644 vendor/javascript/swiper/swiper.min.js create mode 100644 vendor/javascript/swiper/swiper.min.js.map create mode 100644 vendor/javascript/swiper/swiper.min.mjs create mode 100644 vendor/javascript/swiper/swiper.min.mjs.map create mode 100644 vendor/javascript/swiper/swiper.mjs create mode 100644 vendor/javascript/swiper/types/index.d.ts create mode 100644 vendor/javascript/swiper/types/modules/a11y.d.ts create mode 100644 vendor/javascript/swiper/types/modules/autoplay.d.ts create mode 100644 vendor/javascript/swiper/types/modules/controller.d.ts create mode 100644 vendor/javascript/swiper/types/modules/effect-cards.d.ts create mode 100644 vendor/javascript/swiper/types/modules/effect-coverflow.d.ts create mode 100644 vendor/javascript/swiper/types/modules/effect-creative.d.ts create mode 100644 vendor/javascript/swiper/types/modules/effect-cube.d.ts create mode 100644 vendor/javascript/swiper/types/modules/effect-fade.d.ts create mode 100644 vendor/javascript/swiper/types/modules/effect-flip.d.ts create mode 100644 vendor/javascript/swiper/types/modules/free-mode.d.ts create mode 100644 vendor/javascript/swiper/types/modules/grid.d.ts create mode 100644 vendor/javascript/swiper/types/modules/hash-navigation.d.ts create mode 100644 vendor/javascript/swiper/types/modules/history.d.ts create mode 100644 vendor/javascript/swiper/types/modules/index.d.ts create mode 100644 vendor/javascript/swiper/types/modules/keyboard.d.ts create mode 100644 vendor/javascript/swiper/types/modules/manipulation.d.ts create mode 100644 vendor/javascript/swiper/types/modules/mousewheel.d.ts create mode 100644 vendor/javascript/swiper/types/modules/navigation.d.ts create mode 100644 vendor/javascript/swiper/types/modules/pagination.d.ts create mode 100644 vendor/javascript/swiper/types/modules/parallax.d.ts create mode 100644 vendor/javascript/swiper/types/modules/public-api.d.ts create mode 100644 vendor/javascript/swiper/types/modules/scrollbar.d.ts create mode 100644 vendor/javascript/swiper/types/modules/thumbs.d.ts create mode 100644 vendor/javascript/swiper/types/modules/virtual.d.ts create mode 100644 vendor/javascript/swiper/types/modules/zoom.d.ts create mode 100644 vendor/javascript/swiper/types/shared.d.ts create mode 100644 vendor/javascript/swiper/types/swiper-class.d.ts create mode 100644 vendor/javascript/swiper/types/swiper-events.d.ts create mode 100644 vendor/javascript/swiper/types/swiper-options.d.ts diff --git a/app/assets/stylesheets/application.bootstrap.scss b/app/assets/stylesheets/application.bootstrap.scss index 8bf2bb1..936740f 100644 --- a/app/assets/stylesheets/application.bootstrap.scss +++ b/app/assets/stylesheets/application.bootstrap.scss @@ -856,6 +856,184 @@ dialog { font-size: clamp(1.35rem, 5.6vw, 2.25rem); } +.home-shop-swiper { + position: relative; + --shop-swiper-card-width: min(28rem, 68vw); + --shop-swiper-offset: min(24rem, 38vw); + --shop-swiper-offset-far: min(40rem, 58vw); + --shop-swiper-progress: 0; + padding: 1.5rem 0 2.5rem; + overflow: visible; +} + +.home-shop-swiper.swiper { + overflow: visible; +} + +.home-shop-swiper .swiper-wrapper { + position: relative; + min-height: 32rem; +} + +.home-shop-swiper .parallax-bg { + position: absolute; + inset: -1.25rem -4%; + border-radius: 1.5rem; + background: + radial-gradient(circle at top, rgba(255, 248, 238, 0.94), rgba(243, 231, 211, 0.76) 55%, rgba(199, 176, 126, 0.24) 100%), + linear-gradient(135deg, rgba(113, 28, 28, 0.06), rgba(104, 83, 35, 0.12)); + pointer-events: none; +} + +.home-shop-swiper .swiper-wrapper { + align-items: stretch; +} + +.home-shop-swiper .swiper-slide { + position: absolute; + top: 0; + left: 50%; + width: var(--shop-swiper-card-width); + max-width: 100%; + flex-shrink: 0; + height: auto; + display: flex; + cursor: pointer; + user-select: none; + margin: 0; + transform-origin: center center; + transition: transform 0.85s ease, opacity 0.85s ease, filter 0.85s ease; + opacity: 0; + pointer-events: none; + z-index: 1; +} + +.home-shop-swiper .cardPopout { + width: 100%; + display: flex; + border-radius: 1rem; + padding: 0.2rem; + background: linear-gradient(180deg, rgba(255, 255, 255, 0.45), rgba(255, 255, 255, 0.18)); + box-shadow: 0 20px 45px rgba(58, 23, 10, 0.12); + transition: transform 0.35s ease, box-shadow 0.35s ease; +} + +.home-shop-swiper .swiper-slide-active .cardPopout, +.home-shop-swiper .swiper-slide:hover .cardPopout { + transform: translateY(-6px); + box-shadow: 0 28px 48px rgba(58, 23, 10, 0.18); +} + +.home-shop-swiper .swiper-slide.is-active { + opacity: 1; + z-index: 5; + pointer-events: auto; + transform: translateX(-50%) translateZ(0) scale(1); + filter: none; +} + +.home-shop-swiper .swiper-slide.is-prev { + opacity: 0.82; + z-index: 4; + pointer-events: auto; + transform: translateX(calc(-50% - var(--shop-swiper-offset))) rotateY(34deg) scale(0.84); + filter: saturate(0.7); +} + +.home-shop-swiper .swiper-slide.is-next { + opacity: 0.82; + z-index: 4; + pointer-events: auto; + transform: translateX(calc(-50% + var(--shop-swiper-offset))) rotateY(-34deg) scale(0.84); + filter: saturate(0.7); +} + +.home-shop-swiper .swiper-slide.is-prev-2 { + opacity: 0.34; + z-index: 3; + pointer-events: auto; + transform: translateX(calc(-50% - var(--shop-swiper-offset-far))) rotateY(42deg) scale(0.7); + filter: blur(0.4px) saturate(0.5); +} + +.home-shop-swiper .swiper-slide.is-next-2 { + opacity: 0.34; + z-index: 3; + pointer-events: auto; + transform: translateX(calc(-50% + var(--shop-swiper-offset-far))) rotateY(-42deg) scale(0.7); + filter: blur(0.4px) saturate(0.5); +} + +.home-shop-swiper .swiper-slide.is-hidden-left { + transform: translateX(calc(-50% - var(--shop-swiper-offset-far) - 8rem)) scale(0.62); +} + +.home-shop-swiper .swiper-slide.is-hidden-right { + transform: translateX(calc(-50% + var(--shop-swiper-offset-far) + 8rem)) scale(0.62); +} + +.home-shop-swiper__product-card { + margin-bottom: 0; + width: 100%; +} + +.home-shop-swiper .swiper-slide-shadow-left, +.home-shop-swiper .swiper-slide-shadow-right { + border-radius: 1rem; +} + +.home-shop-swiper .swiper-scrollbar { + position: relative; + width: min(21rem, 80%); + height: 10px; + margin-inline: auto; + margin-top: 1.2rem; + background: rgba(113, 28, 28, 0.12); + border-radius: 999px; + overflow: hidden; +} + +.home-shop-swiper .swiper-scrollbar-drag { + background: linear-gradient(90deg, rgba(113, 28, 28, 0.9), rgba(199, 176, 126, 0.9)); +} + +.home-shop-swiper .swiper-scrollbar::before { + content: ""; + position: absolute; + inset: 0 auto 0 0; + width: max(18%, 3.75rem); + border-radius: inherit; + background: linear-gradient(90deg, rgba(113, 28, 28, 0.9), rgba(199, 176, 126, 0.9)); + transform: translateX(calc(var(--shop-swiper-progress) * (100% - 3.75rem))); + transition: transform 0.45s ease; +} + +@media (max-width: 767.98px) { + .home-shop-swiper { + --shop-swiper-card-width: min(24rem, 90vw); + --shop-swiper-offset: min(10rem, 28vw); + --shop-swiper-offset-far: min(16rem, 40vw); + padding-inline: 0.2rem; + } + + .home-shop-swiper .parallax-bg { + inset-inline: 0; + } + + .home-shop-swiper .swiper-slide.is-prev, + .home-shop-swiper .swiper-slide.is-next { + opacity: 0.2; + } + + .home-shop-swiper .swiper-slide.is-prev-2, + .home-shop-swiper .swiper-slide.is-next-2, + .home-shop-swiper .swiper-slide.is-hidden-left, + .home-shop-swiper .swiper-slide.is-hidden-right { + opacity: 0; + pointer-events: none; + } +} + /* Fallback dynamique du formulaire admin Home, même sans JS Stimulus */ .home-block-form:has(select[name="home_page[bloc_type]"] option[value="custom"]:checked) [data-home-block-form-target="targetSection"], @@ -1134,7 +1312,9 @@ dialog { } .product-card-link:hover .product-card-clickable, -.product-card-link:focus-visible .product-card-clickable { +.product-card-link:focus-visible .product-card-clickable, +.home-shop-swiper .swiper-slide:hover .product-card-clickable, +.home-shop-swiper .swiper-slide:focus-within .product-card-clickable { border-color: rgba(113, 28, 28, 0.85); box-shadow: 0 12px 28px rgba(113, 28, 28, 0.2); transform: translateY(-3px); diff --git a/app/javascript/controllers/shop_swiper_controller.js b/app/javascript/controllers/shop_swiper_controller.js new file mode 100644 index 0000000..febd8e2 --- /dev/null +++ b/app/javascript/controllers/shop_swiper_controller.js @@ -0,0 +1,126 @@ +import { Controller } from "@hotwired/stimulus" + +export default class extends Controller { + static targets = ["wrapper", "slide", "scrollbar"] + + connect() { + this.activeIndex = 0 + this.autoplayDelay = 3200 + this.boundRefresh = this.refresh.bind(this) + + window.addEventListener("resize", this.boundRefresh) + this.observeImages() + this.refresh() + this.resume() + } + + disconnect() { + window.removeEventListener("resize", this.boundRefresh) + this.pause() + } + + next(event) { + if (event) event.preventDefault() + if (this.slideTargets.length <= 1) return + + this.activeIndex = (this.activeIndex + 1) % this.slideTargets.length + this.update() + } + + previous(event) { + if (event) event.preventDefault() + if (this.slideTargets.length <= 1) return + + this.activeIndex = (this.activeIndex - 1 + this.slideTargets.length) % this.slideTargets.length + this.update() + } + + advanceFromClick(event) { + if (event.button !== 0) return + if (event.target.closest("a, button")) return + + this.next() + } + + wheel(event) { + if (Math.abs(event.deltaY) < 8) return + + event.preventDefault() + if (event.deltaY > 0) { + this.next() + } else { + this.previous() + } + } + + pause() { + if (!this.autoplayTimer) return + + clearInterval(this.autoplayTimer) + this.autoplayTimer = null + } + + resume() { + this.pause() + if (this.slideTargets.length <= 1) return + + this.autoplayTimer = setInterval(() => this.next(), this.autoplayDelay) + } + + refresh() { + const tallestSlide = this.slideTargets.reduce((maxHeight, slide) => { + return Math.max(maxHeight, slide.offsetHeight) + }, 0) + + if (tallestSlide > 0) { + this.wrapperTarget.style.height = `${tallestSlide}px` + } + + this.update() + } + + update() { + const total = this.slideTargets.length + if (total === 0) return + + this.slideTargets.forEach((slide, index) => { + slide.classList.remove( + "is-active", + "is-prev", + "is-next", + "is-prev-2", + "is-next-2", + "is-hidden-left", + "is-hidden-right" + ) + + const offset = index - this.activeIndex + + if (offset === 0) { + slide.classList.add("is-active") + } else if (offset === -1) { + slide.classList.add("is-prev") + } else if (offset === 1) { + slide.classList.add("is-next") + } else if (offset === -2) { + slide.classList.add("is-prev-2") + } else if (offset === 2) { + slide.classList.add("is-next-2") + } else if (offset < 0) { + slide.classList.add("is-hidden-left") + } else { + slide.classList.add("is-hidden-right") + } + }) + + const progress = total > 1 ? this.activeIndex / (total - 1) : 0 + this.scrollbarTarget.style.setProperty("--shop-swiper-progress", progress) + } + + observeImages() { + this.element.querySelectorAll("img").forEach((image) => { + if (image.complete) return + image.addEventListener("load", this.boundRefresh, { once: true }) + }) + } +} diff --git a/app/views/home_pages/_shop_product_card.html.erb b/app/views/home_pages/_shop_product_card.html.erb new file mode 100644 index 0000000..db50437 --- /dev/null +++ b/app/views/home_pages/_shop_product_card.html.erb @@ -0,0 +1,6 @@ +
+ <%= render product %> +
+ <%= link_to "Voir plus", product_path(product), class: "btn btn-primary btn-sm" %> +
+
diff --git a/app/views/home_pages/index.html.erb b/app/views/home_pages/index.html.erb index 765bfa6..ee7508c 100644 --- a/app/views/home_pages/index.html.erb +++ b/app/views/home_pages/index.html.erb @@ -73,49 +73,31 @@

<%= home_page.title %>

<% products = home_page.shop_products.to_a %> <% if products.any? %> - <% product_count = products.size %> - <% grid_classes = - if product_count == 1 - "row row-cols-1 justify-content-center g-3" - elsif product_count == 2 - "row row-cols-1 row-cols-md-2 g-3" - else - "row row-cols-1 row-cols-md-2 row-cols-lg-3 row-cols-xl-4 g-3" - end %> -
- <% products.each do |product| %> - <% column_classes = product_count == 1 ? "col-12 col-md-8 col-lg-6 col-xl-5" : "col" %> -
-
- <% if product.primary_image.present? %> -
- <%= attachment_thumb(product.primary_image, - variant_options: { resize_to_limit: [700, 520] }, - alt: product.title, - class: "w-100 h-100 product-card-media-image") %> -
- <% end %> -
- <% if product.category.present? %> -

<%= product.category %>

- <% end %> -
<%= product.title %>
- <% if product.description.present? %> -

<%= truncate(product.description, length: 120) %>

- <% end %> - <% if product.price.present? %> -
-
- <%= number_to_currency(product.price, unit: "€", format: "%n %u") %> -
- <%= link_to "Voir le produit", product_path(product), class: "btn btn-primary btn-sm" %> -
- <% end %> +
+
+ +
+ <% products.each do |product| %> +
+
+ <%= render "home_pages/shop_product_card", product: product %>
-
-
- <% end %> -
+ + <% end %> +
+ +
+
<% button_label = home_page.button_label.presence || "Accéder à la boutique" %> <%= link_to button_label, products_path, class: "btn btn-primary" %> diff --git a/package.json b/package.json index 35bb572..73911b6 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "nodemon": "^3.1.11", "postcss": "^8.5.6", "postcss-cli": "^11.0.1", - "sass": "^1.94.1" + "sass": "^1.94.1", + "swiper": "^12.1.2" }, "scripts": { "build:css:compile": "sass --quiet-deps ./app/assets/stylesheets/application.bootstrap.scss:./app/assets/builds/application.css --no-source-map --load-path=node_modules", @@ -21,4 +22,4 @@ "browserslist": [ "defaults" ] -} \ No newline at end of file +} diff --git a/vendor/javascript/swiper/LICENSE b/vendor/javascript/swiper/LICENSE new file mode 100644 index 0000000..a7876ca --- /dev/null +++ b/vendor/javascript/swiper/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2019 Vladimir Kharlampidi + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/javascript/swiper/README.md b/vendor/javascript/swiper/README.md new file mode 100644 index 0000000..d4e726c --- /dev/null +++ b/vendor/javascript/swiper/README.md @@ -0,0 +1,11 @@ +Swiper +========== + +Swiper - is the free and most modern mobile touch slider with hardware accelerated transitions and amazing native behavior. It is intended to be used in mobile websites, mobile web apps, and mobile native/hybrid apps. + +Swiper is not compatible with all platforms, it is a modern touch slider which is focused only on modern apps/platforms to bring the best experience and simplicity. + +# Getting Started + * [Getting Started Guide](https://swiperjs.com/get-started/) + * [API](https://swiperjs.com/swiper-api/) + * [Demos](https://swiperjs.com/demos/) diff --git a/vendor/javascript/swiper/modules/a11y-element.css b/vendor/javascript/swiper/modules/a11y-element.css new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/vendor/javascript/swiper/modules/a11y-element.css @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/vendor/javascript/swiper/modules/a11y-element.min.css b/vendor/javascript/swiper/modules/a11y-element.min.css new file mode 100644 index 0000000..2e48b42 --- /dev/null +++ b/vendor/javascript/swiper/modules/a11y-element.min.css @@ -0,0 +1 @@ +.swiper .swiper-notification{left:0;opacity:0;pointer-events:none;position:absolute;top:0;z-index:-1000} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/a11y.css b/vendor/javascript/swiper/modules/a11y.css new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/vendor/javascript/swiper/modules/a11y.css @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/vendor/javascript/swiper/modules/a11y.min.css b/vendor/javascript/swiper/modules/a11y.min.css new file mode 100644 index 0000000..2e48b42 --- /dev/null +++ b/vendor/javascript/swiper/modules/a11y.min.css @@ -0,0 +1 @@ +.swiper .swiper-notification{left:0;opacity:0;pointer-events:none;position:absolute;top:0;z-index:-1000} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/a11y.min.mjs b/vendor/javascript/swiper/modules/a11y.min.mjs new file mode 100644 index 0000000..3d47e92 --- /dev/null +++ b/vendor/javascript/swiper/modules/a11y.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";import{c as createElement,j as elementIndex,m as makeElementsArray,s as setInnerHTML}from"../shared/utils.min.mjs";function A11y({swiper:e,extendParams:a,on:t}){a({a11y:{enabled:!0,notificationClass:"swiper-notification",prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",slideLabelMessage:"{{index}} / {{slidesLength}}",containerMessage:null,containerRoleDescriptionMessage:null,containerRole:null,itemRoleDescriptionMessage:null,slideRole:"group",id:null,scrollOnFocus:!0,wrapperLiveRegion:!0}}),e.a11y={clicked:!1};let i,n,s=null,r=(new Date).getTime();function l(e){const a=s;0!==a.length&&setInnerHTML(a,e)}function o(e){(e=makeElementsArray(e)).forEach(e=>{e.setAttribute("tabIndex","0")})}function d(e){(e=makeElementsArray(e)).forEach(e=>{e.setAttribute("tabIndex","-1")})}function c(e,a){(e=makeElementsArray(e)).forEach(e=>{e.setAttribute("role",a)})}function p(e,a){(e=makeElementsArray(e)).forEach(e=>{e.setAttribute("aria-roledescription",a)})}function m(e,a){(e=makeElementsArray(e)).forEach(e=>{e.setAttribute("aria-label",a)})}function g(e){(e=makeElementsArray(e)).forEach(e=>{e.setAttribute("aria-disabled",!0)})}function u(e){(e=makeElementsArray(e)).forEach(e=>{e.setAttribute("aria-disabled",!1)})}function E(a){if(13!==a.keyCode&&32!==a.keyCode)return;const t=e.params.a11y,i=a.target;if(!e.pagination||!e.pagination.el||i!==e.pagination.el&&!e.pagination.el.contains(a.target)||a.target.matches(classesToSelector(e.params.pagination.bulletClass))){if(e.navigation&&e.navigation.prevEl&&e.navigation.nextEl){const a=makeElementsArray(e.navigation.prevEl);makeElementsArray(e.navigation.nextEl).includes(i)&&(e.isEnd&&!e.params.loop||e.slideNext(),e.isEnd?l(t.lastSlideMessage):l(t.nextSlideMessage)),a.includes(i)&&(e.isBeginning&&!e.params.loop||e.slidePrev(),e.isBeginning?l(t.firstSlideMessage):l(t.prevSlideMessage))}e.pagination&&i.matches(classesToSelector(e.params.pagination.bulletClass))&&i.click()}}function f(){return e.pagination&&e.pagination.bullets&&e.pagination.bullets.length}function v(){return f()&&e.params.pagination.clickable}const b=(e,a,t)=>{o(e),"BUTTON"!==e.tagName&&(c(e,"button"),e.addEventListener("keydown",E)),m(e,t),function(e,a){(e=makeElementsArray(e)).forEach(e=>{e.setAttribute("aria-controls",a)})}(e,a)},y=a=>{n&&n!==a.target&&!n.contains(a.target)&&(i=!0),e.a11y.clicked=!0},h=()=>{i=!1,requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.destroyed||(e.a11y.clicked=!1)})})},A=e=>{r=(new Date).getTime()},k=a=>{if(e.a11y.clicked||!e.params.a11y.scrollOnFocus)return;if((new Date).getTime()-r<100)return;const t=a.target.closest(`.${e.params.slideClass}, swiper-slide`);if(!t||!e.slides.includes(t))return;n=t;const s=e.virtual&&e.params.virtual.enabled,l=(s?parseInt(t.getAttribute("data-swiper-slide-index"),10):e.slides.indexOf(t))===e.activeIndex,o=e.params.watchSlidesProgress&&e.visibleSlides&&e.visibleSlides.includes(t);l||o||a.sourceCapabilities&&a.sourceCapabilities.firesTouchEvents||(e.isHorizontal()?e.el.scrollLeft=0:e.el.scrollTop=0,requestAnimationFrame(()=>{i||(e.params.loop?e.slideToLoop(e.getSlideIndexWhenGrid(parseInt(t.getAttribute("data-swiper-slide-index"))),0):s?e.slideTo(e.getSlideIndexWhenGrid(parseInt(t.getAttribute("data-swiper-slide-index"),10)),0):e.slideTo(e.getSlideIndexWhenGrid(e.slides.indexOf(t)),0),i=!1)}))},x=()=>{const a=e.params.a11y;a.itemRoleDescriptionMessage&&p(e.slides,a.itemRoleDescriptionMessage),a.slideRole&&c(e.slides,a.slideRole);const t=e.slides.length;a.slideLabelMessage&&e.slides.forEach((i,n)=>{const s=e.params.loop?parseInt(i.getAttribute("data-swiper-slide-index"),10):n;m(i,a.slideLabelMessage.replace(/\{\{index\}\}/,s+1).replace(/\{\{slidesLength\}\}/,t))})},M=()=>{const a=e.params.a11y;e.el.append(s);const t=e.el;a.containerRoleDescriptionMessage&&p(t,a.containerRoleDescriptionMessage),a.containerMessage&&m(t,a.containerMessage),a.containerRole&&c(t,a.containerRole);const i=e.wrapperEl,n=a.id||i.getAttribute("id")||`swiper-wrapper-${function(e=16){return"x".repeat(e).replace(/x/g,()=>Math.round(16*Math.random()).toString(16))}(16)}`;var r;if(r=n,makeElementsArray(i).forEach(e=>{e.setAttribute("id",r)}),a.wrapperLiveRegion){!function(e,a){(e=makeElementsArray(e)).forEach(e=>{e.setAttribute("aria-live",a)})}(i,e.params.autoplay&&e.params.autoplay.enabled?"off":"polite")}x();let{nextEl:l,prevEl:o}=e.navigation?e.navigation:{};if(l=makeElementsArray(l),o=makeElementsArray(o),l&&l.forEach(e=>b(e,n,a.nextSlideMessage)),o&&o.forEach(e=>b(e,n,a.prevSlideMessage)),v()){makeElementsArray(e.pagination.el).forEach(e=>{e.addEventListener("keydown",E)})}getDocument().addEventListener("visibilitychange",A),e.el.addEventListener("focus",k,!0),e.el.addEventListener("pointerdown",y,!0),e.el.addEventListener("pointerup",h,!0)};t("beforeInit",()=>{s=createElement("span",e.params.a11y.notificationClass),s.setAttribute("aria-live","assertive"),s.setAttribute("aria-atomic","true")}),t("afterInit",()=>{e.params.a11y.enabled&&M()}),t("slidesLengthChange snapGridLengthChange slidesGridLengthChange",()=>{e.params.a11y.enabled&&x()}),t("fromEdge toEdge afterInit lock unlock",()=>{e.params.a11y.enabled&&function(){if(e.params.loop||e.params.rewind||!e.navigation)return;const{nextEl:a,prevEl:t}=e.navigation;t&&(e.isBeginning?(g(t),d(t)):(u(t),o(t))),a&&(e.isEnd?(g(a),d(a)):(u(a),o(a)))}()}),t("paginationUpdate",()=>{e.params.a11y.enabled&&function(){const a=e.params.a11y;f()&&e.pagination.bullets.forEach(t=>{e.params.pagination.clickable&&(o(t),e.params.pagination.renderBullet||(c(t,"button"),m(t,a.paginationBulletMessage.replace(/\{\{index\}\}/,elementIndex(t)+1)))),t.matches(classesToSelector(e.params.pagination.bulletActiveClass))?t.setAttribute("aria-current","true"):t.removeAttribute("aria-current")})}()}),t("destroy",()=>{e.params.a11y.enabled&&function(){s&&s.remove();let{nextEl:a,prevEl:t}=e.navigation?e.navigation:{};a=makeElementsArray(a),t=makeElementsArray(t),a&&a.forEach(e=>e.removeEventListener("keydown",E)),t&&t.forEach(e=>e.removeEventListener("keydown",E)),v()&&makeElementsArray(e.pagination.el).forEach(e=>{e.removeEventListener("keydown",E)});getDocument().removeEventListener("visibilitychange",A),e.el&&"string"!=typeof e.el&&(e.el.removeEventListener("focus",k,!0),e.el.removeEventListener("pointerdown",y,!0),e.el.removeEventListener("pointerup",h,!0))}()})}export{A11y as default}; +//# sourceMappingURL=a11y.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/a11y.min.mjs.map b/vendor/javascript/swiper/modules/a11y.min.mjs.map new file mode 100644 index 0000000..0ebbaa9 --- /dev/null +++ b/vendor/javascript/swiper/modules/a11y.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"a11y.mjs.mjs","names":["getDocument","classesToSelector","createElement","elementIndex","makeElementsArray","setInnerHTML","A11y","swiper","extendParams","on","a11y","enabled","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","containerRole","itemRoleDescriptionMessage","slideRole","id","scrollOnFocus","wrapperLiveRegion","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","Date","getTime","notify","message","notification","length","makeElFocusable","el","forEach","subEl","setAttribute","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","label","disableEl","enableEl","onEnterOrSpaceKey","e","keyCode","params","targetEl","target","pagination","contains","matches","bulletClass","navigation","prevEl","nextEl","prevEls","includes","isEnd","loop","slideNext","isBeginning","slidePrev","click","hasPagination","bullets","hasClickablePagination","clickable","initNavEl","wrapperId","tagName","addEventListener","controls","addElControls","handlePointerDown","handlePointerUp","requestAnimationFrame","destroyed","onVisibilityChange","handleFocus","slideEl","closest","slideClass","slides","isVirtual","virtual","isActive","parseInt","getAttribute","indexOf","activeIndex","isVisible","watchSlidesProgress","visibleSlides","sourceCapabilities","firesTouchEvents","isHorizontal","scrollLeft","scrollTop","slideToLoop","getSlideIndexWhenGrid","slideTo","initSlides","slidesLength","index","slideIndex","replace","init","append","containerEl","wrapperEl","size","repeat","Math","round","random","toString","getRandomNumber","live","addElLive","autoplay","rewind","updateNavigation","bulletEl","renderBullet","bulletActiveClass","removeAttribute","updatePagination","remove","removeEventListener","destroy"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/a11y.mjs b/vendor/javascript/swiper/modules/a11y.mjs new file mode 100644 index 0000000..1b1d83f --- /dev/null +++ b/vendor/javascript/swiper/modules/a11y.mjs @@ -0,0 +1,378 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; +import { c as createElement, j as elementIndex, m as makeElementsArray, s as setInnerHTML } from '../shared/utils.mjs'; + +function A11y({ + swiper, + extendParams, + on +}) { + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + containerRole: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null, + scrollOnFocus: true, + wrapperLiveRegion: true + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + let preventFocusHandler; + let focusTargetSlideEl; + let visibilityChangedTimestamp = new Date().getTime(); + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + setInnerHTML(notification, message); + } + function getRandomNumber(size = 16) { + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { + const prevEls = makeElementsArray(swiper.navigation.prevEl); + const nextEls = makeElementsArray(swiper.navigation.nextEl); + if (nextEls.includes(targetEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (prevEls.includes(targetEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = e => { + if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) { + preventFocusHandler = true; + } + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + preventFocusHandler = false; + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const onVisibilityChange = e => { + visibilityChangedTimestamp = new Date().getTime(); + }; + const handleFocus = e => { + if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; + if (new Date().getTime() - visibilityChangedTimestamp < 100) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + focusTargetSlideEl = slideEl; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + const isActive = (isVirtual ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : swiper.slides.indexOf(slideEl)) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + requestAnimationFrame(() => { + if (preventFocusHandler) return; + if (swiper.params.loop) { + swiper.slideToLoop(swiper.getSlideIndexWhenGrid(parseInt(slideEl.getAttribute('data-swiper-slide-index'))), 0); + } else if (isVirtual) { + swiper.slideTo(swiper.getSlideIndexWhenGrid(parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10)), 0); + } else { + swiper.slideTo(swiper.getSlideIndexWhenGrid(swiper.slides.indexOf(slideEl)), 0); + } + preventFocusHandler = false; + }); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + if (params.containerRole) { + addElRole(containerEl, params.containerRole); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + addElId(wrapperEl, wrapperId); + if (params.wrapperLiveRegion) { + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElLive(wrapperEl, live); + } + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + // Tab focus + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); +} + +export { A11y as default }; diff --git a/vendor/javascript/swiper/modules/autoplay-element.css b/vendor/javascript/swiper/modules/autoplay-element.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/autoplay-element.min.css b/vendor/javascript/swiper/modules/autoplay-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/autoplay.css b/vendor/javascript/swiper/modules/autoplay.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/autoplay.min.css b/vendor/javascript/swiper/modules/autoplay.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/autoplay.min.mjs b/vendor/javascript/swiper/modules/autoplay.min.mjs new file mode 100644 index 0000000..1b64fa9 --- /dev/null +++ b/vendor/javascript/swiper/modules/autoplay.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";function Autoplay({swiper:e,extendParams:a,on:t,emit:n,params:i}){let r,o;e.autoplay={running:!1,paused:!1,timeLeft:0},a({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let s,l,p,u,d,y,m,c=i&&i.autoplay?i.autoplay.delay:3e3,g=i&&i.autoplay?i.autoplay.delay:3e3,v=(new Date).getTime();function T(a){e&&!e.destroyed&&e.wrapperEl&&a.target===e.wrapperEl&&(e.wrapperEl.removeEventListener("transitionend",T),m||a.detail&&a.detail.bySwiperTouchMove||O())}const f=()=>{if(e.destroyed||!e.autoplay.running)return;e.autoplay.paused?l=!0:l&&(g=s,l=!1);const a=e.autoplay.paused?s:v+g-(new Date).getTime();e.autoplay.timeLeft=a,n("autoplayTimeLeft",a,a/c),o=requestAnimationFrame(()=>{f()})},w=()=>{let a=e.params.autoplay.delay;const t=(()=>{let a;if(a=e.virtual&&e.params.virtual.enabled?e.slides.find(e=>e.classList.contains("swiper-slide-active")):e.slides[e.activeIndex],!a)return;return parseInt(a.getAttribute("data-swiper-autoplay"),10)})();return!Number.isNaN(t)&&t>0&&(a=t),a},b=a=>{if(e.destroyed||!e.autoplay.running)return;cancelAnimationFrame(o),f();let t=a;void 0===t&&(t=w(),c=t,g=t),s=t;const i=e.params.speed,l=()=>{e&&!e.destroyed&&(e.params.autoplay.reverseDirection?!e.isBeginning||e.params.loop||e.params.rewind?(e.slidePrev(i,!0,!0),n("autoplay")):e.params.autoplay.stopOnLastSlide||(e.slideTo(e.slides.length-1,i,!0,!0),n("autoplay")):!e.isEnd||e.params.loop||e.params.rewind?(e.slideNext(i,!0,!0),n("autoplay")):e.params.autoplay.stopOnLastSlide||(e.slideTo(0,i,!0,!0),n("autoplay")),e.params.cssMode&&(v=(new Date).getTime(),requestAnimationFrame(()=>{b()})))};return t>0?(clearTimeout(r),r=setTimeout(()=>{l()},t)):requestAnimationFrame(()=>{l()}),t},E=()=>{v=(new Date).getTime(),e.autoplay.running=!0,b(),n("autoplayStart")},L=()=>{e.autoplay.running=!1,clearTimeout(r),cancelAnimationFrame(o),n("autoplayStop")},D=(a,t)=>{if(e.destroyed||!e.autoplay.running)return;clearTimeout(r),a||(y=!0);const i=()=>{n("autoplayPause"),e.params.autoplay.waitForTransition?e.wrapperEl.addEventListener("transitionend",T):O()};if(e.autoplay.paused=!0,t)return void i();const o=s||e.params.autoplay.delay;s=o-((new Date).getTime()-v),e.isEnd&&s<0&&!e.params.loop||(s<0&&(s=0),i())},O=()=>{e.isEnd&&s<0&&!e.params.loop||e.destroyed||!e.autoplay.running||(v=(new Date).getTime(),y?(y=!1,b(s)):b(),e.autoplay.paused=!1,n("autoplayResume"))},S=()=>{if(e.destroyed||!e.autoplay.running)return;const a=getDocument();"hidden"===a.visibilityState&&(y=!0,D(!0)),"visible"===a.visibilityState&&O()},M=a=>{"mouse"===a.pointerType&&(y=!0,m=!0,e.animating||e.autoplay.paused||D(!0))},h=a=>{"mouse"===a.pointerType&&(m=!1,e.autoplay.paused&&O())};t("init",()=>{e.params.autoplay.enabled&&(e.params.autoplay.pauseOnMouseEnter&&(e.el.addEventListener("pointerenter",M),e.el.addEventListener("pointerleave",h)),getDocument().addEventListener("visibilitychange",S),E())}),t("destroy",()=>{e.el&&"string"!=typeof e.el&&(e.el.removeEventListener("pointerenter",M),e.el.removeEventListener("pointerleave",h)),getDocument().removeEventListener("visibilitychange",S),e.autoplay.running&&L()}),t("_freeModeStaticRelease",()=>{(u||y)&&O()}),t("_freeModeNoMomentumRelease",()=>{e.params.autoplay.disableOnInteraction?L():D(!0,!0)}),t("beforeTransitionStart",(a,t,n)=>{!e.destroyed&&e.autoplay.running&&(n||!e.params.autoplay.disableOnInteraction?D(!0,!0):L())}),t("sliderFirstMove",()=>{!e.destroyed&&e.autoplay.running&&(e.params.autoplay.disableOnInteraction?L():(p=!0,u=!1,y=!1,d=setTimeout(()=>{y=!0,u=!0,D(!0)},200)))}),t("touchEnd",()=>{if(!e.destroyed&&e.autoplay.running&&p){if(clearTimeout(d),clearTimeout(r),e.params.autoplay.disableOnInteraction)return u=!1,void(p=!1);u&&e.params.cssMode&&O(),u=!1,p=!1}}),t("slideChange",()=>{!e.destroyed&&e.autoplay.running&&e.autoplay.paused&&(s=w(),c=w())}),Object.assign(e.autoplay,{start:E,stop:L,pause:D,resume:O})}export{Autoplay as default}; +//# sourceMappingURL=autoplay.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/autoplay.min.mjs.map b/vendor/javascript/swiper/modules/autoplay.min.mjs.map new file mode 100644 index 0000000..eafe823 --- /dev/null +++ b/vendor/javascript/swiper/modules/autoplay.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"autoplay.mjs.mjs","names":["getDocument","Autoplay","swiper","extendParams","on","emit","params","timeout","raf","autoplay","running","paused","timeLeft","enabled","delay","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","isTouched","pausedByTouch","touchStartTimeout","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","Date","getTime","onTransitionEnd","e","destroyed","wrapperEl","target","removeEventListener","detail","bySwiperTouchMove","resume","calcTimeLeft","requestAnimationFrame","getTotalDelay","totalDelay","currentSlideDelay","activeSlideEl","virtual","slides","find","slideEl","classList","contains","activeIndex","parseInt","getAttribute","getSlideDelay","Number","isNaN","run","delayForce","cancelAnimationFrame","speed","proceed","isBeginning","loop","rewind","slidePrev","slideTo","length","isEnd","slideNext","cssMode","clearTimeout","setTimeout","start","stop","pause","internal","reset","addEventListener","onVisibilityChange","document","visibilityState","onPointerEnter","pointerType","animating","onPointerLeave","el","_s","Object","assign"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/autoplay.mjs b/vendor/javascript/swiper/modules/autoplay.mjs new file mode 100644 index 0000000..151f006 --- /dev/null +++ b/vendor/javascript/swiper/modules/autoplay.mjs @@ -0,0 +1,306 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; + +/* eslint no-underscore-dangle: "off" */ +/* eslint no-use-before-define: "off" */ +function Autoplay({ + swiper, + extendParams, + on, + emit, + params +}) { + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active')); + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const getTotalDelay = () => { + let totalDelay = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0) { + totalDelay = currentSlideDelay; + } + return totalDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = delayForce; + if (typeof delay === 'undefined') { + delay = getTotalDelay(); + autoplayDelayTotal = delay; + autoplayDelayCurrent = delay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + } + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + autoplayTimeLeft = getTotalDelay(); + autoplayDelayTotal = getTotalDelay(); + } + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); +} + +export { Autoplay as default }; diff --git a/vendor/javascript/swiper/modules/controller-element.css b/vendor/javascript/swiper/modules/controller-element.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/controller-element.min.css b/vendor/javascript/swiper/modules/controller-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/controller.css b/vendor/javascript/swiper/modules/controller.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/controller.min.css b/vendor/javascript/swiper/modules/controller.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/controller.min.mjs b/vendor/javascript/swiper/modules/controller.min.mjs new file mode 100644 index 0000000..52da8d4 --- /dev/null +++ b/vendor/javascript/swiper/modules/controller.min.mjs @@ -0,0 +1,2 @@ +import{n as nextTick,o as elementTransitionEnd}from"../shared/utils.min.mjs";function Controller({swiper:t,extendParams:r,on:n}){function e(t,r){const n=function(){let t,r,n;return(e,o)=>{for(r=-1,t=e.length;t-r>1;)n=t+r>>1,e[n]<=o?r=n:t=n;return t}}();let e,o;return this.x=t,this.y=r,this.lastIndex=t.length-1,this.interpolate=function(t){return t?(o=n(this.x,t),e=o-1,(t-this.x[e])*(this.y[o]-this.y[e])/(this.x[o]-this.x[e])+this.y[e]):0},this}function o(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}r({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},n("beforeInit",()=>{if("undefined"!=typeof window&&("string"==typeof t.params.controller.control||t.params.controller.control instanceof HTMLElement)){return void("string"==typeof t.params.controller.control?[...document.querySelectorAll(t.params.controller.control)]:[t.params.controller.control]).forEach(r=>{if(t.controller.control||(t.controller.control=[]),r&&r.swiper)t.controller.control.push(r.swiper);else if(r){const n=`${t.params.eventsPrefix}init`,e=o=>{t.controller.control.push(o.detail[0]),t.update(),r.removeEventListener(n,e)};r.addEventListener(n,e)}})}t.controller.control=t.params.controller.control}),n("update",()=>{o()}),n("resize",()=>{o()}),n("observerUpdate",()=>{o()}),n("setTranslate",(r,n,e)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTranslate(n,e)}),n("setTransition",(r,n,e)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTransition(n,e)}),Object.assign(t.controller,{setTranslate:function(r,n){const o=t.controller.control;let l,s;const i=t.constructor;function a(r){if(r.destroyed)return;const n=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(r){t.controller.spline=t.params.loop?new e(t.slidesGrid,r.slidesGrid):new e(t.snapGrid,r.snapGrid)}(r),s=-t.controller.spline.interpolate(-n)),s&&"container"!==t.params.controller.by||(l=(r.maxTranslate()-r.minTranslate())/(t.maxTranslate()-t.minTranslate()),!Number.isNaN(l)&&Number.isFinite(l)||(l=1),s=(n-t.minTranslate())*l+r.minTranslate()),t.params.controller.inverse&&(s=r.maxTranslate()-s),r.updateProgress(s),r.setTranslate(s,t),r.updateActiveIndex(),r.updateSlidesClasses()}if(Array.isArray(o))for(let t=0;t{n.updateAutoHeight()}),elementTransitionEnd(n.wrapperEl,()=>{o&&n.transitionEnd()})))}if(Array.isArray(o))for(l=0;l>"] }] */ +function Controller({ + swiper, + extendParams, + on +}) { + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control]; + controlElements.forEach(controlElement => { + if (!swiper.controller.control) swiper.controller.control = []; + if (controlElement && controlElement.swiper) { + swiper.controller.control.push(controlElement.swiper); + } else if (controlElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onControllerSwiper = e => { + swiper.controller.control.push(e.detail[0]); + swiper.update(); + controlElement.removeEventListener(eventName, onControllerSwiper); + }; + controlElement.addEventListener(eventName, onControllerSwiper); + } + }); + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); +} + +export { Controller as default }; diff --git a/vendor/javascript/swiper/modules/effect-cards-element.css b/vendor/javascript/swiper/modules/effect-cards-element.css new file mode 100644 index 0000000..71eea8d --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-cards-element.css @@ -0,0 +1,8 @@ +.swiper.swiper-cards { + overflow: visible; +} +.swiper-cards ::slotted(swiper-slide) { + transform-origin: center bottom; + backface-visibility: hidden; + overflow: hidden; + } diff --git a/vendor/javascript/swiper/modules/effect-cards-element.min.css b/vendor/javascript/swiper/modules/effect-cards-element.min.css new file mode 100644 index 0000000..dd46ad4 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-cards-element.min.css @@ -0,0 +1 @@ +.swiper.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){backface-visibility:hidden;overflow:hidden;transform-origin:center bottom} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-cards.css b/vendor/javascript/swiper/modules/effect-cards.css new file mode 100644 index 0000000..c4b3766 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-cards.css @@ -0,0 +1,10 @@ +.swiper.swiper-cards { + overflow: visible; +} +.swiper-cards { + .swiper-slide { + transform-origin: center bottom; + backface-visibility: hidden; + overflow: hidden; + } +} diff --git a/vendor/javascript/swiper/modules/effect-cards.min.css b/vendor/javascript/swiper/modules/effect-cards.min.css new file mode 100644 index 0000000..1e9541e --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-cards.min.css @@ -0,0 +1 @@ +.swiper.swiper-cards{overflow:visible}.swiper-cards{.swiper-slide{backface-visibility:hidden;overflow:hidden;transform-origin:center bottom}} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-cards.min.mjs b/vendor/javascript/swiper/modules/effect-cards.min.mjs new file mode 100644 index 0000000..efa7b16 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-cards.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectCards({swiper:e,extendParams:t,on:a}){t({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}});effectInit({effect:"cards",swiper:e,on:a,setTranslate:()=>{const{slides:t,activeIndex:a,rtlTranslate:s}=e,r=e.params.cardsEffect,{startTranslate:i,isTouched:o}=e.touchEventsData,n=s?-e.translate:e.translate;for(let l=0;l0&&f<1&&(o||e.params.cssMode)&&n-1&&(o||e.params.cssMode)&&n>i;if(E||T){const t=(1-Math.abs((Math.abs(f)-.5)/.5))**.5;u+=-28*f*t,S+=-.5*t,w+=96*t,h=(r.rotate||e.isHorizontal()?-25:0)*t*Math.abs(f)+"%"}if(p=f<0?`calc(${p}px ${s?"-":"+"} (${w*Math.abs(f)}%))`:f>0?`calc(${p}px ${s?"-":"+"} (-${w*Math.abs(f)}%))`:`${p}px`,!e.isHorizontal()){const e=h;h=p,p=e}const g=f<0?""+(1+(1-S)*f):""+(1-(1-S)*f),x=`\n translate3d(${p}, ${h}, ${M}px)\n rotateZ(${r.rotate?s?-u:u:0}deg)\n scale(${g})\n `;if(r.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=createShadow("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(f)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(c))+t.length;effectTarget(r,d).style.transform=x}},setTransition:t=>{const a=e.slides.map(e=>getSlideTransformEl(e));a.forEach(e=>{e.style.transitionDuration=`${t}ms`,e.querySelectorAll(".swiper-slide-shadow").forEach(e=>{e.style.transitionDuration=`${t}ms`})}),effectVirtualTransitionEnd({swiper:e,duration:t,transformElements:a})},perspective:()=>!0,overwriteParams:()=>({_loopSwapReset:!1,watchSlidesProgress:!0,loopAdditionalSlides:e.params.cardsEffect.rotate?3:2,centeredSlides:!0,virtualTranslate:!e.params.cssMode})})}export{EffectCards as default}; +//# sourceMappingURL=effect-cards.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-cards.min.mjs.map b/vendor/javascript/swiper/modules/effect-cards.min.mjs.map new file mode 100644 index 0000000..6e1fafb --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-cards.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-cards.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectCards","swiper","extendParams","on","cardsEffect","slideShadows","rotate","perSlideRotate","perSlideOffset","effect","setTranslate","slides","activeIndex","rtlTranslate","rtl","params","startTranslate","isTouched","touchEventsData","currentTranslate","translate","i","length","slideEl","slideProgress","progress","Math","min","max","offset","swiperSlideOffset","centeredSlides","cssMode","wrapperEl","style","transform","minTranslate","tX","tY","tZ","abs","scale","tXAdd","slideIndex","virtual","enabled","from","isSwipeToNext","isSwipeToPrev","subProgress","isHorizontal","prevY","scaleString","shadowEl","querySelector","opacity","zIndex","round","setTransition","duration","transformElements","map","forEach","el","transitionDuration","querySelectorAll","perspective","overwriteParams","_loopSwapReset","watchSlidesProgress","loopAdditionalSlides","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-cards.mjs b/vendor/javascript/swiper/modules/effect-cards.mjs new file mode 100644 index 0000000..f3b1414 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-cards.mjs @@ -0,0 +1,127 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectCards({ + swiper, + extendParams, + on +}) { + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${(params.rotate || swiper.isHorizontal() ? -25 : 0) * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + _loopSwapReset: false, + watchSlidesProgress: true, + loopAdditionalSlides: swiper.params.cardsEffect.rotate ? 3 : 2, + centeredSlides: true, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectCards as default }; diff --git a/vendor/javascript/swiper/modules/effect-coverflow-element.css b/vendor/javascript/swiper/modules/effect-coverflow-element.css new file mode 100644 index 0000000..ac504bf --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-coverflow-element.css @@ -0,0 +1,2 @@ +.swiper-coverflow { +} diff --git a/vendor/javascript/swiper/modules/effect-coverflow-element.min.css b/vendor/javascript/swiper/modules/effect-coverflow-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/effect-coverflow.css b/vendor/javascript/swiper/modules/effect-coverflow.css new file mode 100644 index 0000000..ac504bf --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-coverflow.css @@ -0,0 +1,2 @@ +.swiper-coverflow { +} diff --git a/vendor/javascript/swiper/modules/effect-coverflow.min.css b/vendor/javascript/swiper/modules/effect-coverflow.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/effect-coverflow.min.mjs b/vendor/javascript/swiper/modules/effect-coverflow.min.mjs new file mode 100644 index 0000000..8e492ab --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-coverflow.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{g as getSlideTransformEl,a as getRotateFix}from"../shared/utils.min.mjs";function EffectCoverflow({swiper:e,extendParams:t,on:s}){t({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}});effectInit({effect:"coverflow",swiper:e,on:s,setTranslate:()=>{const{width:t,height:s,slides:r,slidesSizesGrid:a}=e,o=e.params.coverflowEffect,i=e.isHorizontal(),l=e.translate,f=i?t/2-l:s/2-l,d=i?o.rotate:-o.rotate,c=o.depth,h=getRotateFix(e);for(let e=0,t=r.length;e0?n:0),s&&(s.style.opacity=-n>0?-n:0)}}},setTransition:t=>{e.slides.map(e=>getSlideTransformEl(e)).forEach(e=>{e.style.transitionDuration=`${t}ms`,e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(e=>{e.style.transitionDuration=`${t}ms`})})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})}export{EffectCoverflow as default}; +//# sourceMappingURL=effect-coverflow.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-coverflow.min.mjs.map b/vendor/javascript/swiper/modules/effect-coverflow.min.mjs.map new file mode 100644 index 0000000..227f4d4 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-coverflow.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-coverflow.mjs.mjs","names":["createShadow","effectInit","effectTarget","getSlideTransformEl","getRotateFix","EffectCoverflow","swiper","extendParams","on","coverflowEffect","rotate","stretch","depth","scale","modifier","slideShadows","effect","setTranslate","width","swiperWidth","height","swiperHeight","slides","slidesSizesGrid","params","isHorizontal","transform","translate","center","r","i","length","slideEl","slideSize","centerOffset","swiperSlideOffset","offsetMultiplier","rotateY","rotateX","translateZ","Math","abs","indexOf","parseFloat","translateY","translateX","slideTransform","style","zIndex","round","shadowBeforeEl","querySelector","shadowAfterEl","opacity","setTransition","duration","map","forEach","el","transitionDuration","querySelectorAll","shadowEl","perspective","overwriteParams","watchSlidesProgress"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-coverflow.mjs b/vendor/javascript/swiper/modules/effect-coverflow.mjs new file mode 100644 index 0000000..753bd22 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-coverflow.mjs @@ -0,0 +1,103 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { g as getSlideTransformEl, a as getRotateFix } from '../shared/utils.mjs'; + +function EffectCoverflow({ + swiper, + extendParams, + on +}) { + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + const r = getRotateFix(swiper); + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); +} + +export { EffectCoverflow as default }; diff --git a/vendor/javascript/swiper/modules/effect-creative-element.css b/vendor/javascript/swiper/modules/effect-creative-element.css new file mode 100644 index 0000000..583b380 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-creative-element.css @@ -0,0 +1,5 @@ +.swiper-creative ::slotted(swiper-slide) { + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; + } diff --git a/vendor/javascript/swiper/modules/effect-creative-element.min.css b/vendor/javascript/swiper/modules/effect-creative-element.min.css new file mode 100644 index 0000000..77a9ee4 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-creative-element.min.css @@ -0,0 +1 @@ +.swiper-creative ::slotted(swiper-slide){backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-creative.css b/vendor/javascript/swiper/modules/effect-creative.css new file mode 100644 index 0000000..b893cad --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-creative.css @@ -0,0 +1,7 @@ +.swiper-creative { + .swiper-slide { + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; + } +} diff --git a/vendor/javascript/swiper/modules/effect-creative.min.css b/vendor/javascript/swiper/modules/effect-creative.min.css new file mode 100644 index 0000000..d742f3b --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-creative.min.css @@ -0,0 +1 @@ +.swiper-creative{.swiper-slide{backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-creative.min.mjs b/vendor/javascript/swiper/modules/effect-creative.min.mjs new file mode 100644 index 0000000..8b78e20 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-creative.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl,a as getRotateFix}from"../shared/utils.min.mjs";function EffectCreative({swiper:e,extendParams:t,on:s}){t({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const r=e=>"string"==typeof e?e:`${e}px`;effectInit({effect:"creative",swiper:e,on:s,setTranslate:()=>{const{slides:t,wrapperEl:s,slidesSizesGrid:a}=e,i=e.params.creativeEffect,{progressMultiplier:o}=i,l=e.params.centeredSlides,n=getRotateFix(e);if(l){const t=a[0]/2-e.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${t}px))`}for(let s=0;s0&&(w=i.prev,h=!0),d.forEach((e,t)=>{d[t]=`calc(${e}px + (${r(w.translate[t])} * ${Math.abs(f*o)}))`}),g.forEach((e,t)=>{let s=w.rotate[t]*Math.abs(f*o);g[t]=s}),a.style.zIndex=-Math.abs(Math.round(c))+t.length;const y=d.join(", "),u=`rotateX(${n(g[0])}deg) rotateY(${n(g[1])}deg) rotateZ(${n(g[2])}deg)`,v=m<0?`scale(${1+(1-w.scale)*m*o})`:`scale(${1-(1-w.scale)*m*o})`,E=m<0?1+(1-w.opacity)*m*o:1-(1-w.opacity)*m*o,M=`translate3d(${y}) ${u} ${v}`;if(h&&w.shadow||!h){let e=a.querySelector(".swiper-slide-shadow");if(!e&&w.shadow&&(e=createShadow("creative",a)),e){const t=i.shadowPerProgress?f*(1/i.limitProgress):f;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const $=effectTarget(i,a);$.style.transform=M,$.style.opacity=E,w.origin&&($.style.transformOrigin=w.origin)}},setTransition:t=>{const s=e.slides.map(e=>getSlideTransformEl(e));s.forEach(e=>{e.style.transitionDuration=`${t}ms`,e.querySelectorAll(".swiper-slide-shadow").forEach(e=>{e.style.transitionDuration=`${t}ms`})}),effectVirtualTransitionEnd({swiper:e,duration:t,transformElements:s,allSlides:!0})},perspective:()=>e.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!e.params.cssMode})})}export{EffectCreative as default}; +//# sourceMappingURL=effect-creative.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-creative.min.mjs.map b/vendor/javascript/swiper/modules/effect-creative.min.mjs.map new file mode 100644 index 0000000..6ed26e5 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-creative.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-creative.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","getRotateFix","EffectCreative","swiper","extendParams","on","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","perspective","prev","translate","rotate","opacity","scale","next","getTranslateValue","value","effect","setTranslate","slides","wrapperEl","slidesSizesGrid","params","multiplier","isCenteredSlides","centeredSlides","rotateFix","margin","slidesOffsetBefore","style","transform","i","length","slideEl","slideProgress","progress","Math","min","max","originalProgress","offset","swiperSlideOffset","t","cssMode","r","custom","isHorizontal","data","forEach","index","abs","val","zIndex","round","translateString","join","rotateString","scaleString","opacityString","shadow","shadowEl","querySelector","shadowOpacity","targetEl","origin","transformOrigin","setTransition","duration","transformElements","map","el","transitionDuration","querySelectorAll","allSlides","overwriteParams","watchSlidesProgress","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-creative.mjs b/vendor/javascript/swiper/modules/effect-creative.mjs new file mode 100644 index 0000000..3603c82 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-creative.mjs @@ -0,0 +1,145 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl, a as getRotateFix } from '../shared/utils.mjs'; + +function EffectCreative({ + swiper, + extendParams, + on +}) { + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + const rotateFix = getRotateFix(swiper); + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectCreative as default }; diff --git a/vendor/javascript/swiper/modules/effect-cube-element.css b/vendor/javascript/swiper/modules/effect-cube-element.css new file mode 100644 index 0000000..e69b290 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-cube-element.css @@ -0,0 +1,52 @@ +.swiper.swiper-cube { + overflow: visible; +} +.swiper-cube ::slotted(swiper-slide) { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + } +.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; + } +.swiper-cube.swiper-rtl ::slotted(swiper-slide) { + transform-origin: 100% 0; + } +.swiper-cube ::slotted(.swiper-slide-active), + .swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; + } +.swiper-cube ::slotted(.swiper-slide-active), + .swiper-cube ::slotted(.swiper-slide-next), + .swiper-cube ::slotted(.swiper-slide-prev) { + pointer-events: auto; + visibility: visible; + } +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; + } +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); + } +.swiper-cube ::slotted(.swiper-slide-next) + ::slotted(swiper-slide) { + pointer-events: auto; + visibility: visible; + } +/* Cube slide shadows start *//* Cube slide shadows end */ diff --git a/vendor/javascript/swiper/modules/effect-cube-element.min.css b/vendor/javascript/swiper/modules/effect-cube-element.min.css new file mode 100644 index 0000000..bbeac53 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-cube-element.min.css @@ -0,0 +1 @@ +.swiper.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){backface-visibility:hidden;height:100%;pointer-events:none;transform-origin:0 0;visibility:hidden;width:100%;z-index:1}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{bottom:0;height:100%;left:0;opacity:.6;position:absolute;width:100%;z-index:0}.swiper-cube .swiper-cube-shadow:before{background:#000;bottom:0;content:"";filter:blur(50px);left:0;position:absolute;right:0;top:0}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-cube.css b/vendor/javascript/swiper/modules/effect-cube.css new file mode 100644 index 0000000..7964b1d --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-cube.css @@ -0,0 +1,70 @@ +.swiper.swiper-cube { + overflow: visible; +} +.swiper-cube { + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, + .swiper-slide-next, + .swiper-slide-prev { + pointer-events: auto; + visibility: visible; + } + + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; + + &:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); + } + } +} +.swiper-cube { + .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } +} +/* Cube slide shadows start */ +.swiper-cube { + .swiper-slide-shadow-cube.swiper-slide-shadow-top, + .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, + .swiper-slide-shadow-cube.swiper-slide-shadow-left, + .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Cube slide shadows end */ diff --git a/vendor/javascript/swiper/modules/effect-cube.min.css b/vendor/javascript/swiper/modules/effect-cube.min.css new file mode 100644 index 0000000..2ec1502 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-cube.min.css @@ -0,0 +1 @@ +.swiper.swiper-cube{overflow:visible}.swiper-cube{.swiper-slide{backface-visibility:hidden;height:100%;pointer-events:none;transform-origin:0 0;visibility:hidden;width:100%;z-index:1;.swiper-slide{pointer-events:none}}&.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-slide-active{&,& .swiper-slide-active{pointer-events:auto}}.swiper-slide-active,.swiper-slide-next,.swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube-shadow{bottom:0;height:100%;left:0;opacity:.6;position:absolute;width:100%;z-index:0;&:before{background:#000;bottom:0;content:"";filter:blur(50px);left:0;position:absolute;right:0;top:0}}}.swiper-cube{.swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}}.swiper-cube{.swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-slide-shadow-cube.swiper-slide-shadow-top{backface-visibility:hidden;z-index:0}} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-cube.min.mjs b/vendor/javascript/swiper/modules/effect-cube.min.mjs new file mode 100644 index 0000000..5e19e5b --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-cube.min.mjs @@ -0,0 +1,2 @@ +import{e as effectInit}from"../shared/effect-init.min.mjs";import{c as createElement,a as getRotateFix}from"../shared/utils.min.mjs";function EffectCube({swiper:e,extendParams:t,on:s}){t({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const a=(e,t,s)=>{let a=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),r=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=createElement("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(a)),r||(r=createElement("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(r)),a&&(a.style.opacity=Math.max(-t,0)),r&&(r.style.opacity=Math.max(t,0))};effectInit({effect:"cube",swiper:e,on:s,setTranslate:()=>{const{el:t,wrapperEl:s,slides:r,width:o,height:i,rtlTranslate:l,size:d,browser:n}=e,p=getRotateFix(e),c=e.params.cubeEffect,w=e.isHorizontal(),h=e.virtual&&e.params.virtual.enabled;let f,m=0;c.shadow&&(w?(f=e.wrapperEl.querySelector(".swiper-cube-shadow"),f||(f=createElement("div","swiper-cube-shadow"),e.wrapperEl.append(f)),f.style.height=`${o}px`):(f=t.querySelector(".swiper-cube-shadow"),f||(f=createElement("div","swiper-cube-shadow"),t.append(f))));for(let e=0;e-1&&(m=90*s+90*n,l&&(m=90*-s-90*n)),t.style.transform=x,c.slideShadows&&a(t,n,w)}if(s.style.transformOrigin=`50% 50% -${d/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${d/2}px`,c.shadow)if(w)f.style.transform=`translate3d(0px, ${o/2+c.shadowOffset}px, ${-o/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${c.shadowScale})`;else{const e=Math.abs(m)-90*Math.floor(Math.abs(m)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=c.shadowScale,a=c.shadowScale/t,r=c.shadowOffset;f.style.transform=`scale3d(${s}, 1, ${a}) translate3d(0px, ${i/2+r}px, ${-i/2/a}px) rotateX(-89.99deg)`}const u=(n.isSafari||n.isWebView)&&n.needPerspectiveFix?-d/2:0;s.style.transform=`translate3d(0px,0,${u}px) rotateX(${p(e.isHorizontal()?0:m)}deg) rotateY(${p(e.isHorizontal()?-m:0)}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${u}px`)},setTransition:t=>{const{el:s,slides:a}=e;if(a.forEach(e=>{e.style.transitionDuration=`${t}ms`,e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(e=>{e.style.transitionDuration=`${t}ms`})}),e.params.cubeEffect.shadow&&!e.isHorizontal()){const e=s.querySelector(".swiper-cube-shadow");e&&(e.style.transitionDuration=`${t}ms`)}},recreateShadows:()=>{const t=e.isHorizontal();e.slides.forEach(e=>{const s=Math.max(Math.min(e.progress,1),-1);a(e,s,t)})},getEffectParams:()=>e.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})}export{EffectCube as default}; +//# sourceMappingURL=effect-cube.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-cube.min.mjs.map b/vendor/javascript/swiper/modules/effect-cube.min.mjs.map new file mode 100644 index 0000000..e9ae9c4 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-cube.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-cube.mjs.mjs","names":["effectInit","createElement","getRotateFix","EffectCube","swiper","extendParams","on","cubeEffect","slideShadows","shadow","shadowOffset","shadowScale","createSlideShadows","slideEl","progress","isHorizontal","shadowBefore","querySelector","shadowAfter","split","append","style","opacity","Math","max","effect","setTranslate","el","wrapperEl","slides","width","swiperWidth","height","swiperHeight","rtlTranslate","rtl","size","swiperSize","browser","r","params","isVirtual","virtual","enabled","cubeShadowEl","wrapperRotate","i","length","slideIndex","parseInt","getAttribute","slideAngle","round","floor","min","tx","ty","tz","transform","transformOrigin","shadowAngle","abs","multiplier","sin","PI","cos","scale1","scale2","offset","zFactor","isSafari","isWebView","needPerspectiveFix","setProperty","setTransition","duration","forEach","transitionDuration","querySelectorAll","subEl","shadowEl","recreateShadows","getEffectParams","perspective","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","resistanceRatio","spaceBetween","centeredSlides","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-cube.mjs b/vendor/javascript/swiper/modules/effect-cube.mjs new file mode 100644 index 0000000..ed968a8 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-cube.mjs @@ -0,0 +1,173 @@ +import { e as effectInit } from '../shared/effect-init.mjs'; +import { c as createElement, a as getRotateFix } from '../shared/utils.mjs'; + +function EffectCube({ + swiper, + extendParams, + on +}) { + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const r = getRotateFix(swiper); + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); +} + +export { EffectCube as default }; diff --git a/vendor/javascript/swiper/modules/effect-fade-element.css b/vendor/javascript/swiper/modules/effect-fade-element.css new file mode 100644 index 0000000..10ff4e0 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-fade-element.css @@ -0,0 +1,16 @@ +.swiper-fade.swiper-free-mode ::slotted(swiper-slide) { + transition-timing-function: ease-out; + } + .swiper-fade ::slotted(swiper-slide) { + pointer-events: none; + transition-property: opacity; + } + .swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; + } + .swiper-fade ::slotted(.swiper-slide-active) { + pointer-events: auto; + } + .swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; + } diff --git a/vendor/javascript/swiper/modules/effect-fade-element.min.css b/vendor/javascript/swiper/modules/effect-fade-element.min.css new file mode 100644 index 0000000..6fb7280 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-fade-element.min.css @@ -0,0 +1 @@ +.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-fade.css b/vendor/javascript/swiper/modules/effect-fade.css new file mode 100644 index 0000000..0fadca4 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-fade.css @@ -0,0 +1,20 @@ +.swiper-fade { + &.swiper-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + pointer-events: auto; + & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/vendor/javascript/swiper/modules/effect-fade.min.css b/vendor/javascript/swiper/modules/effect-fade.min.css new file mode 100644 index 0000000..4a8c5fc --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-fade.min.css @@ -0,0 +1 @@ +.swiper-fade{&.swiper-free-mode{.swiper-slide{transition-timing-function:ease-out}}.swiper-slide{pointer-events:none;transition-property:opacity;.swiper-slide{pointer-events:none}}.swiper-slide-active{pointer-events:auto;& .swiper-slide-active{pointer-events:auto}}} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-fade.min.mjs b/vendor/javascript/swiper/modules/effect-fade.min.mjs new file mode 100644 index 0000000..aec079c --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-fade.min.mjs @@ -0,0 +1,2 @@ +import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectFade({swiper:e,extendParams:t,on:s}){t({fadeEffect:{crossFade:!1}});effectInit({effect:"fade",swiper:e,on:s,setTranslate:()=>{const{slides:t}=e,s=e.params.fadeEffect;for(let a=0;a{const s=e.slides.map(e=>getSlideTransformEl(e));s.forEach(e=>{e.style.transitionDuration=`${t}ms`}),effectVirtualTransitionEnd({swiper:e,duration:t,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!e.params.cssMode})})}export{EffectFade as default}; +//# sourceMappingURL=effect-fade.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-fade.min.mjs.map b/vendor/javascript/swiper/modules/effect-fade.min.mjs.map new file mode 100644 index 0000000..3382e67 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-fade.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-fade.mjs.mjs","names":["effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectFade","swiper","extendParams","on","fadeEffect","crossFade","effect","setTranslate","slides","params","i","length","slideEl","tx","swiperSlideOffset","virtualTranslate","translate","ty","isHorizontal","slideOpacity","Math","max","abs","progress","min","targetEl","style","opacity","transform","setTransition","duration","transformElements","map","forEach","el","transitionDuration","allSlides","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","spaceBetween","cssMode"],"sources":["0"],"mappings":"YAAcA,eAAkB,4CAClBC,iBAAoB,8CACpBC,+BAAkC,8DAClCC,wBAA2B,0BAEzC,SAASC,YAAWC,OAClBA,EAAMC,aACNA,EAAYC,GACZA,IAEAD,EAAa,CACXE,WAAY,CACVC,WAAW,KAoCfT,WAAW,CACTU,OAAQ,OACRL,SACAE,KACAI,aArCmB,KACnB,MAAMC,OACJA,GACEP,EACEQ,EAASR,EAAOQ,OAAOL,WAC7B,IAAK,IAAIM,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,GAAK,EAAG,CACzC,MAAME,EAAUX,EAAOO,OAAOE,GAE9B,IAAIG,GADWD,EAAQE,kBAElBb,EAAOQ,OAAOM,mBAAkBF,GAAMZ,EAAOe,WAClD,IAAIC,EAAK,EACJhB,EAAOiB,iBACVD,EAAKJ,EACLA,EAAK,GAEP,MAAMM,EAAelB,EAAOQ,OAAOL,WAAWC,UAAYe,KAAKC,IAAI,EAAID,KAAKE,IAAIV,EAAQW,UAAW,GAAK,EAAIH,KAAKI,IAAIJ,KAAKC,IAAIT,EAAQW,UAAW,GAAI,GAC/IE,EAAW5B,aAAaY,EAAQG,GACtCa,EAASC,MAAMC,QAAUR,EACzBM,EAASC,MAAME,UAAY,eAAef,QAASI,WACrD,GAmBAY,cAjBoBC,IACpB,MAAMC,EAAoB9B,EAAOO,OAAOwB,IAAIpB,GAAWb,oBAAoBa,IAC3EmB,EAAkBE,QAAQC,IACxBA,EAAGR,MAAMS,mBAAqB,GAAGL,QAEnChC,2BAA2B,CACzBG,SACA6B,WACAC,oBACAK,WAAW,KASbC,gBAAiB,KAAM,CACrBC,cAAe,EACfC,eAAgB,EAChBC,qBAAqB,EACrBC,aAAc,EACd1B,kBAAmBd,EAAOQ,OAAOiC,WAGvC,QAES1C"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-fade.mjs b/vendor/javascript/swiper/modules/effect-fade.mjs new file mode 100644 index 0000000..a9cac8d --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-fade.mjs @@ -0,0 +1,65 @@ +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectFade({ + swiper, + extendParams, + on +}) { + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectFade as default }; diff --git a/vendor/javascript/swiper/modules/effect-flip-element.css b/vendor/javascript/swiper/modules/effect-flip-element.css new file mode 100644 index 0000000..c647ca6 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-flip-element.css @@ -0,0 +1,16 @@ +.swiper.swiper-flip { + overflow: visible; +} +.swiper-flip ::slotted(swiper-slide) { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + } +.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; + } +.swiper-flip ::slotted(.swiper-slide-active), + .swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; + } +/* Flip slide shadows start *//* Flip slide shadows end */ diff --git a/vendor/javascript/swiper/modules/effect-flip-element.min.css b/vendor/javascript/swiper/modules/effect-flip-element.min.css new file mode 100644 index 0000000..3573137 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-flip-element.min.css @@ -0,0 +1 @@ +.swiper.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){backface-visibility:hidden;pointer-events:none;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-flip.css b/vendor/javascript/swiper/modules/effect-flip.css new file mode 100644 index 0000000..ca517fb --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-flip.css @@ -0,0 +1,30 @@ +.swiper.swiper-flip { + overflow: visible; +} +.swiper-flip { + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} +/* Flip slide shadows start */ +.swiper-flip { + .swiper-slide-shadow-flip.swiper-slide-shadow-top, + .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, + .swiper-slide-shadow-flip.swiper-slide-shadow-left, + .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Flip slide shadows end */ diff --git a/vendor/javascript/swiper/modules/effect-flip.min.css b/vendor/javascript/swiper/modules/effect-flip.min.css new file mode 100644 index 0000000..f667074 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-flip.min.css @@ -0,0 +1 @@ +.swiper.swiper-flip{overflow:visible}.swiper-flip{.swiper-slide{backface-visibility:hidden;pointer-events:none;z-index:1;.swiper-slide{pointer-events:none}}.swiper-slide-active{&,& .swiper-slide-active{pointer-events:auto}}}.swiper-flip{.swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-slide-shadow-flip.swiper-slide-shadow-top{backface-visibility:hidden;z-index:0}} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-flip.min.mjs b/vendor/javascript/swiper/modules/effect-flip.min.mjs new file mode 100644 index 0000000..8b2c952 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-flip.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl,a as getRotateFix}from"../shared/utils.min.mjs";function EffectFlip({swiper:e,extendParams:t,on:s}){t({flipEffect:{slideShadows:!0,limitRotation:!0}});const a=(t,s)=>{let a=e.isHorizontal()?t.querySelector(".swiper-slide-shadow-left"):t.querySelector(".swiper-slide-shadow-top"),r=e.isHorizontal()?t.querySelector(".swiper-slide-shadow-right"):t.querySelector(".swiper-slide-shadow-bottom");a||(a=createShadow("flip",t,e.isHorizontal()?"left":"top")),r||(r=createShadow("flip",t,e.isHorizontal()?"right":"bottom")),a&&(a.style.opacity=Math.max(-s,0)),r&&(r.style.opacity=Math.max(s,0))};effectInit({effect:"flip",swiper:e,on:s,setTranslate:()=>{const{slides:t,rtlTranslate:s}=e,r=e.params.flipEffect,i=getRotateFix(e);for(let o=0;o{const s=e.slides.map(e=>getSlideTransformEl(e));s.forEach(e=>{e.style.transitionDuration=`${t}ms`,e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(e=>{e.style.transitionDuration=`${t}ms`})}),effectVirtualTransitionEnd({swiper:e,duration:t,transformElements:s})},recreateShadows:()=>{e.params.flipEffect,e.slides.forEach(t=>{let s=t.progress;e.params.flipEffect.limitRotation&&(s=Math.max(Math.min(t.progress,1),-1)),a(t,s)})},getEffectParams:()=>e.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!e.params.cssMode})})}export{EffectFlip as default}; +//# sourceMappingURL=effect-flip.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-flip.min.mjs.map b/vendor/javascript/swiper/modules/effect-flip.min.mjs.map new file mode 100644 index 0000000..b076bb9 --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-flip.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-flip.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","getRotateFix","EffectFlip","swiper","extendParams","on","flipEffect","slideShadows","limitRotation","createSlideShadows","slideEl","progress","shadowBefore","isHorizontal","querySelector","shadowAfter","style","opacity","Math","max","effect","setTranslate","slides","rtlTranslate","rtl","params","rotateFix","i","length","min","offset","swiperSlideOffset","rotateY","rotateX","tx","cssMode","translate","ty","zIndex","abs","round","transform","setTransition","duration","transformElements","map","forEach","el","transitionDuration","querySelectorAll","shadowEl","recreateShadows","getEffectParams","perspective","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","spaceBetween","virtualTranslate"],"sources":["0"],"mappings":"YAAcA,iBAAoB,8CACpBC,eAAkB,4CAClBC,iBAAoB,8CACpBC,+BAAkC,8DAClCC,yBAA0BC,iBAAoB,0BAE5D,SAASC,YAAWC,OAClBA,EAAMC,aACNA,EAAYC,GACZA,IAEAD,EAAa,CACXE,WAAY,CACVC,cAAc,EACdC,eAAe,KAGnB,MAAMC,EAAqB,CAACC,EAASC,KACnC,IAAIC,EAAeT,EAAOU,eAAiBH,EAAQI,cAAc,6BAA+BJ,EAAQI,cAAc,4BAClHC,EAAcZ,EAAOU,eAAiBH,EAAQI,cAAc,8BAAgCJ,EAAQI,cAAc,+BACjHF,IACHA,EAAehB,aAAa,OAAQc,EAASP,EAAOU,eAAiB,OAAS,QAE3EE,IACHA,EAAcnB,aAAa,OAAQc,EAASP,EAAOU,eAAiB,QAAU,WAE5ED,IAAcA,EAAaI,MAAMC,QAAUC,KAAKC,KAAKR,EAAU,IAC/DI,IAAaA,EAAYC,MAAMC,QAAUC,KAAKC,IAAIR,EAAU,KA+DlEd,WAAW,CACTuB,OAAQ,OACRjB,SACAE,KACAgB,aAtDmB,KACnB,MAAMC,OACJA,EACAC,aAAcC,GACZrB,EACEsB,EAAStB,EAAOsB,OAAOnB,WACvBoB,EAAYzB,aAAaE,GAC/B,IAAK,IAAIwB,EAAI,EAAGA,EAAIL,EAAOM,OAAQD,GAAK,EAAG,CACzC,MAAMjB,EAAUY,EAAOK,GACvB,IAAIhB,EAAWD,EAAQC,SACnBR,EAAOsB,OAAOnB,WAAWE,gBAC3BG,EAAWO,KAAKC,IAAID,KAAKW,IAAInB,EAAQC,SAAU,IAAK,IAEtD,MAAMmB,EAASpB,EAAQqB,kBAEvB,IAAIC,GADY,IAAMrB,EAElBsB,EAAU,EACVC,EAAK/B,EAAOsB,OAAOU,SAAWL,EAAS3B,EAAOiC,WAAaN,EAC3DO,EAAK,EACJlC,EAAOU,eAKDW,IACTQ,GAAWA,IALXK,EAAKH,EACLA,EAAK,EACLD,GAAWD,EACXA,EAAU,GAIZtB,EAAQM,MAAMsB,QAAUpB,KAAKqB,IAAIrB,KAAKsB,MAAM7B,IAAaW,EAAOM,OAC5DH,EAAOlB,cACTE,EAAmBC,EAASC,GAE9B,MAAM8B,EAAY,eAAeP,QAASG,qBAAsBX,EAAUO,kBAAwBP,EAAUM,SAC3FlC,aAAa2B,EAAQf,GAC7BM,MAAMyB,UAAYA,CAC7B,GAqBAC,cAnBoBC,IACpB,MAAMC,EAAoBzC,EAAOmB,OAAOuB,IAAInC,GAAWV,oBAAoBU,IAC3EkC,EAAkBE,QAAQC,IACxBA,EAAG/B,MAAMgC,mBAAqB,GAAGL,MACjCI,EAAGE,iBAAiB,gHAAgHH,QAAQI,IAC1IA,EAASlC,MAAMgC,mBAAqB,GAAGL,UAG3C5C,2BAA2B,CACzBI,SACAwC,WACAC,uBASFO,gBAnEsB,KAEtBhD,EAAOsB,OAAOnB,WACdH,EAAOmB,OAAOwB,QAAQpC,IACpB,IAAIC,EAAWD,EAAQC,SACnBR,EAAOsB,OAAOnB,WAAWE,gBAC3BG,EAAWO,KAAKC,IAAID,KAAKW,IAAInB,EAAQC,SAAU,IAAK,IAEtDF,EAAmBC,EAASC,MA4D9ByC,gBAAiB,IAAMjD,EAAOsB,OAAOnB,WACrC+C,YAAa,KAAM,EACnBC,gBAAiB,KAAM,CACrBC,cAAe,EACfC,eAAgB,EAChBC,qBAAqB,EACrBC,aAAc,EACdC,kBAAmBxD,EAAOsB,OAAOU,WAGvC,QAESjC"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/effect-flip.mjs b/vendor/javascript/swiper/modules/effect-flip.mjs new file mode 100644 index 0000000..349683c --- /dev/null +++ b/vendor/javascript/swiper/modules/effect-flip.mjs @@ -0,0 +1,110 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl, a as getRotateFix } from '../shared/utils.mjs'; + +function EffectFlip({ + swiper, + extendParams, + on +}) { + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + const rotateFix = getRotateFix(swiper); + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectFlip as default }; diff --git a/vendor/javascript/swiper/modules/free-mode-element.css b/vendor/javascript/swiper/modules/free-mode-element.css new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/vendor/javascript/swiper/modules/free-mode-element.css @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/vendor/javascript/swiper/modules/free-mode-element.min.css b/vendor/javascript/swiper/modules/free-mode-element.min.css new file mode 100644 index 0000000..e93eea7 --- /dev/null +++ b/vendor/javascript/swiper/modules/free-mode-element.min.css @@ -0,0 +1 @@ +.swiper-free-mode>.swiper-wrapper{margin:0 auto;transition-timing-function:ease-out} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/free-mode.css b/vendor/javascript/swiper/modules/free-mode.css new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/vendor/javascript/swiper/modules/free-mode.css @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/vendor/javascript/swiper/modules/free-mode.min.css b/vendor/javascript/swiper/modules/free-mode.min.css new file mode 100644 index 0000000..e93eea7 --- /dev/null +++ b/vendor/javascript/swiper/modules/free-mode.min.css @@ -0,0 +1 @@ +.swiper-free-mode>.swiper-wrapper{margin:0 auto;transition-timing-function:ease-out} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/free-mode.min.mjs b/vendor/javascript/swiper/modules/free-mode.min.mjs new file mode 100644 index 0000000..7ae1029 --- /dev/null +++ b/vendor/javascript/swiper/modules/free-mode.min.mjs @@ -0,0 +1,2 @@ +import{h as now,o as elementTransitionEnd}from"../shared/utils.min.mjs";function freeMode({swiper:e,extendParams:t,emit:o,once:n}){t({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(e,{freeMode:{onTouchStart:function(){if(e.params.cssMode)return;const t=e.getTranslate();e.setTranslate(t),e.setTransition(0),e.touchEventsData.velocities.length=0,e.freeMode.onTouchEnd({currentPos:e.rtl?e.translate:-e.translate})},onTouchMove:function(){if(e.params.cssMode)return;const{touchEventsData:t,touches:o}=e;0===t.velocities.length&&t.velocities.push({position:o[e.isHorizontal()?"startX":"startY"],time:t.touchStartTime}),t.velocities.push({position:o[e.isHorizontal()?"currentX":"currentY"],time:now()})},onTouchEnd:function({currentPos:t}){if(e.params.cssMode)return;const{params:s,wrapperEl:i,rtlTranslate:a,snapGrid:r,touchEventsData:l}=e,m=now()-l.touchStartTime;if(t<-e.minTranslate())e.slideTo(e.activeIndex);else if(t>-e.maxTranslate())e.slides.length1){const t=l.velocities.pop(),o=l.velocities.pop(),n=t.position-o.position,i=t.time-o.time;e.velocity=n/i,e.velocity/=2,Math.abs(e.velocity)150||now()-t.time>300)&&(e.velocity=0)}else e.velocity=0;e.velocity*=s.freeMode.momentumVelocityRatio,l.velocities.length=0;let t=1e3*s.freeMode.momentumRatio;const m=e.velocity*t;let c=e.translate+m;a&&(c=-c);let d,u=!1;const f=20*Math.abs(e.velocity)*s.freeMode.momentumBounceRatio;let p;if(ce.minTranslate())s.freeMode.momentumBounce?(c-e.minTranslate()>f&&(c=e.minTranslate()+f),d=e.minTranslate(),u=!0,l.allowMomentumBounce=!0):c=e.minTranslate(),s.loop&&s.centeredSlides&&(p=!0);else if(s.freeMode.sticky){let t;for(let e=0;e-c){t=e;break}c=Math.abs(r[t]-c){e.loopFix()}),0!==e.velocity){if(t=a?Math.abs((-c-e.translate)/e.velocity):Math.abs((c-e.translate)/e.velocity),s.freeMode.sticky){const o=Math.abs((a?-c:c)-e.translate),n=e.slidesSizesGrid[e.activeIndex];t=o{e&&!e.destroyed&&l.allowMomentumBounce&&(o("momentumBounce"),e.setTransition(s.speed),setTimeout(()=>{e.setTranslate(d),elementTransitionEnd(i,()=>{e&&!e.destroyed&&e.transitionEnd()})},0))})):e.velocity?(o("_freeModeNoMomentumRelease"),e.updateProgress(c),e.setTransition(t),e.setTranslate(c),e.transitionStart(!0,e.swipeDirection),e.animating||(e.animating=!0,elementTransitionEnd(i,()=>{e&&!e.destroyed&&e.transitionEnd()}))):e.updateProgress(c),e.updateActiveIndex(),e.updateSlidesClasses()}else{if(s.freeMode.sticky)return void e.slideToClosest();s.freeMode&&o("_freeModeNoMomentumRelease")}(!s.freeMode.momentum||m>=s.longSwipesMs)&&(o("_freeModeStaticRelease"),e.updateProgress(),e.updateActiveIndex(),e.updateSlidesClasses())}}}})}export{freeMode as default}; +//# sourceMappingURL=free-mode.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/free-mode.min.mjs.map b/vendor/javascript/swiper/modules/free-mode.min.mjs.map new file mode 100644 index 0000000..dbd36f1 --- /dev/null +++ b/vendor/javascript/swiper/modules/free-mode.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"free-mode.mjs.mjs","names":["now","elementTransitionEnd","freeMode","swiper","extendParams","emit","once","enabled","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","sticky","minimumVelocity","Object","assign","onTouchStart","params","cssMode","translate","getTranslate","setTranslate","setTransition","touchEventsData","velocities","length","onTouchEnd","currentPos","rtl","onTouchMove","data","touches","push","position","isHorizontal","time","touchStartTime","wrapperEl","rtlTranslate","snapGrid","timeDiff","minTranslate","slideTo","activeIndex","maxTranslate","slides","lastMoveEvent","pop","velocityEvent","distance","velocity","Math","abs","momentumDuration","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","allowMomentumBounce","loop","centeredSlides","nextSlide","j","swipeDirection","loopFix","moveDistance","currentSlideSize","slidesSizesGrid","speed","slideToClosest","updateProgress","transitionStart","animating","destroyed","setTimeout","transitionEnd","updateActiveIndex","updateSlidesClasses","longSwipesMs"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/free-mode.mjs b/vendor/javascript/swiper/modules/free-mode.mjs new file mode 100644 index 0000000..0c36dce --- /dev/null +++ b/vendor/javascript/swiper/modules/free-mode.mjs @@ -0,0 +1,235 @@ +import { h as now, o as elementTransitionEnd } from '../shared/utils.mjs'; + +function freeMode({ + swiper, + extendParams, + emit, + once +}) { + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd({ + currentPos + }) { + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); +} + +export { freeMode as default }; diff --git a/vendor/javascript/swiper/modules/grid-element.css b/vendor/javascript/swiper/modules/grid-element.css new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/vendor/javascript/swiper/modules/grid-element.css @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/vendor/javascript/swiper/modules/grid-element.min.css b/vendor/javascript/swiper/modules/grid-element.min.css new file mode 100644 index 0000000..faac94f --- /dev/null +++ b/vendor/javascript/swiper/modules/grid-element.min.css @@ -0,0 +1 @@ +.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-direction:column;flex-wrap:wrap} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/grid.css b/vendor/javascript/swiper/modules/grid.css new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/vendor/javascript/swiper/modules/grid.css @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/vendor/javascript/swiper/modules/grid.min.css b/vendor/javascript/swiper/modules/grid.min.css new file mode 100644 index 0000000..faac94f --- /dev/null +++ b/vendor/javascript/swiper/modules/grid.min.css @@ -0,0 +1 @@ +.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-direction:column;flex-wrap:wrap} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/grid.min.mjs b/vendor/javascript/swiper/modules/grid.min.mjs new file mode 100644 index 0000000..0a44280 --- /dev/null +++ b/vendor/javascript/swiper/modules/grid.min.mjs @@ -0,0 +1,2 @@ +function Grid({swiper:e,extendParams:i,on:r}){let a,t,s,l;i({grid:{rows:1,fill:"column"}});const o=()=>{let i=e.params.spaceBetween;return"string"==typeof i&&i.indexOf("%")>=0?i=parseFloat(i.replace("%",""))/100*e.size:"string"==typeof i&&(i=parseFloat(i)),i};r("init",()=>{l=e.params.grid&&e.params.grid.rows>1}),r("update",()=>{const{params:i,el:r}=e,a=i.grid&&i.grid.rows>1;l&&!a?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),s=1,e.emitContainerClasses()):!l&&a&&(r.classList.add(`${i.containerModifierClass}grid`),"column"===i.grid.fill&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),l=a}),e.grid={initSlides:i=>{const{slidesPerView:r}=e.params,{rows:l,fill:o}=e.params.grid,n=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:i.length;s=Math.floor(n/l),a=Math.floor(n/l)===n/l?n:Math.ceil(n/l)*l,"auto"!==r&&"row"===o&&(a=Math.max(a,r*l)),t=a/l},unsetSlides:()=>{e.slides&&e.slides.forEach(i=>{i.swiperSlideGridSet&&(i.style.height="",i.style[e.getDirectionLabel("margin-top")]="")})},updateSlide:(i,r,l)=>{const{slidesPerGroup:n}=e.params,d=o(),{rows:p,fill:c}=e.params.grid,g=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:l.length;let u,h,m;if("row"===c&&n>1){const e=Math.floor(i/(n*p)),t=i-p*n*e,s=0===e?n:Math.min(Math.ceil((g-e*p*n)/p),n);m=Math.floor(t/s),h=t-m*s+e*n,u=h+m*a/p,r.style.order=u}else"column"===c?(h=Math.floor(i/p),m=i-h*p,(h>s||h===s&&m===p-1)&&(m+=1,m>=p&&(m=0,h+=1))):(m=Math.floor(i/t),h=i-m*t);r.row=m,r.column=h,r.style.height=`calc((100% - ${(p-1)*d}px) / ${p})`,r.style[e.getDirectionLabel("margin-top")]=0!==m?d&&`${d}px`:"",r.swiperSlideGridSet=!0},updateWrapperSize:(i,r)=>{const{centeredSlides:t,roundLengths:s}=e.params,l=o(),{rows:n}=e.params.grid;if(e.virtualSize=(i+l)*a,e.virtualSize=Math.ceil(e.virtualSize/n)-l,e.params.cssMode||(e.wrapperEl.style[e.getDirectionLabel("width")]=`${e.virtualSize+l}px`),t){const i=[];for(let a=0;a { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; +} + +export { Grid as default }; diff --git a/vendor/javascript/swiper/modules/hash-navigation-element.css b/vendor/javascript/swiper/modules/hash-navigation-element.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/hash-navigation-element.min.css b/vendor/javascript/swiper/modules/hash-navigation-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/hash-navigation.css b/vendor/javascript/swiper/modules/hash-navigation.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/hash-navigation.min.css b/vendor/javascript/swiper/modules/hash-navigation.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/hash-navigation.min.mjs b/vendor/javascript/swiper/modules/hash-navigation.min.mjs new file mode 100644 index 0000000..cae466a --- /dev/null +++ b/vendor/javascript/swiper/modules/hash-navigation.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument,a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{e as elementChildren}from"../shared/utils.min.mjs";function HashNavigation({swiper:a,extendParams:e,emit:t,on:s}){let i=!1;const n=getDocument(),r=getWindow();e({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(e,t){if(a.virtual&&a.params.virtual.enabled){const e=a.slides.find(a=>a.getAttribute("data-hash")===t);if(!e)return 0;return parseInt(e.getAttribute("data-swiper-slide-index"),10)}return a.getSlideIndex(elementChildren(a.slidesEl,`.${a.params.slideClass}[data-hash="${t}"], swiper-slide[data-hash="${t}"]`)[0])}}});const h=()=>{t("hashChange");const e=n.location.hash.replace("#",""),s=a.virtual&&a.params.virtual.enabled?a.slidesEl.querySelector(`[data-swiper-slide-index="${a.activeIndex}"]`):a.slides[a.activeIndex];if(e!==(s?s.getAttribute("data-hash"):"")){const t=a.params.hashNavigation.getSlideIndex(a,e);if(void 0===t||Number.isNaN(t))return;a.slideTo(t)}},d=()=>{if(!i||!a.params.hashNavigation.enabled)return;const e=a.virtual&&a.params.virtual.enabled?a.slidesEl.querySelector(`[data-swiper-slide-index="${a.activeIndex}"]`):a.slides[a.activeIndex],s=e?e.getAttribute("data-hash")||e.getAttribute("data-history"):"";a.params.hashNavigation.replaceState&&r.history&&r.history.replaceState?(r.history.replaceState(null,null,`#${s}`||""),t("hashSet")):(n.location.hash=s||"",t("hashSet"))};s("init",()=>{a.params.hashNavigation.enabled&&(()=>{if(!a.params.hashNavigation.enabled||a.params.history&&a.params.history.enabled)return;i=!0;const e=n.location.hash.replace("#","");if(e){const t=0,s=a.params.hashNavigation.getSlideIndex(a,e);a.slideTo(s||0,t,a.params.runCallbacksOnInit,!0)}a.params.hashNavigation.watchState&&r.addEventListener("hashchange",h)})()}),s("destroy",()=>{a.params.hashNavigation.enabled&&a.params.hashNavigation.watchState&&r.removeEventListener("hashchange",h)}),s("transitionEnd _freeModeNoMomentumRelease",()=>{i&&d()}),s("slideChange",()=>{i&&a.params.cssMode&&d()})}export{HashNavigation as default}; +//# sourceMappingURL=hash-navigation.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/hash-navigation.min.mjs.map b/vendor/javascript/swiper/modules/hash-navigation.min.mjs.map new file mode 100644 index 0000000..3d1ba9b --- /dev/null +++ b/vendor/javascript/swiper/modules/hash-navigation.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"hash-navigation.mjs.mjs","names":["getDocument","getWindow","elementChildren","HashNavigation","swiper","extendParams","emit","on","initialized","document","window","hashNavigation","enabled","replaceState","watchState","getSlideIndex","_s","hash","virtual","params","slideWithHash","slides","find","slideEl","getAttribute","parseInt","slidesEl","slideClass","onHashChange","newHash","location","replace","activeSlideEl","querySelector","activeIndex","newIndex","Number","isNaN","slideTo","setHash","activeSlideHash","history","speed","index","runCallbacksOnInit","addEventListener","init","removeEventListener","cssMode"],"sources":["0"],"mappings":"YAAcA,iBAAkBC,cAAiB,+CACnCC,oBAAuB,0BAErC,SAASC,gBAAeC,OACtBA,EAAMC,aACNA,EAAYC,KACZA,EAAIC,GACJA,IAEA,IAAIC,GAAc,EAClB,MAAMC,EAAWT,cACXU,EAAST,YACfI,EAAa,CACXM,eAAgB,CACdC,SAAS,EACTC,cAAc,EACdC,YAAY,EACZ,aAAAC,CAAcC,EAAIC,GAChB,GAAIb,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAS,CACnD,MAAMQ,EAAgBhB,EAAOiB,OAAOC,KAAKC,GAAWA,EAAQC,aAAa,eAAiBP,GAC1F,IAAKG,EAAe,OAAO,EAE3B,OADcK,SAASL,EAAcI,aAAa,2BAA4B,GAEhF,CACA,OAAOpB,EAAOW,cAAcb,gBAAgBE,EAAOsB,SAAU,IAAItB,EAAOe,OAAOQ,yBAAyBV,gCAAmCA,OAAU,GACvJ,KAGJ,MAAMW,EAAe,KACnBtB,EAAK,cACL,MAAMuB,EAAUpB,EAASqB,SAASb,KAAKc,QAAQ,IAAK,IAC9CC,EAAgB5B,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAUR,EAAOsB,SAASO,cAAc,6BAA6B7B,EAAO8B,iBAAmB9B,EAAOiB,OAAOjB,EAAO8B,aAElL,GAAIL,KADoBG,EAAgBA,EAAcR,aAAa,aAAe,IACjD,CAC/B,MAAMW,EAAW/B,EAAOe,OAAOR,eAAeI,cAAcX,EAAQyB,GACpE,QAAwB,IAAbM,GAA4BC,OAAOC,MAAMF,GAAW,OAC/D/B,EAAOkC,QAAQH,EACjB,GAEII,EAAU,KACd,IAAK/B,IAAgBJ,EAAOe,OAAOR,eAAeC,QAAS,OAC3D,MAAMoB,EAAgB5B,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAUR,EAAOsB,SAASO,cAAc,6BAA6B7B,EAAO8B,iBAAmB9B,EAAOiB,OAAOjB,EAAO8B,aAC5KM,EAAkBR,EAAgBA,EAAcR,aAAa,cAAgBQ,EAAcR,aAAa,gBAAkB,GAC5HpB,EAAOe,OAAOR,eAAeE,cAAgBH,EAAO+B,SAAW/B,EAAO+B,QAAQ5B,cAChFH,EAAO+B,QAAQ5B,aAAa,KAAM,KAAM,IAAI2B,KAAqB,IACjElC,EAAK,aAELG,EAASqB,SAASb,KAAOuB,GAAmB,GAC5ClC,EAAK,aAqBTC,EAAG,OAAQ,KACLH,EAAOe,OAAOR,eAAeC,SAnBtB,MACX,IAAKR,EAAOe,OAAOR,eAAeC,SAAWR,EAAOe,OAAOsB,SAAWrC,EAAOe,OAAOsB,QAAQ7B,QAAS,OACrGJ,GAAc,EACd,MAAMS,EAAOR,EAASqB,SAASb,KAAKc,QAAQ,IAAK,IACjD,GAAId,EAAM,CACR,MAAMyB,EAAQ,EACRC,EAAQvC,EAAOe,OAAOR,eAAeI,cAAcX,EAAQa,GACjEb,EAAOkC,QAAQK,GAAS,EAAGD,EAAOtC,EAAOe,OAAOyB,oBAAoB,EACtE,CACIxC,EAAOe,OAAOR,eAAeG,YAC/BJ,EAAOmC,iBAAiB,aAAcjB,IAUtCkB,KAGJvC,EAAG,UAAW,KACRH,EAAOe,OAAOR,eAAeC,SAV7BR,EAAOe,OAAOR,eAAeG,YAC/BJ,EAAOqC,oBAAoB,aAAcnB,KAa7CrB,EAAG,2CAA4C,KACzCC,GACF+B,MAGJhC,EAAG,cAAe,KACZC,GAAeJ,EAAOe,OAAO6B,SAC/BT,KAGN,QAESpC"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/hash-navigation.mjs b/vendor/javascript/swiper/modules/hash-navigation.mjs new file mode 100644 index 0000000..a972541 --- /dev/null +++ b/vendor/javascript/swiper/modules/hash-navigation.mjs @@ -0,0 +1,92 @@ +import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { e as elementChildren } from '../shared/utils.mjs'; + +function HashNavigation({ + swiper, + extendParams, + emit, + on +}) { + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.find(slideEl => slideEl.getAttribute('data-hash') === hash); + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); +} + +export { HashNavigation as default }; diff --git a/vendor/javascript/swiper/modules/history-element.css b/vendor/javascript/swiper/modules/history-element.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/history-element.min.css b/vendor/javascript/swiper/modules/history-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/history.css b/vendor/javascript/swiper/modules/history.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/history.min.css b/vendor/javascript/swiper/modules/history.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/history.min.mjs b/vendor/javascript/swiper/modules/history.min.mjs new file mode 100644 index 0000000..772dfa9 --- /dev/null +++ b/vendor/javascript/swiper/modules/history.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";function History({swiper:e,extendParams:t,on:a}){t({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let s=!1,r={};const i=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=getWindow();let a;a=e?new URL(e):t.location;const s=a.pathname.slice(1).split("/").filter(e=>""!==e),r=s.length;return{key:s[r-2],value:s[r-1]}},l=(t,a)=>{const r=getWindow();if(!s||!e.params.history.enabled)return;let o;o=e.params.url?new URL(e.params.url):r.location;const l=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${a}"]`):e.slides[a];let n=i(l.getAttribute("data-history"));if(e.params.history.root.length>0){let a=e.params.history.root;"/"===a[a.length-1]&&(a=a.slice(0,a.length-1)),n=`${a}/${t?`${t}/`:""}${n}`}else o.pathname.includes(t)||(n=`${t?`${t}/`:""}${n}`);e.params.history.keepQuery&&(n+=o.search);const p=r.history.state;p&&p.value===n||(e.params.history.replaceState?r.history.replaceState({value:n},null,n):r.history.pushState({value:n},null,n))},n=(t,a,s)=>{if(a)for(let r=0,o=e.slides.length;r{r=o(e.params.url),n(e.params.speed,r.value,!1)};a("init",()=>{e.params.history.enabled&&(()=>{const t=getWindow();if(e.params.history){if(!t.history||!t.history.pushState)return e.params.history.enabled=!1,void(e.params.hashNavigation.enabled=!0);s=!0,r=o(e.params.url),r.key||r.value?(n(0,r.value,e.params.runCallbacksOnInit),e.params.history.replaceState||t.addEventListener("popstate",p)):e.params.history.replaceState||t.addEventListener("popstate",p)}})()}),a("destroy",()=>{e.params.history.enabled&&(()=>{const t=getWindow();e.params.history.replaceState||t.removeEventListener("popstate",p)})()}),a("transitionEnd _freeModeNoMomentumRelease",()=>{s&&l(e.params.history.key,e.activeIndex)}),a("slideChange",()=>{s&&e.params.cssMode&&l(e.params.history.key,e.activeIndex)})}export{History as default}; +//# sourceMappingURL=history.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/history.min.mjs.map b/vendor/javascript/swiper/modules/history.min.mjs.map new file mode 100644 index 0000000..63ac62b --- /dev/null +++ b/vendor/javascript/swiper/modules/history.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"history.mjs.mjs","names":["getWindow","History","swiper","extendParams","on","history","enabled","root","replaceState","key","keepQuery","initialized","paths","slugify","text","toString","replace","getPathValues","urlOverride","window","location","URL","pathArray","pathname","slice","split","filter","part","total","length","value","setHistory","index","params","url","slide","virtual","slidesEl","querySelector","slides","getAttribute","includes","search","currentState","state","pushState","scrollToSlide","speed","runCallbacks","i","getSlideIndex","slideTo","setHistoryPopState","hashNavigation","runCallbacksOnInit","addEventListener","init","removeEventListener","destroy","activeIndex","cssMode"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/history.mjs b/vendor/javascript/swiper/modules/history.mjs new file mode 100644 index 0000000..c4fa3a2 --- /dev/null +++ b/vendor/javascript/swiper/modules/history.mjs @@ -0,0 +1,141 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; + +function History({ + swiper, + extendParams, + on +}) { + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); +} + +export { History as default }; diff --git a/vendor/javascript/swiper/modules/index.min.mjs b/vendor/javascript/swiper/modules/index.min.mjs new file mode 100644 index 0000000..41b89c3 --- /dev/null +++ b/vendor/javascript/swiper/modules/index.min.mjs @@ -0,0 +1,2 @@ +export{default as Virtual}from"./virtual.min.mjs";export{default as Keyboard}from"./keyboard.min.mjs";export{default as Mousewheel}from"./mousewheel.min.mjs";export{default as Navigation}from"./navigation.min.mjs";export{default as Pagination}from"./pagination.min.mjs";export{default as Scrollbar}from"./scrollbar.min.mjs";export{default as Parallax}from"./parallax.min.mjs";export{default as Zoom}from"./zoom.min.mjs";export{default as Controller}from"./controller.min.mjs";export{default as A11y}from"./a11y.min.mjs";export{default as History}from"./history.min.mjs";export{default as HashNavigation}from"./hash-navigation.min.mjs";export{default as Autoplay}from"./autoplay.min.mjs";export{default as Thumbs}from"./thumbs.min.mjs";export{default as FreeMode}from"./free-mode.min.mjs";export{default as Grid}from"./grid.min.mjs";export{default as Manipulation}from"./manipulation.min.mjs";export{default as EffectFade}from"./effect-fade.min.mjs";export{default as EffectCube}from"./effect-cube.min.mjs";export{default as EffectFlip}from"./effect-flip.min.mjs";export{default as EffectCoverflow}from"./effect-coverflow.min.mjs";export{default as EffectCreative}from"./effect-creative.min.mjs";export{default as EffectCards}from"./effect-cards.min.mjs"; +//# sourceMappingURL=index.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/index.min.mjs.map b/vendor/javascript/swiper/modules/index.min.mjs.map new file mode 100644 index 0000000..1492964 --- /dev/null +++ b/vendor/javascript/swiper/modules/index.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.mjs.mjs","names":[],"sources":["0"],"mappings":"OAAQ,uBAAyB,2BACzB,wBAA0B,4BAC1B,0BAA4B,8BAC5B,0BAA4B,8BAC5B,0BAA4B,8BAC5B,yBAA2B,6BAC3B,wBAA0B,4BAC1B,oBAAsB,wBACtB,0BAA4B,8BAC5B,oBAAsB,wBACtB,uBAAyB,2BACzB,8BAAgC,mCAChC,wBAA0B,4BAC1B,sBAAwB,0BACxB,wBAA0B,6BAC1B,oBAAsB,wBACtB,4BAA8B,gCAC9B,0BAA4B,+BAC5B,0BAA4B,+BAC5B,0BAA4B,+BAC5B,+BAAiC,oCACjC,8BAAgC,mCAChC,2BAA6B"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/index.mjs b/vendor/javascript/swiper/modules/index.mjs new file mode 100644 index 0000000..3186045 --- /dev/null +++ b/vendor/javascript/swiper/modules/index.mjs @@ -0,0 +1,23 @@ +export {default as Virtual} from './virtual.mjs'; +export {default as Keyboard} from './keyboard.mjs'; +export {default as Mousewheel} from './mousewheel.mjs'; +export {default as Navigation} from './navigation.mjs'; +export {default as Pagination} from './pagination.mjs'; +export {default as Scrollbar} from './scrollbar.mjs'; +export {default as Parallax} from './parallax.mjs'; +export {default as Zoom} from './zoom.mjs'; +export {default as Controller} from './controller.mjs'; +export {default as A11y} from './a11y.mjs'; +export {default as History} from './history.mjs'; +export {default as HashNavigation} from './hash-navigation.mjs'; +export {default as Autoplay} from './autoplay.mjs'; +export {default as Thumbs} from './thumbs.mjs'; +export {default as FreeMode} from './free-mode.mjs'; +export {default as Grid} from './grid.mjs'; +export {default as Manipulation} from './manipulation.mjs'; +export {default as EffectFade} from './effect-fade.mjs'; +export {default as EffectCube} from './effect-cube.mjs'; +export {default as EffectFlip} from './effect-flip.mjs'; +export {default as EffectCoverflow} from './effect-coverflow.mjs'; +export {default as EffectCreative} from './effect-creative.mjs'; +export {default as EffectCards} from './effect-cards.mjs'; \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/keyboard-element.css b/vendor/javascript/swiper/modules/keyboard-element.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/keyboard-element.min.css b/vendor/javascript/swiper/modules/keyboard-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/keyboard.css b/vendor/javascript/swiper/modules/keyboard.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/keyboard.min.css b/vendor/javascript/swiper/modules/keyboard.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/keyboard.min.mjs b/vendor/javascript/swiper/modules/keyboard.min.mjs new file mode 100644 index 0000000..5264100 --- /dev/null +++ b/vendor/javascript/swiper/modules/keyboard.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument,a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{d as elementParents,f as elementOffset}from"../shared/utils.min.mjs";function Keyboard({swiper:e,extendParams:t,on:n,emit:a}){const r=getDocument(),i=getWindow();function l(t){if(!e.enabled)return;const{rtlTranslate:n}=e;let l=t;l.originalEvent&&(l=l.originalEvent);const o=l.keyCode||l.charCode,s=e.params.keyboard.pageUpDown,d=s&&33===o,f=s&&34===o,m=37===o,c=39===o,p=38===o,b=40===o;if(!e.allowSlideNext&&(e.isHorizontal()&&c||e.isVertical()&&b||f))return!1;if(!e.allowSlidePrev&&(e.isHorizontal()&&m||e.isVertical()&&p||d))return!1;if(l.shiftKey||l.altKey||l.ctrlKey||l.metaKey)return;if(r.activeElement&&(r.activeElement.isContentEditable||r.activeElement.nodeName&&("input"===r.activeElement.nodeName.toLowerCase()||"textarea"===r.activeElement.nodeName.toLowerCase())))return;if(e.params.keyboard.onlyInViewport&&(d||f||m||c||p||b)){let t=!1;if(elementParents(e.el,`.${e.params.slideClass}, swiper-slide`).length>0&&0===elementParents(e.el,`.${e.params.slideActiveClass}`).length)return;const a=e.el,r=a.clientWidth,l=a.clientHeight,o=i.innerWidth,s=i.innerHeight,d=elementOffset(a);n&&(d.left-=a.scrollLeft);const f=[[d.left,d.top],[d.left+r,d.top],[d.left,d.top+l],[d.left+r,d.top+l]];for(let e=0;e=0&&n[0]<=o&&n[1]>=0&&n[1]<=s){if(0===n[0]&&0===n[1])continue;t=!0}}if(!t)return}const u=e.params.keyboard.speed;e.isHorizontal()?((d||f||m||c)&&(l.preventDefault?l.preventDefault():l.returnValue=!1),((f||c)&&!n||(d||m)&&n)&&e.slideNext(u),((d||m)&&!n||(f||c)&&n)&&e.slidePrev(u)):((d||f||p||b)&&(l.preventDefault?l.preventDefault():l.returnValue=!1),(f||b)&&e.slideNext(u),(d||p)&&e.slidePrev(u)),a("keyPress",o)}function o(){e.keyboard.enabled||(r.addEventListener("keydown",l),e.keyboard.enabled=!0)}function s(){e.keyboard.enabled&&(r.removeEventListener("keydown",l),e.keyboard.enabled=!1)}e.keyboard={enabled:!1},t({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0,speed:void 0}}),n("init",()=>{e.params.keyboard.enabled&&o()}),n("destroy",()=>{e.keyboard.enabled&&s()}),Object.assign(e.keyboard,{enable:o,disable:s})}export{Keyboard as default}; +//# sourceMappingURL=keyboard.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/keyboard.min.mjs.map b/vendor/javascript/swiper/modules/keyboard.min.mjs.map new file mode 100644 index 0000000..d2b0bd6 --- /dev/null +++ b/vendor/javascript/swiper/modules/keyboard.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"keyboard.mjs.mjs","names":["getDocument","getWindow","elementParents","elementOffset","Keyboard","swiper","extendParams","on","emit","document","window","handle","event","enabled","rtlTranslate","rtl","e","originalEvent","kc","keyCode","charCode","pageUpDown","params","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","allowSlideNext","isHorizontal","isVertical","allowSlidePrev","shiftKey","altKey","ctrlKey","metaKey","activeElement","isContentEditable","nodeName","toLowerCase","onlyInViewport","inView","el","slideClass","length","slideActiveClass","swiperWidth","clientWidth","swiperHeight","clientHeight","windowWidth","innerWidth","windowHeight","innerHeight","swiperOffset","left","scrollLeft","swiperCoord","top","i","point","speed","preventDefault","returnValue","slideNext","slidePrev","enable","addEventListener","disable","removeEventListener","undefined","Object","assign"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/keyboard.mjs b/vendor/javascript/swiper/modules/keyboard.mjs new file mode 100644 index 0000000..394d292 --- /dev/null +++ b/vendor/javascript/swiper/modules/keyboard.mjs @@ -0,0 +1,118 @@ +import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { d as elementParents, f as elementOffset } from '../shared/utils.mjs'; + +/* eslint-disable consistent-return */ +function Keyboard({ + swiper, + extendParams, + on, + emit +}) { + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true, + speed: undefined + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && (document.activeElement.isContentEditable || document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea'))) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + const speed = swiper.params.keyboard.speed; + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(speed); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(speed); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(speed); + if (isPageUp || isArrowUp) swiper.slidePrev(speed); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); +} + +export { Keyboard as default }; diff --git a/vendor/javascript/swiper/modules/manipulation-element.css b/vendor/javascript/swiper/modules/manipulation-element.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/manipulation-element.min.css b/vendor/javascript/swiper/modules/manipulation-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/manipulation.css b/vendor/javascript/swiper/modules/manipulation.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/manipulation.min.css b/vendor/javascript/swiper/modules/manipulation.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/manipulation.min.mjs b/vendor/javascript/swiper/modules/manipulation.min.mjs new file mode 100644 index 0000000..b78c823 --- /dev/null +++ b/vendor/javascript/swiper/modules/manipulation.min.mjs @@ -0,0 +1,2 @@ +import{s as setInnerHTML}from"../shared/utils.min.mjs";function appendSlide(e){const l=this,{params:o,slidesEl:t}=l;o.loop&&l.loopDestroy();const i=e=>{if("string"==typeof e){const l=document.createElement("div");setInnerHTML(l,e),t.append(l.children[0]),setInnerHTML(l,"")}else t.append(e)};if("object"==typeof e&&"length"in e)for(let l=0;l{if("string"==typeof e){const l=document.createElement("div");setInnerHTML(l,e),i.prepend(l.children[0]),setInnerHTML(l,"")}else i.prepend(e)};if("object"==typeof e&&"length"in e){for(let l=0;l=d)return void o.appendSlide(l);let p=s>e?s+1:s;const r=[];for(let l=d-1;l>=e;l-=1){const e=o.slides[l];e.remove(),r.unshift(e)}if("object"==typeof l&&"length"in l){for(let e=0;ee?s+l.length:s}else n.append(l);for(let e=0;e { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + setInnerHTML(tempDOM, slideEl); + slidesEl.append(tempDOM.children[0]); + setInnerHTML(tempDOM, ''); + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } +} + +function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + setInnerHTML(tempDOM, slideEl); + slidesEl.prepend(tempDOM.children[0]); + setInnerHTML(tempDOM, ''); + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); +} + +function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); +} + +function Manipulation({ + swiper +}) { + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); +} + +export { Manipulation as default }; diff --git a/vendor/javascript/swiper/modules/mousewheel-element.css b/vendor/javascript/swiper/modules/mousewheel-element.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/mousewheel-element.min.css b/vendor/javascript/swiper/modules/mousewheel-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/mousewheel.css b/vendor/javascript/swiper/modules/mousewheel.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/mousewheel.min.css b/vendor/javascript/swiper/modules/mousewheel.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/mousewheel.min.mjs b/vendor/javascript/swiper/modules/mousewheel.min.mjs new file mode 100644 index 0000000..2f50a41 --- /dev/null +++ b/vendor/javascript/swiper/modules/mousewheel.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{n as nextTick,h as now}from"../shared/utils.min.mjs";function Mousewheel({swiper:e,extendParams:t,on:a,emit:s}){const n=getWindow();let l;t({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),e.mousewheel={enabled:!1};let i,r=now();const o=[];function d(){e.enabled&&(e.mouseEntered=!0)}function m(){e.enabled&&(e.mouseEntered=!1)}function p(t){return!(e.params.mousewheel.thresholdDelta&&t.delta=6&&now()-r<60||(t.direction<0?e.isEnd&&!e.params.loop||e.animating||(e.slideNext(),s("scroll",t.raw)):e.isBeginning&&!e.params.loop||e.animating||(e.slidePrev(),s("scroll",t.raw)),r=(new n.Date).getTime(),!1)))}function u(t){let a=t,n=!0;if(!e.enabled)return;if(t.target.closest(`.${e.params.mousewheel.noMousewheelClass}`))return;const r=e.params.mousewheel;e.params.cssMode&&a.preventDefault();let d=e.el;"container"!==e.params.mousewheel.eventsTarget&&(d=document.querySelector(e.params.mousewheel.eventsTarget));const m=d&&d.contains(a.target);if(!e.mouseEntered&&!m&&!r.releaseOnEdges)return!0;a.originalEvent&&(a=a.originalEvent);let u=0;const h=e.rtlTranslate?-1:1,c=function(e){let t=0,a=0,s=0,n=0;return"detail"in e&&(a=e.detail),"wheelDelta"in e&&(a=-e.wheelDelta/120),"wheelDeltaY"in e&&(a=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=a,a=0),s=10*t,n=10*a,"deltaY"in e&&(n=e.deltaY),"deltaX"in e&&(s=e.deltaX),e.shiftKey&&!s&&(s=n,n=0),(s||n)&&e.deltaMode&&(1===e.deltaMode?(s*=40,n*=40):(s*=800,n*=800)),s&&!t&&(t=s<1?-1:1),n&&!a&&(a=n<1?-1:1),{spinX:t,spinY:a,pixelX:s,pixelY:n}}(a);if(r.forceToAxis)if(e.isHorizontal()){if(!(Math.abs(c.pixelX)>Math.abs(c.pixelY)))return!0;u=-c.pixelX*h}else{if(!(Math.abs(c.pixelY)>Math.abs(c.pixelX)))return!0;u=-c.pixelY}else u=Math.abs(c.pixelX)>Math.abs(c.pixelY)?-c.pixelX*h:-c.pixelY;if(0===u)return!0;r.invert&&(u=-u);let w=e.getTranslate()+u*r.sensitivity;if(w>=e.minTranslate()&&(w=e.minTranslate()),w<=e.maxTranslate()&&(w=e.maxTranslate()),n=!!e.params.loop||!(w===e.minTranslate()||w===e.maxTranslate()),n&&e.params.nested&&a.stopPropagation(),e.params.freeMode&&e.params.freeMode.enabled){const t={time:now(),delta:Math.abs(u),direction:Math.sign(u)},n=i&&t.time=e.minTranslate()&&(d=e.minTranslate()),d<=e.maxTranslate()&&(d=e.maxTranslate()),e.setTransition(0),e.setTranslate(d),e.updateProgress(),e.updateActiveIndex(),e.updateSlidesClasses(),(!m&&e.isBeginning||!p&&e.isEnd)&&e.updateSlidesClasses(),e.params.loop&&e.loopFix({direction:t.direction<0?"next":"prev",byMousewheel:!0}),e.params.freeMode.sticky){clearTimeout(l),l=void 0,o.length>=15&&o.shift();const a=o.length?o[o.length-1]:void 0,s=o[0];if(o.push(t),a&&(t.delta>a.delta||t.direction!==a.direction))o.splice(0);else if(o.length>=15&&t.time-s.time<500&&s.delta-t.delta>=1&&t.delta<=6){const a=u>0?.8:.2;i=t,o.splice(0),l=nextTick(()=>{!e.destroyed&&e.params&&e.slideToClosest(e.params.speed,!0,void 0,a)},0)}l||(l=nextTick(()=>{if(e.destroyed||!e.params)return;i=t,o.splice(0),e.slideToClosest(e.params.speed,!0,void 0,.5)},500))}if(n||s("scroll",a),e.params.autoplay&&e.params.autoplay.disableOnInteraction&&e.autoplay.stop(),r.releaseOnEdges&&(d===e.minTranslate()||d===e.maxTranslate()))return!0}}else{const a={time:now(),delta:Math.abs(u),direction:Math.sign(u),raw:t};o.length>=2&&o.shift();const s=o.length?o[o.length-1]:void 0;if(o.push(a),s?(a.direction!==s.direction||a.delta>s.delta||a.time>s.time+150)&&p(a):p(a),function(t){const a=e.params.mousewheel;if(t.direction<0){if(e.isEnd&&!e.params.loop&&a.releaseOnEdges)return!0}else if(e.isBeginning&&!e.params.loop&&a.releaseOnEdges)return!0;return!1}(a))return!0}return a.preventDefault?a.preventDefault():a.returnValue=!1,!1}function h(t){let a=e.el;"container"!==e.params.mousewheel.eventsTarget&&(a=document.querySelector(e.params.mousewheel.eventsTarget)),a[t]("mouseenter",d),a[t]("mouseleave",m),a[t]("wheel",u)}function c(){return e.params.cssMode?(e.wrapperEl.removeEventListener("wheel",u),!0):!e.mousewheel.enabled&&(h("addEventListener"),e.mousewheel.enabled=!0,!0)}function w(){return e.params.cssMode?(e.wrapperEl.addEventListener(event,u),!0):!!e.mousewheel.enabled&&(h("removeEventListener"),e.mousewheel.enabled=!1,!0)}a("init",()=>{!e.params.mousewheel.enabled&&e.params.cssMode&&w(),e.params.mousewheel.enabled&&c()}),a("destroy",()=>{e.params.cssMode&&c(),e.mousewheel.enabled&&w()}),Object.assign(e.mousewheel,{enable:c,disable:w})}export{Mousewheel as default}; +//# sourceMappingURL=mousewheel.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/mousewheel.min.mjs.map b/vendor/javascript/swiper/modules/mousewheel.min.mjs.map new file mode 100644 index 0000000..6f476a2 --- /dev/null +++ b/vendor/javascript/swiper/modules/mousewheel.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"mousewheel.mjs.mjs","names":["getWindow","nextTick","now","Mousewheel","swiper","extendParams","on","emit","window","timeout","mousewheel","enabled","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","params","delta","direction","isEnd","loop","animating","slideNext","raw","isBeginning","slidePrev","Date","getTime","handle","event","e","disableParentSwiper","target","closest","cssMode","preventDefault","targetEl","el","document","querySelector","targetElContainsTarget","contains","originalEvent","rtlFactor","rtlTranslate","data","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","shiftKey","deltaMode","spinX","spinY","pixelX","pixelY","normalize","isHorizontal","Math","abs","positions","getTranslate","minTranslate","maxTranslate","nested","stopPropagation","freeMode","time","sign","ignoreWheelEvents","undefined","position","wasBeginning","wasEnd","setTransition","setTranslate","updateProgress","updateActiveIndex","updateSlidesClasses","loopFix","byMousewheel","sticky","clearTimeout","length","shift","prevEvent","firstEvent","push","splice","snapToThreshold","destroyed","slideToClosest","speed","autoplay","disableOnInteraction","stop","releaseScroll","returnValue","events","method","enable","wrapperEl","removeEventListener","disable","addEventListener","Object","assign"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/mousewheel.mjs b/vendor/javascript/swiper/modules/mousewheel.mjs new file mode 100644 index 0000000..b2c404a --- /dev/null +++ b/vendor/javascript/swiper/modules/mousewheel.mjs @@ -0,0 +1,394 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { n as nextTick, h as now } from '../shared/utils.mjs'; + +/* eslint-disable consistent-return */ +function Mousewheel({ + swiper, + extendParams, + on, + emit +}) { + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + if (swiper.destroyed || !swiper.params) return; + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + if (swiper.destroyed || !swiper.params) return; + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplay.disableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); +} + +export { Mousewheel as default }; diff --git a/vendor/javascript/swiper/modules/navigation-element.css b/vendor/javascript/swiper/modules/navigation-element.css new file mode 100644 index 0000000..7834362 --- /dev/null +++ b/vendor/javascript/swiper/modules/navigation-element.css @@ -0,0 +1,117 @@ +:host { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 4px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + + width: var(--swiper-navigation-size); + height: var(--swiper-navigation-size); + + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, .swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } +.swiper-button-prev.swiper-button-hidden, .swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; + } +.swiper-navigation-disabled .swiper-button-prev, .swiper-navigation-disabled .swiper-button-next { + display: none !important; + } +.swiper-button-prev svg, .swiper-button-next svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; + fill: currentColor; + pointer-events: none; + } + +.swiper-button-lock { + display: none; +} + +.swiper-button-prev, +.swiper-button-next { + top: var(--swiper-navigation-top-offset, 50%); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); +} +.swiper-button-prev { + left: var(--swiper-navigation-sides-offset, 4px); + right: auto; +} +.swiper-button-prev .swiper-navigation-icon { + transform: rotate(180deg); + } +.swiper-button-next { + right: var(--swiper-navigation-sides-offset, 4px); + left: auto; +} +.swiper-horizontal .swiper-button-prev, + .swiper-horizontal .swiper-button-next, + .swiper-horizontal ~ .swiper-button-prev, + .swiper-horizontal ~ .swiper-button-next { + top: var(--swiper-navigation-top-offset, 50%); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + margin-left: 0; + } +.swiper-horizontal .swiper-button-prev, + .swiper-horizontal ~ .swiper-button-prev, + .swiper-horizontal.swiper-rtl .swiper-button-next, + .swiper-horizontal.swiper-rtl ~ .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 4px); + right: auto; + } +.swiper-horizontal .swiper-button-next, + .swiper-horizontal ~ .swiper-button-next, + .swiper-horizontal.swiper-rtl .swiper-button-prev, + .swiper-horizontal.swiper-rtl ~ .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 4px); + left: auto; + } +.swiper-horizontal .swiper-button-prev .swiper-navigation-icon, .swiper-horizontal ~ .swiper-button-prev .swiper-navigation-icon, .swiper-horizontal.swiper-rtl .swiper-button-next .swiper-navigation-icon, .swiper-horizontal.swiper-rtl ~ .swiper-button-next .swiper-navigation-icon { + transform: rotate(180deg); + } +.swiper-horizontal.swiper-rtl .swiper-button-prev .swiper-navigation-icon, .swiper-horizontal.swiper-rtl ~ .swiper-button-prev .swiper-navigation-icon { + transform: rotate(0deg); + } +.swiper-vertical .swiper-button-prev, + .swiper-vertical .swiper-button-next, + .swiper-vertical ~ .swiper-button-prev, + .swiper-vertical ~ .swiper-button-next { + left: var(--swiper-navigation-top-offset, 50%); + right: auto; + margin-left: calc(0px - (var(--swiper-navigation-size) / 2)); + margin-top: 0; + } +.swiper-vertical .swiper-button-prev, + .swiper-vertical ~ .swiper-button-prev { + top: var(--swiper-navigation-sides-offset, 4px); + bottom: auto; + } +.swiper-vertical .swiper-button-prev .swiper-navigation-icon, .swiper-vertical ~ .swiper-button-prev .swiper-navigation-icon { + transform: rotate(-90deg); + } +.swiper-vertical .swiper-button-next, + .swiper-vertical ~ .swiper-button-next { + bottom: var(--swiper-navigation-sides-offset, 4px); + top: auto; + } +.swiper-vertical .swiper-button-next .swiper-navigation-icon, .swiper-vertical ~ .swiper-button-next .swiper-navigation-icon { + transform: rotate(90deg); + } diff --git a/vendor/javascript/swiper/modules/navigation-element.min.css b/vendor/javascript/swiper/modules/navigation-element.min.css new file mode 100644 index 0000000..0412418 --- /dev/null +++ b/vendor/javascript/swiper/modules/navigation-element.min.css @@ -0,0 +1 @@ +:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{align-items:center;color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;display:flex;height:var(--swiper-navigation-size);justify-content:center;position:absolute;width:var(--swiper-navigation-size);z-index:10}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{height:100%;object-fit:contain;transform-origin:center;width:100%;fill:currentColor;pointer-events:none}.swiper-button-lock{display:none}.swiper-button-next,.swiper-button-prev{margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto}.swiper-button-prev .swiper-navigation-icon{transform:rotate(180deg)}.swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.swiper-horizontal .swiper-button-next,.swiper-horizontal .swiper-button-prev,.swiper-horizontal~.swiper-button-next,.swiper-horizontal~.swiper-button-prev{margin-left:0;margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.swiper-horizontal .swiper-button-prev,.swiper-horizontal.swiper-rtl .swiper-button-next,.swiper-horizontal.swiper-rtl~.swiper-button-next,.swiper-horizontal~.swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto}.swiper-horizontal .swiper-button-next,.swiper-horizontal.swiper-rtl .swiper-button-prev,.swiper-horizontal.swiper-rtl~.swiper-button-prev,.swiper-horizontal~.swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.swiper-horizontal .swiper-button-prev .swiper-navigation-icon,.swiper-horizontal.swiper-rtl .swiper-button-next .swiper-navigation-icon,.swiper-horizontal.swiper-rtl~.swiper-button-next .swiper-navigation-icon,.swiper-horizontal~.swiper-button-prev .swiper-navigation-icon{transform:rotate(180deg)}.swiper-horizontal.swiper-rtl .swiper-button-prev .swiper-navigation-icon,.swiper-horizontal.swiper-rtl~.swiper-button-prev .swiper-navigation-icon{transform:rotate(0deg)}.swiper-vertical .swiper-button-next,.swiper-vertical .swiper-button-prev,.swiper-vertical~.swiper-button-next,.swiper-vertical~.swiper-button-prev{left:var(--swiper-navigation-top-offset,50%);margin-left:calc(0px - var(--swiper-navigation-size)/2);margin-top:0;right:auto}.swiper-vertical .swiper-button-prev,.swiper-vertical~.swiper-button-prev{bottom:auto;top:var(--swiper-navigation-sides-offset,4px)}.swiper-vertical .swiper-button-prev .swiper-navigation-icon,.swiper-vertical~.swiper-button-prev .swiper-navigation-icon{transform:rotate(-90deg)}.swiper-vertical .swiper-button-next,.swiper-vertical~.swiper-button-next{bottom:var(--swiper-navigation-sides-offset,4px);top:auto}.swiper-vertical .swiper-button-next .swiper-navigation-icon,.swiper-vertical~.swiper-button-next .swiper-navigation-icon{transform:rotate(90deg)} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/navigation.css b/vendor/javascript/swiper/modules/navigation.css new file mode 100644 index 0000000..a004f34 --- /dev/null +++ b/vendor/javascript/swiper/modules/navigation.css @@ -0,0 +1,129 @@ +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 4px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + + width: var(--swiper-navigation-size); + height: var(--swiper-navigation-size); + + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; + } + .swiper-navigation-disabled & { + display: none !important; + } + svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; + fill: currentColor; + pointer-events: none; + } +} + +.swiper-button-lock { + display: none; +} + +.swiper-button-prev, +.swiper-button-next { + top: var(--swiper-navigation-top-offset, 50%); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); +} +.swiper-button-prev { + left: var(--swiper-navigation-sides-offset, 4px); + right: auto; + .swiper-navigation-icon { + transform: rotate(180deg); + } +} +.swiper-button-next { + right: var(--swiper-navigation-sides-offset, 4px); + left: auto; +} +.swiper-horizontal { + .swiper-button-prev, + .swiper-button-next, + ~ .swiper-button-prev, + ~ .swiper-button-next { + top: var(--swiper-navigation-top-offset, 50%); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + margin-left: 0; + } + .swiper-button-prev, + & ~ .swiper-button-prev, + &.swiper-rtl .swiper-button-next, + &.swiper-rtl ~ .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 4px); + right: auto; + } + .swiper-button-next, + & ~ .swiper-button-next, + &.swiper-rtl .swiper-button-prev, + &.swiper-rtl ~ .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 4px); + left: auto; + } + .swiper-button-prev, + & ~ .swiper-button-prev, + &.swiper-rtl .swiper-button-next, + &.swiper-rtl ~ .swiper-button-next { + .swiper-navigation-icon { + transform: rotate(180deg); + } + } + &.swiper-rtl .swiper-button-prev, + &.swiper-rtl ~ .swiper-button-prev { + .swiper-navigation-icon { + transform: rotate(0deg); + } + } +} +.swiper-vertical { + .swiper-button-prev, + .swiper-button-next, + ~ .swiper-button-prev, + ~ .swiper-button-next { + left: var(--swiper-navigation-top-offset, 50%); + right: auto; + margin-left: calc(0px - (var(--swiper-navigation-size) / 2)); + margin-top: 0; + } + .swiper-button-prev, + ~ .swiper-button-prev { + top: var(--swiper-navigation-sides-offset, 4px); + bottom: auto; + .swiper-navigation-icon { + transform: rotate(-90deg); + } + } + .swiper-button-next, + ~ .swiper-button-next { + bottom: var(--swiper-navigation-sides-offset, 4px); + top: auto; + .swiper-navigation-icon { + transform: rotate(90deg); + } + } +} diff --git a/vendor/javascript/swiper/modules/navigation.min.css b/vendor/javascript/swiper/modules/navigation.min.css new file mode 100644 index 0000000..20be023 --- /dev/null +++ b/vendor/javascript/swiper/modules/navigation.min.css @@ -0,0 +1 @@ +:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{align-items:center;color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;display:flex;height:var(--swiper-navigation-size);justify-content:center;position:absolute;width:var(--swiper-navigation-size);z-index:10;&.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}&.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.swiper-navigation-disabled &{display:none!important}svg{height:100%;object-fit:contain;transform-origin:center;width:100%;fill:currentColor;pointer-events:none}}.swiper-button-lock{display:none}.swiper-button-next,.swiper-button-prev{margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto;.swiper-navigation-icon{transform:rotate(180deg)}}.swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.swiper-horizontal{.swiper-button-next,.swiper-button-prev,~.swiper-button-next,~.swiper-button-prev{margin-left:0;margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}&.swiper-rtl .swiper-button-next,&.swiper-rtl~.swiper-button-next,&~.swiper-button-prev,.swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto}&.swiper-rtl .swiper-button-prev,&.swiper-rtl~.swiper-button-prev,&~.swiper-button-next,.swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}&.swiper-rtl .swiper-button-next,&.swiper-rtl~.swiper-button-next,&~.swiper-button-prev,.swiper-button-prev{.swiper-navigation-icon{transform:rotate(180deg)}}&.swiper-rtl .swiper-button-prev,&.swiper-rtl~.swiper-button-prev{.swiper-navigation-icon{transform:rotate(0deg)}}}.swiper-vertical{.swiper-button-next,.swiper-button-prev,~.swiper-button-next,~.swiper-button-prev{left:var(--swiper-navigation-top-offset,50%);margin-left:calc(0px - var(--swiper-navigation-size)/2);margin-top:0;right:auto}.swiper-button-prev,~.swiper-button-prev{bottom:auto;top:var(--swiper-navigation-sides-offset,4px);.swiper-navigation-icon{transform:rotate(-90deg)}}.swiper-button-next,~.swiper-button-next{bottom:var(--swiper-navigation-sides-offset,4px);top:auto;.swiper-navigation-icon{transform:rotate(90deg)}}} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/navigation.min.mjs b/vendor/javascript/swiper/modules/navigation.min.mjs new file mode 100644 index 0000000..18f7c25 --- /dev/null +++ b/vendor/javascript/swiper/modules/navigation.min.mjs @@ -0,0 +1,2 @@ +import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{m as makeElementsArray,s as setInnerHTML}from"../shared/utils.min.mjs";const arrowSvg='';function Navigation({swiper:e,extendParams:a,on:n,emit:t}){function i(a){let n;return a&&"string"==typeof a&&e.isElement&&(n=e.el.querySelector(a)||e.hostEl.querySelector(a),n)?n:(a&&("string"==typeof a&&(n=[...document.querySelectorAll(a)]),e.params.uniqueNavElements&&"string"==typeof a&&n&&n.length>1&&1===e.el.querySelectorAll(a).length?n=e.el.querySelector(a):n&&1===n.length&&(n=n[0])),a&&!n?a:n)}function s(a,n){const t=e.params.navigation;(a=makeElementsArray(a)).forEach(a=>{a&&(a.classList[n?"add":"remove"](...t.disabledClass.split(" ")),"BUTTON"===a.tagName&&(a.disabled=n),e.params.watchOverflow&&e.enabled&&a.classList[e.isLocked?"add":"remove"](t.lockClass))})}function l(){const{nextEl:a,prevEl:n}=e.navigation;if(e.params.loop)return s(n,!1),void s(a,!1);s(n,e.isBeginning&&!e.params.rewind),s(a,e.isEnd&&!e.params.rewind)}function r(a){a.preventDefault(),(!e.isBeginning||e.params.loop||e.params.rewind)&&(e.slidePrev(),t("navigationPrev"))}function o(a){a.preventDefault(),(!e.isEnd||e.params.loop||e.params.rewind)&&(e.slideNext(),t("navigationNext"))}function d(){const a=e.params.navigation;if(e.params.navigation=createElementIfNotDefined(e,e.originalParams.navigation,e.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!a.nextEl&&!a.prevEl)return;let n=i(a.nextEl),t=i(a.prevEl);Object.assign(e.navigation,{nextEl:n,prevEl:t}),n=makeElementsArray(n),t=makeElementsArray(t);const s=(n,t)=>{if(n){if(a.addIcons&&n.matches(".swiper-button-next,.swiper-button-prev")&&!n.querySelector("svg")){const e=document.createElement("div");setInnerHTML(e,arrowSvg),n.appendChild(e.querySelector("svg")),e.remove()}n.addEventListener("click","next"===t?o:r)}!e.enabled&&n&&n.classList.add(...a.lockClass.split(" "))};n.forEach(e=>s(e,"next")),t.forEach(e=>s(e,"prev"))}function c(){let{nextEl:a,prevEl:n}=e.navigation;a=makeElementsArray(a),n=makeElementsArray(n);const t=(a,n)=>{a.removeEventListener("click","next"===n?o:r),a.classList.remove(...e.params.navigation.disabledClass.split(" "))};a.forEach(e=>t(e,"next")),n.forEach(e=>t(e,"prev"))}a({navigation:{nextEl:null,prevEl:null,addIcons:!0,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),e.navigation={nextEl:null,prevEl:null,arrowSvg:arrowSvg},n("init",()=>{!1===e.params.navigation.enabled?m():(d(),l())}),n("toEdge fromEdge lock unlock",()=>{l()}),n("destroy",()=>{c()}),n("enable disable",()=>{let{nextEl:a,prevEl:n}=e.navigation;a=makeElementsArray(a),n=makeElementsArray(n),e.enabled?l():[...a,...n].filter(e=>!!e).forEach(a=>a.classList.add(e.params.navigation.lockClass))}),n("click",(a,n)=>{let{nextEl:i,prevEl:s}=e.navigation;i=makeElementsArray(i),s=makeElementsArray(s);const l=n.target;let r=s.includes(l)||i.includes(l);if(e.isElement&&!r){const e=n.path||n.composedPath&&n.composedPath();e&&(r=e.find(e=>i.includes(e)||s.includes(e)))}if(e.params.navigation.hideOnClick&&!r){if(e.pagination&&e.params.pagination&&e.params.pagination.clickable&&(e.pagination.el===l||e.pagination.el.contains(l)))return;let a;i.length?a=i[0].classList.contains(e.params.navigation.hiddenClass):s.length&&(a=s[0].classList.contains(e.params.navigation.hiddenClass)),t(!0===a?"navigationShow":"navigationHide"),[...i,...s].filter(e=>!!e).forEach(a=>a.classList.toggle(e.params.navigation.hiddenClass))}});const m=()=>{e.el.classList.add(...e.params.navigation.navigationDisabledClass.split(" ")),c()};Object.assign(e.navigation,{enable:()=>{e.el.classList.remove(...e.params.navigation.navigationDisabledClass.split(" ")),d(),l()},disable:m,update:l,init:d,destroy:c})}export{Navigation as default}; +//# sourceMappingURL=navigation.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/navigation.min.mjs.map b/vendor/javascript/swiper/modules/navigation.min.mjs.map new file mode 100644 index 0000000..4375839 --- /dev/null +++ b/vendor/javascript/swiper/modules/navigation.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"navigation.mjs.mjs","names":["createElementIfNotDefined","makeElementsArray","setInnerHTML","arrowSvg","Navigation","swiper","extendParams","on","emit","getEl","el","res","isElement","querySelector","hostEl","document","querySelectorAll","params","uniqueNavElements","length","toggleEl","disabled","navigation","forEach","subEl","classList","disabledClass","split","tagName","watchOverflow","enabled","isLocked","lockClass","update","nextEl","prevEl","loop","isBeginning","rewind","isEnd","onPrevClick","e","preventDefault","slidePrev","onNextClick","slideNext","init","originalParams","Object","assign","initButton","dir","addIcons","matches","tempEl","createElement","appendChild","remove","addEventListener","add","destroy","destroyButton","removeEventListener","hideOnClick","hiddenClass","navigationDisabledClass","disable","filter","_s","targetEl","target","targetIsButton","includes","path","composedPath","find","pathEl","pagination","clickable","contains","isHidden","toggle","enable"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/navigation.mjs b/vendor/javascript/swiper/modules/navigation.mjs new file mode 100644 index 0000000..a748396 --- /dev/null +++ b/vendor/javascript/swiper/modules/navigation.mjs @@ -0,0 +1,208 @@ +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; +import { m as makeElementsArray, s as setInnerHTML } from '../shared/utils.mjs'; + +const arrowSvg = ``; +function Navigation({ + swiper, + extendParams, + on, + emit +}) { + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + addIcons: true, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null, + arrowSvg + }; + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } else if (res && res.length === 1) { + res = res[0]; + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + if (params.addIcons && el.matches('.swiper-button-next,.swiper-button-prev') && !el.querySelector('svg')) { + const tempEl = document.createElement('div'); + setInnerHTML(tempEl, arrowSvg); + el.appendChild(tempEl.querySelector('svg')); + tempEl.remove(); + } + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); + if (swiper.isElement && !targetIsButton) { + const path = e.path || e.composedPath && e.composedPath(); + if (path) { + targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl)); + } + } + if (swiper.params.navigation.hideOnClick && !targetIsButton) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); +} + +export { Navigation as default }; diff --git a/vendor/javascript/swiper/modules/pagination-element.css b/vendor/javascript/swiper/modules/pagination-element.css new file mode 100644 index 0000000..c3e152b --- /dev/null +++ b/vendor/javascript/swiper/modules/pagination-element.css @@ -0,0 +1,184 @@ +:host { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; + } +.swiper-pagination-disabled > .swiper-pagination, + .swiper-pagination.swiper-pagination-disabled { + display: none !important; + } +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); + } +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); + } +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; + } +.swiper-pagination-bullet:only-child { + display: none !important; + } +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); +} + +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, .swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; + } + +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, .swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + } + +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, .swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: + 200ms transform, + 200ms top; + } +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, .swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); + } +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, .swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + } +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, .swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms left; + } +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; + } +.swiper-horizontal > .swiper-pagination-progressbar, + .swiper-pagination-progressbar.swiper-pagination-horizontal, + .swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, + .swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; + } +.swiper-vertical > .swiper-pagination-progressbar, + .swiper-pagination-progressbar.swiper-pagination-vertical, + .swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, + .swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; + } +.swiper-pagination-lock { + display: none; +} diff --git a/vendor/javascript/swiper/modules/pagination-element.min.css b/vendor/javascript/swiper/modules/pagination-element.min.css new file mode 100644 index 0000000..3520514 --- /dev/null +++ b/vendor/javascript/swiper/modules/pagination-element.min.css @@ -0,0 +1 @@ +.swiper-pagination{position:absolute;text-align:center;transform:translateZ(0);transition:opacity .3s;z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{position:relative;transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);display:inline-block;height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px))}button.swiper-pagination-bullet{appearance:none;border:none;box-shadow:none;margin:0;padding:0}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translate3d(0,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{display:block;margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,left .2s}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,#00000040);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));height:100%;left:0;position:absolute;top:0;transform:scale(0);transform-origin:left top;width:100%}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0;width:100%}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{height:100%;left:0;top:0;width:var(--swiper-pagination-progressbar-size,4px)}.swiper-pagination-lock{display:none} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/pagination.css b/vendor/javascript/swiper/modules/pagination.css new file mode 100644 index 0000000..975e5da --- /dev/null +++ b/vendor/javascript/swiper/modules/pagination.css @@ -0,0 +1,185 @@ +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } + .swiper-pagination-disabled > &, + &.swiper-pagination-disabled { + display: none !important; + } +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); + button& { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } + + &:only-child { + display: none !important; + } +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); + .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: + 200ms transform, + 200ms top; + } + } +} +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-horizontal.swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms left; + } + } +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-horizontal > &, + &.swiper-pagination-horizontal, + .swiper-vertical > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; + } + .swiper-vertical > &, + &.swiper-pagination-vertical, + .swiper-horizontal > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; + } +} +.swiper-pagination-lock { + display: none; +} diff --git a/vendor/javascript/swiper/modules/pagination.min.css b/vendor/javascript/swiper/modules/pagination.min.css new file mode 100644 index 0000000..9c54017 --- /dev/null +++ b/vendor/javascript/swiper/modules/pagination.min.css @@ -0,0 +1 @@ +.swiper-pagination{position:absolute;text-align:center;transform:translateZ(0);transition:opacity .3s;z-index:10;&.swiper-pagination-hidden{opacity:0}&.swiper-pagination-disabled,.swiper-pagination-disabled>&{display:none!important}}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden;.swiper-pagination-bullet{position:relative;transform:scale(.33)}.swiper-pagination-bullet-active,.swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullet-active-next-next{transform:scale(.33)}}.swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);display:inline-block;height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));button&{appearance:none;border:none;box-shadow:none;margin:0;padding:0}.swiper-pagination-clickable &{cursor:pointer}&:only-child{display:none!important}}.swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translate3d(0,-50%,0);.swiper-pagination-bullet{display:block;margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0}&.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px;.swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}}}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-horizontal.swiper-pagination-bullets{.swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}&.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap;.swiper-pagination-bullet{transition:transform .2s,left .2s}}}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,#00000040);position:absolute;.swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));height:100%;left:0;position:absolute;top:0;transform:scale(0);transform-origin:left top;width:100%}.swiper-rtl & .swiper-pagination-progressbar-fill{transform-origin:right top}&.swiper-pagination-horizontal,&.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-horizontal>&,.swiper-vertical>&.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0;width:100%}&.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,&.swiper-pagination-vertical,.swiper-horizontal>&.swiper-pagination-progressbar-opposite,.swiper-vertical>&{height:100%;left:0;top:0;width:var(--swiper-pagination-progressbar-size,4px)}}.swiper-pagination-lock{display:none} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/pagination.min.mjs b/vendor/javascript/swiper/modules/pagination.min.mjs new file mode 100644 index 0000000..562c2c6 --- /dev/null +++ b/vendor/javascript/swiper/modules/pagination.min.mjs @@ -0,0 +1,2 @@ +import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{m as makeElementsArray,i as elementOuterSize,j as elementIndex,s as setInnerHTML,d as elementParents}from"../shared/utils.min.mjs";function Pagination({swiper:e,extendParams:a,on:s,emit:l}){const t="swiper-pagination";let i;a({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${t}-bullet`,bulletActiveClass:`${t}-bullet-active`,modifierClass:`${t}-`,currentClass:`${t}-current`,totalClass:`${t}-total`,hiddenClass:`${t}-hidden`,progressbarFillClass:`${t}-progressbar-fill`,progressbarOppositeClass:`${t}-progressbar-opposite`,clickableClass:`${t}-clickable`,lockClass:`${t}-lock`,horizontalClass:`${t}-horizontal`,verticalClass:`${t}-vertical`,paginationDisabledClass:`${t}-disabled`}}),e.pagination={el:null,bullets:[]};let n=0;function r(){return!e.params.pagination.el||!e.pagination.el||Array.isArray(e.pagination.el)&&0===e.pagination.el.length}function o(a,s){const{bulletActiveClass:l}=e.params.pagination;a&&(a=a[("prev"===s?"previous":"next")+"ElementSibling"])&&(a.classList.add(`${l}-${s}`),(a=a[("prev"===s?"previous":"next")+"ElementSibling"])&&a.classList.add(`${l}-${s}-${s}`))}function p(a){const s=a.target.closest(classesToSelector(e.params.pagination.bulletClass));if(!s)return;a.preventDefault();const l=elementIndex(s)*e.params.slidesPerGroup;if(e.params.loop){if(e.realIndex===l)return;const a=(t=e.realIndex,i=l,n=e.slides.length,(i%=n)===1+(t%=n)?"next":i===t-1?"previous":void 0);"next"===a?e.slideNext():"previous"===a?e.slidePrev():e.slideToLoop(l)}else e.slideTo(l);var t,i,n}function c(){const a=e.rtl,s=e.params.pagination;if(r())return;let t,p,c=e.pagination.el;c=makeElementsArray(c);const d=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,m=e.params.loop?Math.ceil(d/e.params.slidesPerGroup):e.snapGrid.length;if(e.params.loop?(p=e.previousRealIndex||0,t=e.params.slidesPerGroup>1?Math.floor(e.realIndex/e.params.slidesPerGroup):e.realIndex):void 0!==e.snapIndex?(t=e.snapIndex,p=e.previousSnapIndex):(p=e.previousIndex||0,t=e.activeIndex||0),"bullets"===s.type&&e.pagination.bullets&&e.pagination.bullets.length>0){const l=e.pagination.bullets;let r,d,m;if(s.dynamicBullets&&(i=elementOuterSize(l[0],e.isHorizontal()?"width":"height",!0),c.forEach(a=>{a.style[e.isHorizontal()?"width":"height"]=i*(s.dynamicMainBullets+4)+"px"}),s.dynamicMainBullets>1&&void 0!==p&&(n+=t-(p||0),n>s.dynamicMainBullets-1?n=s.dynamicMainBullets-1:n<0&&(n=0)),r=Math.max(t-n,0),d=r+(Math.min(l.length,s.dynamicMainBullets)-1),m=(d+r)/2),l.forEach(e=>{const a=[...["","-next","-next-next","-prev","-prev-prev","-main"].map(e=>`${s.bulletActiveClass}${e}`)].map(e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e).flat();e.classList.remove(...a)}),c.length>1)l.forEach(a=>{const l=elementIndex(a);l===t?a.classList.add(...s.bulletActiveClass.split(" ")):e.isElement&&a.setAttribute("part","bullet"),s.dynamicBullets&&(l>=r&&l<=d&&a.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),l===r&&o(a,"prev"),l===d&&o(a,"next"))});else{const a=l[t];if(a&&a.classList.add(...s.bulletActiveClass.split(" ")),e.isElement&&l.forEach((e,a)=>{e.setAttribute("part",a===t?"bullet-active":"bullet")}),s.dynamicBullets){const e=l[r],a=l[d];for(let e=r;e<=d;e+=1)l[e]&&l[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));o(e,"prev"),o(a,"next")}}if(s.dynamicBullets){const t=Math.min(l.length,s.dynamicMainBullets+4),n=(i*t-i)/2-m*i,r=a?"right":"left";l.forEach(a=>{a.style[e.isHorizontal()?r:"top"]=`${n}px`})}}c.forEach((a,i)=>{if("fraction"===s.type&&(a.querySelectorAll(classesToSelector(s.currentClass)).forEach(e=>{e.textContent=s.formatFractionCurrent(t+1)}),a.querySelectorAll(classesToSelector(s.totalClass)).forEach(e=>{e.textContent=s.formatFractionTotal(m)})),"progressbar"===s.type){let l;l=s.progressbarOpposite?e.isHorizontal()?"vertical":"horizontal":e.isHorizontal()?"horizontal":"vertical";const i=(t+1)/m;let n=1,r=1;"horizontal"===l?n=i:r=i,a.querySelectorAll(classesToSelector(s.progressbarFillClass)).forEach(a=>{a.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${r})`,a.style.transitionDuration=`${e.params.speed}ms`})}"custom"===s.type&&s.renderCustom?(setInnerHTML(a,s.renderCustom(e,t+1,m)),0===i&&l("paginationRender",a)):(0===i&&l("paginationRender",a),l("paginationUpdate",a)),e.params.watchOverflow&&e.enabled&&a.classList[e.isLocked?"add":"remove"](s.lockClass)})}function d(){const a=e.params.pagination;if(r())return;const s=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.grid&&e.params.grid.rows>1?e.slides.length/Math.ceil(e.params.grid.rows):e.slides.length;let t=e.pagination.el;t=makeElementsArray(t);let i="";if("bullets"===a.type){let l=e.params.loop?Math.ceil(s/e.params.slidesPerGroup):e.snapGrid.length;e.params.freeMode&&e.params.freeMode.enabled&&l>s&&(l=s);for(let s=0;s`}"fraction"===a.type&&(i=a.renderFraction?a.renderFraction.call(e,a.currentClass,a.totalClass):` / `),"progressbar"===a.type&&(i=a.renderProgressbar?a.renderProgressbar.call(e,a.progressbarFillClass):``),e.pagination.bullets=[],t.forEach(s=>{"custom"!==a.type&&setInnerHTML(s,i||""),"bullets"===a.type&&e.pagination.bullets.push(...s.querySelectorAll(classesToSelector(a.bulletClass)))}),"custom"!==a.type&&l("paginationRender",t[0])}function m(){e.params.pagination=createElementIfNotDefined(e,e.originalParams.pagination,e.params.pagination,{el:"swiper-pagination"});const a=e.params.pagination;if(!a.el)return;let s;"string"==typeof a.el&&e.isElement&&(s=e.el.querySelector(a.el)),s||"string"!=typeof a.el||(s=[...document.querySelectorAll(a.el)]),s||(s=a.el),s&&0!==s.length&&(e.params.uniqueNavElements&&"string"==typeof a.el&&Array.isArray(s)&&s.length>1&&(s=[...e.el.querySelectorAll(a.el)],s.length>1&&(s=s.find(a=>elementParents(a,".swiper")[0]===e.el))),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(e.pagination,{el:s}),s=makeElementsArray(s),s.forEach(s=>{"bullets"===a.type&&a.clickable&&s.classList.add(...(a.clickableClass||"").split(" ")),s.classList.add(a.modifierClass+a.type),s.classList.add(e.isHorizontal()?a.horizontalClass:a.verticalClass),"bullets"===a.type&&a.dynamicBullets&&(s.classList.add(`${a.modifierClass}${a.type}-dynamic`),n=0,a.dynamicMainBullets<1&&(a.dynamicMainBullets=1)),"progressbar"===a.type&&a.progressbarOpposite&&s.classList.add(a.progressbarOppositeClass),a.clickable&&s.addEventListener("click",p),e.enabled||s.classList.add(a.lockClass)}))}function u(){const a=e.params.pagination;if(r())return;let s=e.pagination.el;s&&(s=makeElementsArray(s),s.forEach(s=>{s.classList.remove(a.hiddenClass),s.classList.remove(a.modifierClass+a.type),s.classList.remove(e.isHorizontal()?a.horizontalClass:a.verticalClass),a.clickable&&(s.classList.remove(...(a.clickableClass||"").split(" ")),s.removeEventListener("click",p))})),e.pagination.bullets&&e.pagination.bullets.forEach(e=>e.classList.remove(...a.bulletActiveClass.split(" ")))}s("changeDirection",()=>{if(!e.pagination||!e.pagination.el)return;const a=e.params.pagination;let{el:s}=e.pagination;s=makeElementsArray(s),s.forEach(s=>{s.classList.remove(a.horizontalClass,a.verticalClass),s.classList.add(e.isHorizontal()?a.horizontalClass:a.verticalClass)})}),s("init",()=>{!1===e.params.pagination.enabled?g():(m(),d(),c())}),s("activeIndexChange",()=>{void 0===e.snapIndex&&c()}),s("snapIndexChange",()=>{c()}),s("snapGridLengthChange",()=>{d(),c()}),s("destroy",()=>{u()}),s("enable disable",()=>{let{el:a}=e.pagination;a&&(a=makeElementsArray(a),a.forEach(a=>a.classList[e.enabled?"remove":"add"](e.params.pagination.lockClass)))}),s("lock unlock",()=>{c()}),s("click",(a,s)=>{const t=s.target,i=makeElementsArray(e.pagination.el);if(e.params.pagination.el&&e.params.pagination.hideOnClick&&i&&i.length>0&&!t.classList.contains(e.params.pagination.bulletClass)){if(e.navigation&&(e.navigation.nextEl&&t===e.navigation.nextEl||e.navigation.prevEl&&t===e.navigation.prevEl))return;const a=i[0].classList.contains(e.params.pagination.hiddenClass);l(!0===a?"paginationShow":"paginationHide"),i.forEach(a=>a.classList.toggle(e.params.pagination.hiddenClass))}});const g=()=>{e.el.classList.add(e.params.pagination.paginationDisabledClass);let{el:a}=e.pagination;a&&(a=makeElementsArray(a),a.forEach(a=>a.classList.add(e.params.pagination.paginationDisabledClass))),u()};Object.assign(e.pagination,{enable:()=>{e.el.classList.remove(e.params.pagination.paginationDisabledClass);let{el:a}=e.pagination;a&&(a=makeElementsArray(a),a.forEach(a=>a.classList.remove(e.params.pagination.paginationDisabledClass))),m(),d(),c()},disable:g,render:d,update:c,init:m,destroy:u})}export{Pagination as default}; +//# sourceMappingURL=pagination.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/pagination.min.mjs.map b/vendor/javascript/swiper/modules/pagination.min.mjs.map new file mode 100644 index 0000000..c4845c9 --- /dev/null +++ b/vendor/javascript/swiper/modules/pagination.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"pagination.mjs.mjs","names":["classesToSelector","createElementIfNotDefined","makeElementsArray","elementOuterSize","elementIndex","setInnerHTML","elementParents","Pagination","swiper","extendParams","on","emit","pfx","bulletSize","pagination","el","bulletElement","clickable","hideOnClick","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","type","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","hiddenClass","progressbarFillClass","progressbarOppositeClass","clickableClass","lockClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","params","Array","isArray","length","setSideBullets","bulletEl","position","classList","add","onBulletClick","e","target","closest","preventDefault","index","slidesPerGroup","loop","realIndex","moveDirection","prevIndex","nextIndex","slides","slideNext","slidePrev","slideToLoop","slideTo","update","rtl","current","previousIndex","slidesLength","virtual","enabled","total","Math","ceil","snapGrid","previousRealIndex","floor","snapIndex","previousSnapIndex","activeIndex","firstIndex","lastIndex","midIndex","isHorizontal","forEach","subEl","style","undefined","max","min","classesToRemove","map","suffix","s","includes","split","flat","remove","bullet","bulletIndex","isElement","setAttribute","firstDisplayedBullet","lastDisplayedBullet","i","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","querySelectorAll","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","transform","transitionDuration","speed","watchOverflow","isLocked","render","grid","rows","paginationHTML","numberOfBullets","freeMode","call","push","init","originalParams","querySelector","document","uniqueNavElements","find","Object","assign","addEventListener","destroy","removeEventListener","disable","_s","targetEl","contains","navigation","nextEl","prevEl","isHidden","toggle","enable"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/pagination.mjs b/vendor/javascript/swiper/modules/pagination.mjs new file mode 100644 index 0000000..7127d31 --- /dev/null +++ b/vendor/javascript/swiper/modules/pagination.mjs @@ -0,0 +1,459 @@ +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; +import { m as makeElementsArray, i as elementOuterSize, j as elementIndex, s as setInnerHTML, d as elementParents } from '../shared/utils.mjs'; + +function Pagination({ + swiper, + extendParams, + on, + emit +}) { + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function getMoveDirection(prevIndex, nextIndex, length) { + prevIndex = prevIndex % length; + nextIndex = nextIndex % length; + if (nextIndex === prevIndex + 1) { + return 'next'; + } else if (nextIndex === prevIndex - 1) { + return 'previous'; + } + return; + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length); + if (moveDirection === 'next') { + swiper.slideNext(); + } else if (moveDirection === 'previous') { + swiper.slidePrev(); + } else { + swiper.slideToLoop(index); + } + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + setInnerHTML(subEl, params.renderCustom(swiper, current + 1, total)); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + setInnerHTML(subEl, paginationHTML || ''); + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.find(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + }); + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); +} + +export { Pagination as default }; diff --git a/vendor/javascript/swiper/modules/parallax-element.css b/vendor/javascript/swiper/modules/parallax-element.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/parallax-element.min.css b/vendor/javascript/swiper/modules/parallax-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/parallax.css b/vendor/javascript/swiper/modules/parallax.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/parallax.min.css b/vendor/javascript/swiper/modules/parallax.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/parallax.min.mjs b/vendor/javascript/swiper/modules/parallax.min.mjs new file mode 100644 index 0000000..de5039b --- /dev/null +++ b/vendor/javascript/swiper/modules/parallax.min.mjs @@ -0,0 +1,2 @@ +import{e as elementChildren}from"../shared/utils.min.mjs";function Parallax({swiper:a,extendParams:e,on:t}){e({parallax:{enabled:!1}});const r="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",l=(e,t)=>{const{rtl:r}=a,l=r?-1:1,s=e.getAttribute("data-swiper-parallax")||"0";let i=e.getAttribute("data-swiper-parallax-x"),p=e.getAttribute("data-swiper-parallax-y");const n=e.getAttribute("data-swiper-parallax-scale"),o=e.getAttribute("data-swiper-parallax-opacity"),d=e.getAttribute("data-swiper-parallax-rotate");if(i||p?(i=i||"0",p=p||"0"):a.isHorizontal()?(i=s,p="0"):(p=s,i="0"),i=i.indexOf("%")>=0?parseInt(i,10)*t*l+"%":i*t*l+"px",p=p.indexOf("%")>=0?parseInt(p,10)*t+"%":p*t+"px",null!=o){const a=o-(o-1)*(1-Math.abs(t));e.style.opacity=a}let x=`translate3d(${i}, ${p}, 0px)`;if(null!=n){x+=` scale(${n-(n-1)*(1-Math.abs(t))})`}if(d&&null!=d){x+=` rotate(${d*t*-1}deg)`}e.style.transform=x},s=()=>{const{el:e,slides:t,progress:s,snapGrid:i,isElement:p}=a,n=elementChildren(e,r);a.isElement&&n.push(...elementChildren(a.hostEl,r)),n.forEach(a=>{l(a,s)}),t.forEach((e,t)=>{let p=e.progress;a.params.slidesPerGroup>1&&"auto"!==a.params.slidesPerView&&(p+=Math.ceil(t/2)-s*(i.length-1)),p=Math.min(Math.max(p,-1),1),e.querySelectorAll(`${r}, [data-swiper-parallax-rotate]`).forEach(a=>{l(a,p)})})};t("beforeInit",()=>{a.params.parallax.enabled&&(a.params.watchSlidesProgress=!0,a.originalParams.watchSlidesProgress=!0)}),t("init",()=>{a.params.parallax.enabled&&s()}),t("setTranslate",()=>{a.params.parallax.enabled&&s()}),t("setTransition",(e,t)=>{a.params.parallax.enabled&&((e=a.params.speed)=>{const{el:t,hostEl:l}=a,s=[...t.querySelectorAll(r)];a.isElement&&s.push(...l.querySelectorAll(r)),s.forEach(a=>{let t=parseInt(a.getAttribute("data-swiper-parallax-duration"),10)||e;0===e&&(t=0),a.style.transitionDuration=`${t}ms`})})(t)})}export{Parallax as default}; +//# sourceMappingURL=parallax.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/parallax.min.mjs.map b/vendor/javascript/swiper/modules/parallax.min.mjs.map new file mode 100644 index 0000000..89c9a23 --- /dev/null +++ b/vendor/javascript/swiper/modules/parallax.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"parallax.mjs.mjs","names":["elementChildren","Parallax","swiper","extendParams","on","parallax","enabled","elementsSelector","setTransform","el","progress","rtl","rtlFactor","p","getAttribute","x","y","scale","opacity","rotate","isHorizontal","indexOf","parseInt","currentOpacity","Math","abs","style","transform","setTranslate","slides","snapGrid","isElement","elements","push","hostEl","forEach","subEl","slideEl","slideIndex","slideProgress","params","slidesPerGroup","slidesPerView","ceil","length","min","max","querySelectorAll","watchSlidesProgress","originalParams","_swiper","duration","speed","parallaxEl","parallaxDuration","transitionDuration","setTransition"],"sources":["0"],"mappings":"YAAcA,oBAAuB,0BAErC,SAASC,UAASC,OAChBA,EAAMC,aACNA,EAAYC,GACZA,IAEAD,EAAa,CACXE,SAAU,CACRC,SAAS,KAGb,MAAMC,EAAmB,2IACnBC,EAAe,CAACC,EAAIC,KACxB,MAAMC,IACJA,GACET,EACEU,EAAYD,GAAO,EAAI,EACvBE,EAAIJ,EAAGK,aAAa,yBAA2B,IACrD,IAAIC,EAAIN,EAAGK,aAAa,0BACpBE,EAAIP,EAAGK,aAAa,0BACxB,MAAMG,EAAQR,EAAGK,aAAa,8BACxBI,EAAUT,EAAGK,aAAa,gCAC1BK,EAASV,EAAGK,aAAa,+BAqB/B,GApBIC,GAAKC,GACPD,EAAIA,GAAK,IACTC,EAAIA,GAAK,KACAd,EAAOkB,gBAChBL,EAAIF,EACJG,EAAI,MAEJA,EAAIH,EACJE,EAAI,KAGJA,EADEA,EAAEM,QAAQ,MAAQ,EACbC,SAASP,EAAG,IAAML,EAAWE,EAAhC,IAEGG,EAAIL,EAAWE,EAAlB,KAGJI,EADEA,EAAEK,QAAQ,MAAQ,EACbC,SAASN,EAAG,IAAMN,EAArB,IAEGM,EAAIN,EAAP,KAEF,MAAOQ,EAA6C,CACtD,MAAMK,EAAiBL,GAAWA,EAAU,IAAM,EAAIM,KAAKC,IAAIf,IAC/DD,EAAGiB,MAAMR,QAAUK,CACrB,CACA,IAAII,EAAY,eAAeZ,MAAMC,UACrC,GAAI,MAAOC,EAAyC,CAElDU,GAAa,UADQV,GAASA,EAAQ,IAAM,EAAIO,KAAKC,IAAIf,MAE3D,CACA,GAAIS,SAAiBA,EAA2C,CAE9DQ,GAAa,WADSR,EAAST,GAAY,OAE7C,CACAD,EAAGiB,MAAMC,UAAYA,GAEjBC,EAAe,KACnB,MAAMnB,GACJA,EAAEoB,OACFA,EAAMnB,SACNA,EAAQoB,SACRA,EAAQC,UACRA,GACE7B,EACE8B,EAAWhC,gBAAgBS,EAAIF,GACjCL,EAAO6B,WACTC,EAASC,QAAQjC,gBAAgBE,EAAOgC,OAAQ3B,IAElDyB,EAASG,QAAQC,IACf5B,EAAa4B,EAAO1B,KAEtBmB,EAAOM,QAAQ,CAACE,EAASC,KACvB,IAAIC,EAAgBF,EAAQ3B,SACxBR,EAAOsC,OAAOC,eAAiB,GAAqC,SAAhCvC,EAAOsC,OAAOE,gBACpDH,GAAiBf,KAAKmB,KAAKL,EAAa,GAAK5B,GAAYoB,EAASc,OAAS,IAE7EL,EAAgBf,KAAKqB,IAAIrB,KAAKsB,IAAIP,GAAgB,GAAI,GACtDF,EAAQU,iBAAiB,GAAGxC,oCAAmD4B,QAAQC,IACrF5B,EAAa4B,EAAOG,QAmB1BnC,EAAG,aAAc,KACVF,EAAOsC,OAAOnC,SAASC,UAC5BJ,EAAOsC,OAAOQ,qBAAsB,EACpC9C,EAAO+C,eAAeD,qBAAsB,KAE9C5C,EAAG,OAAQ,KACJF,EAAOsC,OAAOnC,SAASC,SAC5BsB,MAEFxB,EAAG,eAAgB,KACZF,EAAOsC,OAAOnC,SAASC,SAC5BsB,MAEFxB,EAAG,gBAAiB,CAAC8C,EAASC,KACvBjD,EAAOsC,OAAOnC,SAASC,SA7BR,EAAC6C,EAAWjD,EAAOsC,OAAOY,SAC9C,MAAM3C,GACJA,EAAEyB,OACFA,GACEhC,EACE8B,EAAW,IAAIvB,EAAGsC,iBAAiBxC,IACrCL,EAAO6B,WACTC,EAASC,QAAQC,EAAOa,iBAAiBxC,IAE3CyB,EAASG,QAAQkB,IACf,IAAIC,EAAmBhC,SAAS+B,EAAWvC,aAAa,iCAAkC,KAAOqC,EAChF,IAAbA,IAAgBG,EAAmB,GACvCD,EAAW3B,MAAM6B,mBAAqB,GAAGD,SAkB3CE,CAAcL,IAElB,QAESlD"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/parallax.mjs b/vendor/javascript/swiper/modules/parallax.mjs new file mode 100644 index 0000000..055fd46 --- /dev/null +++ b/vendor/javascript/swiper/modules/parallax.mjs @@ -0,0 +1,120 @@ +import { e as elementChildren } from '../shared/utils.mjs'; + +function Parallax({ + swiper, + extendParams, + on +}) { + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = (duration = swiper.params.speed) => { + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); +} + +export { Parallax as default }; diff --git a/vendor/javascript/swiper/modules/scrollbar-element.css b/vendor/javascript/swiper/modules/scrollbar-element.css new file mode 100644 index 0000000..d86539f --- /dev/null +++ b/vendor/javascript/swiper/modules/scrollbar-element.css @@ -0,0 +1,58 @@ +:host { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, + .swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; + } +.swiper-horizontal > .swiper-scrollbar, + .swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } +.swiper-vertical > .swiper-scrollbar, + .swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/vendor/javascript/swiper/modules/scrollbar-element.min.css b/vendor/javascript/swiper/modules/scrollbar-element.min.css new file mode 100644 index 0000000..8480a2c --- /dev/null +++ b/vendor/javascript/swiper/modules/scrollbar-element.min.css @@ -0,0 +1 @@ +.swiper-scrollbar{background:var(--swiper-scrollbar-bg-color,#0000001a);border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{bottom:var(--swiper-scrollbar-bottom,4px);height:var(--swiper-scrollbar-size,4px);left:var(--swiper-scrollbar-sides-offset,1%);position:absolute;top:var(--swiper-scrollbar-top,auto);width:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);z-index:50}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{height:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);left:var(--swiper-scrollbar-left,auto);position:absolute;right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);width:var(--swiper-scrollbar-size,4px);z-index:50}.swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,#00000080);border-radius:var(--swiper-scrollbar-border-radius,10px);height:100%;left:0;position:relative;top:0;width:100%}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/scrollbar.css b/vendor/javascript/swiper/modules/scrollbar.css new file mode 100644 index 0000000..d6a3970 --- /dev/null +++ b/vendor/javascript/swiper/modules/scrollbar.css @@ -0,0 +1,58 @@ +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); + .swiper-scrollbar-disabled > &, + &.swiper-scrollbar-disabled { + display: none !important; + } + .swiper-horizontal > &, + &.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } + .swiper-vertical > &, + &.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/vendor/javascript/swiper/modules/scrollbar.min.css b/vendor/javascript/swiper/modules/scrollbar.min.css new file mode 100644 index 0000000..950c23f --- /dev/null +++ b/vendor/javascript/swiper/modules/scrollbar.min.css @@ -0,0 +1 @@ +.swiper-scrollbar{background:var(--swiper-scrollbar-bg-color,#0000001a);border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;&.swiper-scrollbar-disabled,.swiper-scrollbar-disabled>&{display:none!important}&.swiper-scrollbar-horizontal,.swiper-horizontal>&{bottom:var(--swiper-scrollbar-bottom,4px);height:var(--swiper-scrollbar-size,4px);left:var(--swiper-scrollbar-sides-offset,1%);position:absolute;top:var(--swiper-scrollbar-top,auto);width:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);z-index:50}&.swiper-scrollbar-vertical,.swiper-vertical>&{height:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);left:var(--swiper-scrollbar-left,auto);position:absolute;right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);width:var(--swiper-scrollbar-size,4px);z-index:50}}.swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,#00000080);border-radius:var(--swiper-scrollbar-border-radius,10px);height:100%;left:0;position:relative;top:0;width:100%}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/scrollbar.min.mjs b/vendor/javascript/swiper/modules/scrollbar.min.mjs new file mode 100644 index 0000000..8ffa079 --- /dev/null +++ b/vendor/javascript/swiper/modules/scrollbar.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{m as makeElementsArray,k as classesToTokens,c as createElement,n as nextTick,f as elementOffset}from"../shared/utils.min.mjs";import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";function Scrollbar({swiper:s,extendParams:l,on:e,emit:a}){const r=getDocument();let t,o,n,i,c=!1,p=null,m=null;function d(){if(!s.params.scrollbar.el||!s.scrollbar.el)return;const{scrollbar:l,rtlTranslate:e}=s,{dragEl:a,el:r}=l,t=s.params.scrollbar,i=s.params.loop?s.progressLoop:s.progress;let c=o,m=(n-o)*i;e?(m=-m,m>0?(c=o-m,m=0):-m+o>n&&(c=n+m)):m<0?(c=o+m,m=0):m+o>n&&(c=n-m),s.isHorizontal()?(a.style.transform=`translate3d(${m}px, 0, 0)`,a.style.width=`${c}px`):(a.style.transform=`translate3d(0px, ${m}px, 0)`,a.style.height=`${c}px`),t.hide&&(clearTimeout(p),r.style.opacity=1,p=setTimeout(()=>{r.style.opacity=0,r.style.transitionDuration="400ms"},1e3))}function b(){if(!s.params.scrollbar.el||!s.scrollbar.el)return;const{scrollbar:l}=s,{dragEl:e,el:a}=l;e.style.width="",e.style.height="",n=s.isHorizontal()?a.offsetWidth:a.offsetHeight,i=s.size/(s.virtualSize+s.params.slidesOffsetBefore-(s.params.centeredSlides?s.snapGrid[0]:0)),o="auto"===s.params.scrollbar.dragSize?n*i:parseInt(s.params.scrollbar.dragSize,10),s.isHorizontal()?e.style.width=`${o}px`:e.style.height=`${o}px`,a.style.display=i>=1?"none":"",s.params.scrollbar.hide&&(a.style.opacity=0),s.params.watchOverflow&&s.enabled&&l.el.classList[s.isLocked?"add":"remove"](s.params.scrollbar.lockClass)}function u(l){return s.isHorizontal()?l.clientX:l.clientY}function f(l){const{scrollbar:e,rtlTranslate:a}=s,{el:r}=e;let i;i=(u(l)-elementOffset(r)[s.isHorizontal()?"left":"top"]-(null!==t?t:o/2))/(n-o),i=Math.max(Math.min(i,1),0),a&&(i=1-i);const c=s.minTranslate()+(s.maxTranslate()-s.minTranslate())*i;s.updateProgress(c),s.setTranslate(c),s.updateActiveIndex(),s.updateSlidesClasses()}function g(l){const e=s.params.scrollbar,{scrollbar:r,wrapperEl:o}=s,{el:n,dragEl:i}=r;c=!0,t=l.target===i?u(l)-l.target.getBoundingClientRect()[s.isHorizontal()?"left":"top"]:null,l.preventDefault(),l.stopPropagation(),o.style.transitionDuration="100ms",i.style.transitionDuration="100ms",f(l),clearTimeout(m),n.style.transitionDuration="0ms",e.hide&&(n.style.opacity=1),s.params.cssMode&&(s.wrapperEl.style["scroll-snap-type"]="none"),a("scrollbarDragStart",l)}function y(l){const{scrollbar:e,wrapperEl:r}=s,{el:t,dragEl:o}=e;c&&(l.preventDefault&&l.cancelable?l.preventDefault():l.returnValue=!1,f(l),r.style.transitionDuration="0ms",t.style.transitionDuration="0ms",o.style.transitionDuration="0ms",a("scrollbarDragMove",l))}function h(l){const e=s.params.scrollbar,{scrollbar:r,wrapperEl:t}=s,{el:o}=r;c&&(c=!1,s.params.cssMode&&(s.wrapperEl.style["scroll-snap-type"]="",t.style.transitionDuration=""),e.hide&&(clearTimeout(m),m=nextTick(()=>{o.style.opacity=0,o.style.transitionDuration="400ms"},1e3)),a("scrollbarDragEnd",l),e.snapOnRelease&&s.slideToClosest())}function T(l){const{scrollbar:e,params:a}=s,t=e.el;if(!t)return;const o=t,n=!!a.passiveListeners&&{passive:!1,capture:!1},i=!!a.passiveListeners&&{passive:!0,capture:!1};if(!o)return;const c="on"===l?"addEventListener":"removeEventListener";o[c]("pointerdown",g,n),r[c]("pointermove",y,n),r[c]("pointerup",h,i)}function v(){const{scrollbar:l,el:e}=s;s.params.scrollbar=createElementIfNotDefined(s,s.originalParams.scrollbar,s.params.scrollbar,{el:"swiper-scrollbar"});const a=s.params.scrollbar;if(!a.el)return;let t,o;if("string"==typeof a.el&&s.isElement&&(t=s.el.querySelector(a.el)),t||"string"!=typeof a.el)t||(t=a.el);else if(t=r.querySelectorAll(a.el),!t.length)return;s.params.uniqueNavElements&&"string"==typeof a.el&&t.length>1&&1===e.querySelectorAll(a.el).length&&(t=e.querySelector(a.el)),t.length>0&&(t=t[0]),t.classList.add(s.isHorizontal()?a.horizontalClass:a.verticalClass),t&&(o=t.querySelector(classesToSelector(s.params.scrollbar.dragClass)),o||(o=createElement("div",s.params.scrollbar.dragClass),t.append(o))),Object.assign(l,{el:t,dragEl:o}),a.draggable&&s.params.scrollbar.el&&s.scrollbar.el&&T("on"),t&&t.classList[s.enabled?"remove":"add"](...classesToTokens(s.params.scrollbar.lockClass))}function D(){const l=s.params.scrollbar,e=s.scrollbar.el;e&&e.classList.remove(...classesToTokens(s.isHorizontal()?l.horizontalClass:l.verticalClass)),s.params.scrollbar.el&&s.scrollbar.el&&T("off")}l({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),s.scrollbar={el:null,dragEl:null},e("changeDirection",()=>{if(!s.scrollbar||!s.scrollbar.el)return;const l=s.params.scrollbar;let{el:e}=s.scrollbar;e=makeElementsArray(e),e.forEach(e=>{e.classList.remove(l.horizontalClass,l.verticalClass),e.classList.add(s.isHorizontal()?l.horizontalClass:l.verticalClass)})}),e("init",()=>{!1===s.params.scrollbar.enabled?C():(v(),b(),d())}),e("update resize observerUpdate lock unlock changeDirection",()=>{b()}),e("setTranslate",()=>{d()}),e("setTransition",(l,e)=>{!function(l){s.params.scrollbar.el&&s.scrollbar.el&&(s.scrollbar.dragEl.style.transitionDuration=`${l}ms`)}(e)}),e("enable disable",()=>{const{el:l}=s.scrollbar;l&&l.classList[s.enabled?"remove":"add"](...classesToTokens(s.params.scrollbar.lockClass))}),e("destroy",()=>{D()});const C=()=>{s.el.classList.add(...classesToTokens(s.params.scrollbar.scrollbarDisabledClass)),s.scrollbar.el&&s.scrollbar.el.classList.add(...classesToTokens(s.params.scrollbar.scrollbarDisabledClass)),D()};Object.assign(s.scrollbar,{enable:()=>{s.el.classList.remove(...classesToTokens(s.params.scrollbar.scrollbarDisabledClass)),s.scrollbar.el&&s.scrollbar.el.classList.remove(...classesToTokens(s.params.scrollbar.scrollbarDisabledClass)),v(),b(),d()},disable:C,updateSize:b,setTranslate:d,init:v,destroy:D})}export{Scrollbar as default}; +//# sourceMappingURL=scrollbar.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/scrollbar.min.mjs.map b/vendor/javascript/swiper/modules/scrollbar.min.mjs.map new file mode 100644 index 0000000..2480e6a --- /dev/null +++ b/vendor/javascript/swiper/modules/scrollbar.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"scrollbar.mjs.mjs","names":["getDocument","makeElementsArray","classesToTokens","createElement","nextTick","elementOffset","createElementIfNotDefined","classesToSelector","Scrollbar","swiper","extendParams","on","emit","document","dragStartPos","dragSize","trackSize","divider","isTouched","timeout","dragTimeout","setTranslate","params","scrollbar","el","rtlTranslate","rtl","dragEl","progress","loop","progressLoop","newSize","newPos","isHorizontal","style","transform","width","height","hide","clearTimeout","opacity","setTimeout","transitionDuration","updateSize","offsetWidth","offsetHeight","size","virtualSize","slidesOffsetBefore","centeredSlides","snapGrid","parseInt","display","watchOverflow","enabled","classList","isLocked","lockClass","getPointerPosition","e","clientX","clientY","setDragPosition","positionRatio","Math","max","min","position","minTranslate","maxTranslate","updateProgress","updateActiveIndex","updateSlidesClasses","onDragStart","wrapperEl","target","getBoundingClientRect","preventDefault","stopPropagation","cssMode","onDragMove","cancelable","returnValue","onDragEnd","snapOnRelease","slideToClosest","events","method","activeListener","passiveListeners","passive","capture","passiveListener","eventMethod","init","swiperEl","originalParams","isElement","querySelector","querySelectorAll","length","uniqueNavElements","add","horizontalClass","verticalClass","dragClass","append","Object","assign","draggable","destroy","remove","scrollbarDisabledClass","forEach","subEl","disable","_s","duration","setTransition","enable"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/scrollbar.mjs b/vendor/javascript/swiper/modules/scrollbar.mjs new file mode 100644 index 0000000..2aa1cfe --- /dev/null +++ b/vendor/javascript/swiper/modules/scrollbar.mjs @@ -0,0 +1,365 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; +import { m as makeElementsArray, k as classesToTokens, c as createElement, n as nextTick, f as elementOffset } from '../shared/utils.mjs'; +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; + +function Scrollbar({ + swiper, + extendParams, + on, + emit +}) { + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('changeDirection', () => { + if (!swiper.scrollbar || !swiper.scrollbar.el) return; + const params = swiper.params.scrollbar; + let { + el + } = swiper.scrollbar; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock changeDirection', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); +} + +export { Scrollbar as default }; diff --git a/vendor/javascript/swiper/modules/thumbs-element.css b/vendor/javascript/swiper/modules/thumbs-element.css new file mode 100644 index 0000000..c8123d0 --- /dev/null +++ b/vendor/javascript/swiper/modules/thumbs-element.css @@ -0,0 +1,3 @@ +.swiper-thumbs .swiper-slide-thumb-active { + /* Styles for active thumb slide */ + } diff --git a/vendor/javascript/swiper/modules/thumbs-element.min.css b/vendor/javascript/swiper/modules/thumbs-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/thumbs.css b/vendor/javascript/swiper/modules/thumbs.css new file mode 100644 index 0000000..f8eade6 --- /dev/null +++ b/vendor/javascript/swiper/modules/thumbs.css @@ -0,0 +1,5 @@ +.swiper-thumbs { + .swiper-slide-thumb-active { + /* Styles for active thumb slide */ + } +} diff --git a/vendor/javascript/swiper/modules/thumbs.min.css b/vendor/javascript/swiper/modules/thumbs.min.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/javascript/swiper/modules/thumbs.min.mjs b/vendor/javascript/swiper/modules/thumbs.min.mjs new file mode 100644 index 0000000..e24a480 --- /dev/null +++ b/vendor/javascript/swiper/modules/thumbs.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{p as isObject,e as elementChildren}from"../shared/utils.min.mjs";function Thumb({swiper:e,extendParams:s,on:i}){s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let t=!1,r=!1;function a(){const s=e.thumbs.swiper;return!(!s||s.destroyed)&&(s.params.virtual&&s.params.virtual.enabled)}function n(){const s=e.thumbs.swiper;if(!s||s.destroyed)return;const i=s.clickedIndex,t=s.clickedSlide;if(t&&t.classList.contains(e.params.thumbs.slideThumbActiveClass))return;if(null==i)return;let r;r=s.params.loop?parseInt(s.clickedSlide.getAttribute("data-swiper-slide-index"),10):i,e.params.loop?e.slideToLoop(r):e.slideTo(r)}function l(){const{thumbs:s}=e.params;if(t)return!1;t=!0;const i=e.constructor;if(s.swiper instanceof i){if(s.swiper.destroyed)return t=!1,!1;e.thumbs.swiper=s.swiper,Object.assign(e.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(e.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),e.thumbs.swiper.update()}else if(isObject(s.swiper)){const t=Object.assign({},s.swiper);Object.assign(t,{watchSlidesProgress:!0,slideToClickedSlide:!1}),e.thumbs.swiper=new i(t),r=!0}return e.thumbs.swiper.el.classList.add(e.params.thumbs.thumbsContainerClass),e.thumbs.swiper.on("tap",n),a()&&e.thumbs.swiper.on("virtualUpdate",()=>{d(!1,{autoScroll:!1})}),!0}function d(s,i){const t=e.thumbs.swiper;if(!t||t.destroyed)return;let r=1;const n=e.params.thumbs.slideThumbActiveClass;if(e.params.slidesPerView>1&&!e.params.centeredSlides&&(r=e.params.slidesPerView),e.params.thumbs.multipleActiveThumbs||(r=1),r=Math.floor(r),t.slides.forEach(e=>e.classList.remove(n)),t.params.loop||a())for(let s=0;s{e.classList.add(n)});else for(let s=0;ss.getAttribute("data-swiper-slide-index")===`${e.realIndex}`);l=i.slides.indexOf(s),d=e.activeIndex>e.previousIndex?"next":"prev"}else l=e.realIndex,d=l>e.previousIndex?"next":"prev";a&&(l+="next"===d?r:-1*r),i.visibleSlidesIndexes&&i.visibleSlidesIndexes.indexOf(l)<0&&(i.params.centeredSlides?l=l>n?l-Math.floor(t/2)+1:l+Math.floor(t/2)-1:l>n&&i.params.slidesPerGroup,i.slideTo(l,s))}}(s?0:void 0)}e.thumbs={swiper:null},i("beforeInit",()=>{const{thumbs:s}=e.params;if(s&&s.swiper)if("string"==typeof s.swiper||s.swiper instanceof HTMLElement){const i=getDocument(),t=()=>{const t="string"==typeof s.swiper?i.querySelector(s.swiper):s.swiper;if(t&&t.swiper)s.swiper=t.swiper,l(),d(!0);else if(t){const i=`${e.params.eventsPrefix}init`,r=a=>{s.swiper=a.detail[0],t.removeEventListener(i,r),l(),d(!0),s.swiper.update(),e.update()};t.addEventListener(i,r)}return t},r=()=>{if(e.destroyed)return;t()||requestAnimationFrame(r)};requestAnimationFrame(r)}else l(),d(!0)}),i("slideChange update resize observerUpdate",()=>{d()}),i("setTransition",(s,i)=>{const t=e.thumbs.swiper;t&&!t.destroyed&&t.setTransition(i)}),i("beforeDestroy",()=>{const s=e.thumbs.swiper;s&&!s.destroyed&&r&&s.destroy()}),Object.assign(e.thumbs,{init:l,update:d})}export{Thumb as default}; +//# sourceMappingURL=thumbs.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/thumbs.min.mjs.map b/vendor/javascript/swiper/modules/thumbs.min.mjs.map new file mode 100644 index 0000000..39d4df8 --- /dev/null +++ b/vendor/javascript/swiper/modules/thumbs.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"thumbs.mjs.mjs","names":["getDocument","isObject","elementChildren","Thumb","swiper","extendParams","on","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","initialized","swiperCreated","isVirtualEnabled","thumbsSwiper","destroyed","params","virtual","enabled","onThumbClick","clickedIndex","clickedSlide","classList","contains","slideToIndex","loop","parseInt","getAttribute","slideToLoop","slideTo","init","thumbsParams","SwiperClass","constructor","Object","assign","originalParams","watchSlidesProgress","slideToClickedSlide","update","thumbsSwiperParams","el","add","autoScroll","initial","p","thumbsToActivate","thumbActiveClass","slidesPerView","centeredSlides","Math","floor","slides","forEach","slideEl","remove","i","slidesEl","realIndex","slideSpeed","slidesPerViewDynamic","useOffset","currentThumbsIndex","activeIndex","newThumbsIndex","direction","newThumbsSlide","find","indexOf","previousIndex","visibleSlidesIndexes","slidesPerGroup","undefined","HTMLElement","document","getThumbsElementAndInit","thumbsElement","querySelector","eventName","eventsPrefix","onThumbsSwiper","e","detail","removeEventListener","addEventListener","watchForThumbsToAppear","requestAnimationFrame","_s","duration","setTransition","destroy"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/thumbs.mjs b/vendor/javascript/swiper/modules/thumbs.mjs new file mode 100644 index 0000000..9185a84 --- /dev/null +++ b/vendor/javascript/swiper/modules/thumbs.mjs @@ -0,0 +1,215 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; +import { p as isObject, e as elementChildren } from '../shared/utils.mjs'; + +function Thumb({ + swiper, + extendParams, + on +}) { + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function isVirtualEnabled() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return false; + return thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled; + } + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + if (thumbsParams.swiper.destroyed) { + initialized = false; + return false; + } + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + if (isVirtualEnabled()) { + swiper.thumbs.swiper.on('virtualUpdate', () => { + update(false, { + autoScroll: false + }); + }); + } + return true; + } + function update(initial, p) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || isVirtualEnabled()) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + if (p?.autoScroll ?? true) { + autoScroll(initial ? 0 : undefined); + } + } + function autoScroll(slideSpeed) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`); + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, slideSpeed); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener(eventName, onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener(eventName, onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); +} + +export { Thumb as default }; diff --git a/vendor/javascript/swiper/modules/virtual-element.css b/vendor/javascript/swiper/modules/virtual-element.css new file mode 100644 index 0000000..15d200e --- /dev/null +++ b/vendor/javascript/swiper/modules/virtual-element.css @@ -0,0 +1,20 @@ +.swiper-virtual ::slotted(swiper-slide) { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; + } +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); + } + +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); + } diff --git a/vendor/javascript/swiper/modules/virtual-element.min.css b/vendor/javascript/swiper/modules/virtual-element.min.css new file mode 100644 index 0000000..a525a40 --- /dev/null +++ b/vendor/javascript/swiper/modules/virtual-element.min.css @@ -0,0 +1 @@ +.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper:after{content:"";left:0;pointer-events:none;position:absolute;top:0}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/virtual.css b/vendor/javascript/swiper/modules/virtual.css new file mode 100644 index 0000000..824cc1e --- /dev/null +++ b/vendor/javascript/swiper/modules/virtual.css @@ -0,0 +1,26 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode { + .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; + } +} +.swiper-virtual.swiper-css-mode.swiper-horizontal { + .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); + } +} + +.swiper-virtual.swiper-css-mode.swiper-vertical { + .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); + } +} diff --git a/vendor/javascript/swiper/modules/virtual.min.css b/vendor/javascript/swiper/modules/virtual.min.css new file mode 100644 index 0000000..07075a5 --- /dev/null +++ b/vendor/javascript/swiper/modules/virtual.min.css @@ -0,0 +1 @@ +.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode{.swiper-wrapper:after{content:"";left:0;pointer-events:none;position:absolute;top:0}}.swiper-virtual.swiper-css-mode.swiper-horizontal{.swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}}.swiper-virtual.swiper-css-mode.swiper-vertical{.swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px}} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/virtual.min.mjs b/vendor/javascript/swiper/modules/virtual.min.mjs new file mode 100644 index 0000000..9ac3561 --- /dev/null +++ b/vendor/javascript/swiper/modules/virtual.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{b as setCSSProperty,e as elementChildren,s as setInnerHTML,c as createElement}from"../shared/utils.min.mjs";function Virtual({swiper:e,extendParams:t,on:s,emit:i}){let r;t({virtual:{enabled:!1,slides:[],cache:!0,slidesPerViewAutoSlideSize:320,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const a=getDocument();e.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const l=a.createElement("div");function d(t,s){const i=e.params.virtual;if(i.cache&&e.virtual.cache[s])return e.virtual.cache[s];let r;return i.renderSlide?(r=i.renderSlide.call(e,t,s),"string"==typeof r&&(setInnerHTML(l,r),r=l.children[0])):r=e.isElement?createElement("swiper-slide"):createElement("div",e.params.slideClass),r.setAttribute("data-swiper-slide-index",s),i.renderSlide||setInnerHTML(r,t),i.cache&&(e.virtual.cache[s]=r),r}function n(t,s,r){const{slidesPerGroup:a,centeredSlides:l,slidesPerView:n,loop:c,initialSlide:o}=e.params;if(s&&!c&&o>0)return;const{addSlidesBefore:u,addSlidesAfter:p,slidesPerViewAutoSlideSize:h}=e.params.virtual,{from:f,to:v,slides:m,slidesGrid:g,offset:w}=e.virtual;e.params.cssMode||e.updateActiveIndex();const S=void 0===r?e.activeIndex||0:r;let x,E,b,A;if(x=e.rtlTranslate?"right":e.isHorizontal()?"left":"top","auto"===n)if(h){let t=e.size;t||(t=e.isHorizontal()?e.el.getBoundingClientRect().width:e.el.getBoundingClientRect().height),E=Math.max(1,Math.ceil(t/h))}else E=1;else E=n;l?(b=Math.floor(E/2)+a+p,A=Math.floor(E/2)+a+u):(b=E+(a-1)+p,A=(c?E:a)+u);let M=S-A,y=S+b;c||(M=Math.max(M,0),y=Math.min(y,m.length-1));let P=(e.slidesGrid[M]||0)-(e.slidesGrid[0]||0);function C(){e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),i("virtualUpdate")}if(c&&S>=A?(M-=A,l||(P+=e.slidesGrid[0])):c&&S{t.style[x]=P-Math.abs(e.cssOverflowAdjustment())+"px"}),e.updateProgress(),void i("virtualUpdate");if(e.params.virtual.renderExternal)return e.params.virtual.renderExternal.call(e,{offset:P,from:M,to:y,slides:function(){const e=[];for(let t=M;t<=y;t+=1)e.push(m[t]);return e}()}),void(e.params.virtual.renderExternalUpdate?C():i("virtualUpdate"));const j=[],G=[],I=e=>{let t=e;return e<0?t=m.length+e:t>=m.length&&(t-=m.length),t};if(t)e.slides.filter(t=>t.matches(`.${e.params.slideClass}, swiper-slide`)).forEach(e=>{e.remove()});else for(let t=f;t<=v;t+=1)if(ty){const s=I(t);e.slides.filter(t=>t.matches(`.${e.params.slideClass}[data-swiper-slide-index="${s}"], swiper-slide[data-swiper-slide-index="${s}"]`)).forEach(e=>{e.remove()})}const T=c?-m.length:0,z=c?2*m.length:m.length;for(let e=T;e=M&&e<=y){const s=I(e);void 0===v||t?G.push(s):(e>v&&G.push(s),e{e.slidesEl.append(d(m[t],t))}),c)for(let t=j.length-1;t>=0;t-=1){const s=j[t];e.slidesEl.prepend(d(m[s],s))}else j.sort((e,t)=>t-e),j.forEach(t=>{e.slidesEl.prepend(d(m[t],t))});elementChildren(e.slidesEl,".swiper-slide, swiper-slide").forEach(t=>{t.style[x]=P-Math.abs(e.cssOverflowAdjustment())+"px"}),C()}s("beforeInit",()=>{if(!e.params.virtual.enabled)return;let t;if(void 0===e.passedParams.virtual.slides){const s=[...e.slidesEl.children].filter(t=>t.matches(`.${e.params.slideClass}, swiper-slide`));s&&s.length&&(e.virtual.slides=[...s],t=!0,s.forEach((t,s)=>{t.setAttribute("data-swiper-slide-index",s),e.virtual.cache[s]=t,t.remove()}))}t||(e.virtual.slides=e.params.virtual.slides),e.classNames.push(`${e.params.containerModifierClass}virtual`),e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0,n(!1,!0)}),s("setTranslate",()=>{e.params.virtual.enabled&&(e.params.cssMode&&!e._immediateVirtual?(clearTimeout(r),r=setTimeout(()=>{n()},100)):n())}),s("init update resize",()=>{e.params.virtual.enabled&&e.params.cssMode&&setCSSProperty(e.wrapperEl,"--swiper-virtual-size",`${e.virtualSize}px`)}),Object.assign(e.virtual,{appendSlide:function(t){if("object"==typeof t&&"length"in t)for(let s=0;s{const i=t[e],a=i.getAttribute("data-swiper-slide-index");a&&i.setAttribute("data-swiper-slide-index",parseInt(a,10)+r),s[parseInt(e,10)+r]=i}),e.virtual.cache=s}n(!0),e.slideTo(i,0)},removeSlide:function(t){if(null==t)return;let s=e.activeIndex;if(Array.isArray(t))for(let i=t.length-1;i>=0;i-=1)e.params.virtual.cache&&(delete e.virtual.cache[t[i]],Object.keys(e.virtual.cache).forEach(s=>{s>t&&(e.virtual.cache[s-1]=e.virtual.cache[s],e.virtual.cache[s-1].setAttribute("data-swiper-slide-index",s-1),delete e.virtual.cache[s])})),e.virtual.slides.splice(t[i],1),t[i]{s>t&&(e.virtual.cache[s-1]=e.virtual.cache[s],e.virtual.cache[s-1].setAttribute("data-swiper-slide-index",s-1),delete e.virtual.cache[s])})),e.virtual.slides.splice(t,1),t 0) { + return; + } + const { + addSlidesBefore, + addSlidesAfter, + slidesPerViewAutoSlideSize + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + const activeIndex = typeof forceActiveIndex === 'undefined' ? swiper.activeIndex || 0 : forceActiveIndex; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesPerViewNumeric; + if (slidesPerView === 'auto') { + if (slidesPerViewAutoSlideSize) { + let swiperSize = swiper.size; + if (!swiperSize) { + swiperSize = swiper.isHorizontal() ? swiper.el.getBoundingClientRect().width : swiper.el.getBoundingClientRect().height; + } + slidesPerViewNumeric = Math.max(1, Math.ceil(swiperSize / slidesPerViewAutoSlideSize)); + } else { + slidesPerViewNumeric = 1; + } + } else { + slidesPerViewNumeric = slidesPerView; + } + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerViewNumeric / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerViewNumeric / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerViewNumeric + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = (isLoop ? slidesPerViewNumeric : slidesPerGroup) + addSlidesBefore; + } + let from = activeIndex - slidesBefore; + let to = activeIndex + slidesAfter; + if (!isLoop) { + from = Math.max(from, 0); + to = Math.min(to, slides.length - 1); + } + let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + if (isLoop && activeIndex >= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(false, true); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); +} + +export { Virtual as default }; diff --git a/vendor/javascript/swiper/modules/zoom-element.css b/vendor/javascript/swiper/modules/zoom-element.css new file mode 100644 index 0000000..1c6c27e --- /dev/null +++ b/vendor/javascript/swiper/modules/zoom-element.css @@ -0,0 +1,6 @@ +/* Zoom container styles start *//* Zoom container styles end */ + +::slotted(.swiper-slide-zoomed) { + cursor: move; + touch-action: none; +} diff --git a/vendor/javascript/swiper/modules/zoom-element.min.css b/vendor/javascript/swiper/modules/zoom-element.min.css new file mode 100644 index 0000000..17d073f --- /dev/null +++ b/vendor/javascript/swiper/modules/zoom-element.min.css @@ -0,0 +1 @@ +::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/zoom.css b/vendor/javascript/swiper/modules/zoom.css new file mode 100644 index 0000000..d226ae9 --- /dev/null +++ b/vendor/javascript/swiper/modules/zoom.css @@ -0,0 +1,23 @@ +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, + > svg, + > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} +/* Zoom container styles end */ + +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} diff --git a/vendor/javascript/swiper/modules/zoom.min.css b/vendor/javascript/swiper/modules/zoom.min.css new file mode 100644 index 0000000..3e277ec --- /dev/null +++ b/vendor/javascript/swiper/modules/zoom.min.css @@ -0,0 +1 @@ +.swiper-zoom-container{align-items:center;display:flex;height:100%;justify-content:center;text-align:center;width:100%;>canvas,>img,>svg{max-height:100%;max-width:100%;object-fit:contain}}.swiper-slide-zoomed{cursor:move;touch-action:none} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/zoom.min.mjs b/vendor/javascript/swiper/modules/zoom.min.mjs new file mode 100644 index 0000000..0324a80 --- /dev/null +++ b/vendor/javascript/swiper/modules/zoom.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{e as elementChildren,d as elementParents,f as elementOffset,l as getTranslate}from"../shared/utils.min.mjs";function Zoom({swiper:e,extendParams:t,on:i,emit:a}){const r=getWindow();t({zoom:{enabled:!1,limitToOriginalSize:!1,maxRatio:3,minRatio:1,panOnMouseMove:!1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),e.zoom={enabled:!1};let s=1,o=!1,n=!1,l={x:0,y:0};let m,c;const d=[],u={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},p={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let h,E=1;function v(){if(d.length<2)return 1;const e=d[0].pageX,t=d[0].pageY,i=d[1].pageX,a=d[1].pageY;return Math.sqrt((i-e)**2+(a-t)**2)}function f(){const t=e.params.zoom,i=u.imageWrapEl.getAttribute("data-swiper-zoom")||t.maxRatio;if(t.limitToOriginalSize&&u.imageEl&&u.imageEl.naturalWidth){const e=u.imageEl.naturalWidth/u.imageEl.offsetWidth;return Math.min(e,i)}return i}function x(t){const i=e.isElement?"swiper-slide":`.${e.params.slideClass}`;return!!t.target.matches(i)||e.slides.filter(e=>e.contains(t.target)).length>0}function X(t){const i=`.${e.params.zoom.containerClass}`;return!!t.target.matches(i)||[...e.hostEl.querySelectorAll(i)].filter(e=>e.contains(t.target)).length>0}function Y(t){if("mouse"===t.pointerType&&d.splice(0,d.length),!x(t))return;const i=e.params.zoom;if(m=!1,c=!1,d.push(t),!(d.length<2)){if(m=!0,u.scaleStart=v(),!u.slideEl){u.slideEl=t.target.closest(`.${e.params.slideClass}, swiper-slide`),u.slideEl||(u.slideEl=e.slides[e.activeIndex]);let a=u.slideEl.querySelector(`.${i.containerClass}`);if(a&&(a=a.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),u.imageEl=a,u.imageWrapEl=a?elementParents(u.imageEl,`.${i.containerClass}`)[0]:void 0,!u.imageWrapEl)return void(u.imageEl=void 0);u.maxRatio=f()}if(u.imageEl){const[e,t]=function(){if(d.length<2)return{x:null,y:null};const e=u.imageEl.getBoundingClientRect();return[(d[0].pageX+(d[1].pageX-d[0].pageX)/2-e.x-r.scrollX)/s,(d[0].pageY+(d[1].pageY-d[0].pageY)/2-e.y-r.scrollY)/s]}();u.originX=e,u.originY=t,u.imageEl.style.transitionDuration="0ms"}o=!0}}function y(t){if(!x(t))return;const i=e.params.zoom,a=e.zoom,r=d.findIndex(e=>e.pointerId===t.pointerId);r>=0&&(d[r]=t),d.length<2||(c=!0,u.scaleMove=v(),u.imageEl&&(a.scale=u.scaleMove/u.scaleStart*s,a.scale>u.maxRatio&&(a.scale=u.maxRatio-1+(a.scale-u.maxRatio+1)**.5),a.scalee.pointerId===t.pointerId);r>=0&&d.splice(r,1),m&&c&&(m=!1,c=!1,u.imageEl&&(a.scale=Math.max(Math.min(a.scale,u.maxRatio),i.minRatio),u.imageEl.style.transitionDuration=`${e.params.speed}ms`,u.imageEl.style.transform=`translate3d(0,0,0) scale(${a.scale})`,s=a.scale,o=!1,a.scale>1&&u.slideEl?u.slideEl.classList.add(`${i.zoomedSlideClass}`):a.scale<=1&&u.slideEl&&u.slideEl.classList.remove(`${i.zoomedSlideClass}`),1===a.scale&&(u.originX=0,u.originY=0,u.slideEl=void 0)))}function z(){e.touchEventsData.preventTouchMoveFromPointerMove=!1}function C(t){const i="mouse"===t.pointerType&&e.params.zoom.panOnMouseMove;if(!x(t)||!X(t))return;const a=e.zoom;if(!u.imageEl)return;if(!p.isTouched||!u.slideEl)return void(i&&w(t));if(i)return void w(t);p.isMoved||(p.width=u.imageEl.offsetWidth||u.imageEl.clientWidth,p.height=u.imageEl.offsetHeight||u.imageEl.clientHeight,p.startX=getTranslate(u.imageWrapEl,"x")||0,p.startY=getTranslate(u.imageWrapEl,"y")||0,u.slideWidth=u.slideEl.offsetWidth,u.slideHeight=u.slideEl.offsetHeight,u.imageWrapEl.style.transitionDuration="0ms");const r=p.width*a.scale,n=p.height*a.scale;p.minX=Math.min(u.slideWidth/2-r/2,0),p.maxX=-p.minX,p.minY=Math.min(u.slideHeight/2-n/2,0),p.maxY=-p.minY,p.touchesCurrent.x=d.length>0?d[0].pageX:t.pageX,p.touchesCurrent.y=d.length>0?d[0].pageY:t.pageY;if(Math.max(Math.abs(p.touchesCurrent.x-p.touchesStart.x),Math.abs(p.touchesCurrent.y-p.touchesStart.y))>5&&(e.allowClick=!1),!p.isMoved&&!o){if(e.isHorizontal()&&(Math.floor(p.minX)===Math.floor(p.startX)&&p.touchesCurrent.xp.touchesStart.x))return p.isTouched=!1,void z();if(!e.isHorizontal()&&(Math.floor(p.minY)===Math.floor(p.startY)&&p.touchesCurrent.yp.touchesStart.y))return p.isTouched=!1,void z()}t.cancelable&&t.preventDefault(),t.stopPropagation(),clearTimeout(h),e.touchEventsData.preventTouchMoveFromPointerMove=!0,h=setTimeout(()=>{e.destroyed||z()}),p.isMoved=!0;const l=(a.scale-s)/(u.maxRatio-e.params.zoom.minRatio),{originX:m,originY:c}=u;p.currentX=p.touchesCurrent.x-p.touchesStart.x+p.startX+l*(p.width-2*m),p.currentY=p.touchesCurrent.y-p.touchesStart.y+p.startY+l*(p.height-2*c),p.currentXp.maxX&&(p.currentX=p.maxX-1+(p.currentX-p.maxX+1)**.8),p.currentYp.maxY&&(p.currentY=p.maxY-1+(p.currentY-p.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=p.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=p.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(p.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(p.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(p.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(p.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=p.touchesCurrent.x,g.prevPositionY=p.touchesCurrent.y,g.prevTime=Date.now(),u.imageWrapEl.style.transform=`translate3d(${p.currentX}px, ${p.currentY}px,0)`}function W(){const t=e.zoom;u.slideEl&&e.activeIndex!==e.slides.indexOf(u.slideEl)&&(u.imageEl&&(u.imageEl.style.transform="translate3d(0,0,0) scale(1)"),u.imageWrapEl&&(u.imageWrapEl.style.transform="translate3d(0,0,0)"),u.slideEl.classList.remove(`${e.params.zoom.zoomedSlideClass}`),t.scale=1,s=1,u.slideEl=void 0,u.imageEl=void 0,u.imageWrapEl=void 0,u.originX=0,u.originY=0)}function w(e){if(s<=1||!u.imageWrapEl)return;if(!x(e)||!X(e))return;const t=r.getComputedStyle(u.imageWrapEl).transform,i=new r.DOMMatrix(t);if(!n)return n=!0,l.x=e.clientX,l.y=e.clientY,p.startX=i.e,p.startY=i.f,p.width=u.imageEl.offsetWidth||u.imageEl.clientWidth,p.height=u.imageEl.offsetHeight||u.imageEl.clientHeight,u.slideWidth=u.slideEl.offsetWidth,void(u.slideHeight=u.slideEl.offsetHeight);const a=-3*(e.clientX-l.x),o=-3*(e.clientY-l.y),m=p.width*s,c=p.height*s,d=u.slideWidth,g=u.slideHeight,h=Math.min(d/2-m/2,0),E=-h,v=Math.min(g/2-c/2,0),f=-v,Y=Math.max(Math.min(p.startX+a,E),h),y=Math.max(Math.min(p.startY+o,f),v);u.imageWrapEl.style.transitionDuration="0ms",u.imageWrapEl.style.transform=`translate3d(${Y}px, ${y}px, 0)`,l.x=e.clientX,l.y=e.clientY,p.startX=Y,p.startY=y,p.currentX=Y,p.currentY=y}function S(t){const i=e.zoom,a=e.params.zoom;if(!u.slideEl){t&&t.target&&(u.slideEl=t.target.closest(`.${e.params.slideClass}, swiper-slide`)),u.slideEl||(e.params.virtual&&e.params.virtual.enabled&&e.virtual?u.slideEl=elementChildren(e.slidesEl,`.${e.params.slideActiveClass}`)[0]:u.slideEl=e.slides[e.activeIndex]);let i=u.slideEl.querySelector(`.${a.containerClass}`);i&&(i=i.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),u.imageEl=i,u.imageWrapEl=i?elementParents(u.imageEl,`.${a.containerClass}`)[0]:void 0}if(!u.imageEl||!u.imageWrapEl)return;let o,n,l,m,c,d,g,h,E,v,x,X,Y,y,M,z,C,W;u.maxRatio=f(),e.params.cssMode&&(e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.touchAction="none"),u.slideEl.classList.add(`${a.zoomedSlideClass}`),void 0===p.touchesStart.x&&t?(o=t.pageX,n=t.pageY):(o=p.touchesStart.x,n=p.touchesStart.y);const w=s,S="number"==typeof t?t:null;1===s&&S&&(o=void 0,n=void 0,p.touchesStart.x=void 0,p.touchesStart.y=void 0);const b=f();i.scale=S||b,s=S||b,!t||1===s&&S?(g=0,h=0):(C=u.slideEl.offsetWidth,W=u.slideEl.offsetHeight,l=elementOffset(u.slideEl).left+r.scrollX,m=elementOffset(u.slideEl).top+r.scrollY,c=l+C/2-o,d=m+W/2-n,E=u.imageEl.offsetWidth||u.imageEl.clientWidth,v=u.imageEl.offsetHeight||u.imageEl.clientHeight,x=E*i.scale,X=v*i.scale,Y=Math.min(C/2-x/2,0),y=Math.min(W/2-X/2,0),M=-Y,z=-y,w>0&&S&&"number"==typeof p.currentX&&"number"==typeof p.currentY?(g=p.currentX*i.scale/w,h=p.currentY*i.scale/w):(g=c*i.scale,h=d*i.scale),gM&&(g=M),hz&&(h=z)),S&&1===i.scale&&(u.originX=0,u.originY=0),p.currentX=g,p.currentY=h,u.imageWrapEl.style.transitionDuration="300ms",u.imageWrapEl.style.transform=`translate3d(${g}px, ${h}px,0)`,u.imageEl.style.transitionDuration="300ms",u.imageEl.style.transform=`translate3d(0,0,0) scale(${i.scale})`}function b(){const t=e.zoom,i=e.params.zoom;if(!u.slideEl){e.params.virtual&&e.params.virtual.enabled&&e.virtual?u.slideEl=elementChildren(e.slidesEl,`.${e.params.slideActiveClass}`)[0]:u.slideEl=e.slides[e.activeIndex];let t=u.slideEl.querySelector(`.${i.containerClass}`);t&&(t=t.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),u.imageEl=t,u.imageWrapEl=t?elementParents(u.imageEl,`.${i.containerClass}`)[0]:void 0}u.imageEl&&u.imageWrapEl&&(u.maxRatio=f(),e.params.cssMode&&(e.wrapperEl.style.overflow="",e.wrapperEl.style.touchAction=""),t.scale=1,s=1,p.currentX=void 0,p.currentY=void 0,p.touchesStart.x=void 0,p.touchesStart.y=void 0,u.imageWrapEl.style.transitionDuration="300ms",u.imageWrapEl.style.transform="translate3d(0,0,0)",u.imageEl.style.transitionDuration="300ms",u.imageEl.style.transform="translate3d(0,0,0) scale(1)",u.slideEl.classList.remove(`${i.zoomedSlideClass}`),u.slideEl=void 0,u.originX=0,u.originY=0,e.params.zoom.panOnMouseMove&&(l={x:0,y:0},n&&(n=!1,p.startX=0,p.startY=0)))}function $(t){const i=e.zoom;i.scale&&1!==i.scale?b():S(t)}function T(){return{passiveListener:!!e.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!e.params.passiveListeners||{passive:!1,capture:!0}}}function L(){const t=e.zoom;if(t.enabled)return;t.enabled=!0;const{passiveListener:i,activeListenerWithCapture:a}=T();e.wrapperEl.addEventListener("pointerdown",Y,i),e.wrapperEl.addEventListener("pointermove",y,a),["pointerup","pointercancel","pointerout"].forEach(t=>{e.wrapperEl.addEventListener(t,M,i)}),e.wrapperEl.addEventListener("pointermove",C,a)}function P(){const t=e.zoom;if(!t.enabled)return;t.enabled=!1;const{passiveListener:i,activeListenerWithCapture:a}=T();e.wrapperEl.removeEventListener("pointerdown",Y,i),e.wrapperEl.removeEventListener("pointermove",y,a),["pointerup","pointercancel","pointerout"].forEach(t=>{e.wrapperEl.removeEventListener(t,M,i)}),e.wrapperEl.removeEventListener("pointermove",C,a)}Object.defineProperty(e.zoom,"scale",{get:()=>E,set(e){if(E!==e){const t=u.imageEl,i=u.slideEl;a("zoomChange",e,t,i)}E=e}}),i("init",()=>{e.params.zoom.enabled&&L()}),i("destroy",()=>{P()}),i("touchStart",(t,i)=>{e.zoom.enabled&&function(t){const i=e.device;if(!u.imageEl)return;if(p.isTouched)return;i.android&&t.cancelable&&t.preventDefault(),p.isTouched=!0;const a=d.length>0?d[0]:t;p.touchesStart.x=a.pageX,p.touchesStart.y=a.pageY}(i)}),i("touchEnd",(t,i)=>{e.zoom.enabled&&function(){const t=e.zoom;if(d.length=0,!u.imageEl)return;if(!p.isTouched||!p.isMoved)return p.isTouched=!1,void(p.isMoved=!1);p.isTouched=!1,p.isMoved=!1;let i=300,a=300;const r=g.x*i,s=p.currentX+r,o=g.y*a,n=p.currentY+o;0!==g.x&&(i=Math.abs((s-p.currentX)/g.x)),0!==g.y&&(a=Math.abs((n-p.currentY)/g.y));const l=Math.max(i,a);p.currentX=s,p.currentY=n;const m=p.width*t.scale,c=p.height*t.scale;p.minX=Math.min(u.slideWidth/2-m/2,0),p.maxX=-p.minX,p.minY=Math.min(u.slideHeight/2-c/2,0),p.maxY=-p.minY,p.currentX=Math.max(Math.min(p.currentX,p.maxX),p.minX),p.currentY=Math.max(Math.min(p.currentY,p.maxY),p.minY),u.imageWrapEl.style.transitionDuration=`${l}ms`,u.imageWrapEl.style.transform=`translate3d(${p.currentX}px, ${p.currentY}px,0)`}()}),i("doubleTap",(t,i)=>{!e.animating&&e.params.zoom.enabled&&e.zoom.enabled&&e.params.zoom.toggle&&$(i)}),i("transitionEnd",()=>{e.zoom.enabled&&e.params.zoom.enabled&&W()}),i("slideChange",()=>{e.zoom.enabled&&e.params.zoom.enabled&&e.params.cssMode&&W()}),Object.assign(e.zoom,{enable:L,disable:P,in:S,out:b,toggle:$})}export{Zoom as default}; +//# sourceMappingURL=zoom.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/zoom.min.mjs.map b/vendor/javascript/swiper/modules/zoom.min.mjs.map new file mode 100644 index 0000000..10cc2c1 --- /dev/null +++ b/vendor/javascript/swiper/modules/zoom.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"zoom.mjs.mjs","names":["getWindow","elementChildren","elementParents","elementOffset","getTranslate","Zoom","swiper","extendParams","on","emit","window","zoom","enabled","limitToOriginalSize","maxRatio","minRatio","panOnMouseMove","toggle","containerClass","zoomedSlideClass","currentScale","isScaling","isPanningWithMouse","mousePanStart","x","y","fakeGestureTouched","fakeGestureMoved","evCache","gesture","originX","originY","slideEl","undefined","slideWidth","slideHeight","imageEl","imageWrapEl","image","isTouched","isMoved","currentX","currentY","minX","minY","maxX","maxY","width","height","startX","startY","touchesStart","touchesCurrent","velocity","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","scale","getDistanceBetweenTouches","length","x1","pageX","y1","pageY","x2","y2","Math","sqrt","getMaxRatio","params","getAttribute","naturalWidth","imageMaxRatio","offsetWidth","min","eventWithinSlide","e","slideSelector","isElement","slideClass","target","matches","slides","filter","contains","eventWithinZoomContainer","selector","hostEl","querySelectorAll","containerEl","onGestureStart","pointerType","splice","push","scaleStart","closest","activeIndex","querySelector","box","getBoundingClientRect","scrollX","scrollY","getScaleOrigin","style","transitionDuration","onGestureChange","pointerIndex","findIndex","cachedEv","pointerId","scaleMove","transform","onGestureEnd","type","max","speed","classList","add","remove","allowTouchMove","touchEventsData","preventTouchMoveFromPointerMove","onTouchMove","isMousePan","onMouseMove","clientWidth","offsetHeight","clientHeight","scaledWidth","scaledHeight","abs","allowClick","isHorizontal","floor","cancelable","preventDefault","stopPropagation","clearTimeout","setTimeout","destroyed","scaleRatio","Date","now","onTransitionEnd","indexOf","currentTransform","getComputedStyle","matrix","DOMMatrix","clientX","clientY","f","deltaX","deltaY","newX","newY","zoomIn","virtual","slidesEl","slideActiveClass","touchX","touchY","offsetX","offsetY","diffX","diffY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","cssMode","wrapperEl","overflow","touchAction","prevScale","forceZoomRatio","left","top","zoomOut","zoomToggle","getListeners","passiveListener","passiveListeners","passive","capture","activeListenerWithCapture","enable","addEventListener","forEach","eventName","disable","removeEventListener","Object","defineProperty","get","set","value","_s","device","android","event","onTouchStart","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTouchEnd","animating","assign","in","out"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/modules/zoom.mjs b/vendor/javascript/swiper/modules/zoom.mjs new file mode 100644 index 0000000..4f3b2db --- /dev/null +++ b/vendor/javascript/swiper/modules/zoom.mjs @@ -0,0 +1,702 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { e as elementChildren, d as elementParents, f as elementOffset, l as getTranslate } from '../shared/utils.mjs'; + +function Zoom({ + swiper, + extendParams, + on, + emit +}) { + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + limitToOriginalSize: false, + maxRatio: 3, + minRatio: 1, + panOnMouseMove: false, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let isPanningWithMouse = false; + let mousePanStart = { + x: 0, + y: 0 + }; + const mousePanSensitivity = -3; // Negative to invert pan direction + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getMaxRatio() { + const params = swiper.params.zoom; + const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { + const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; + return Math.min(imageMaxRatio, maxRatio); + } + return maxRatio; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = getMaxRatio(); + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + let allowTouchMoveTimeout; + function allowTouchMove() { + swiper.touchEventsData.preventTouchMoveFromPointerMove = false; + } + function preventTouchMove() { + clearTimeout(allowTouchMoveTimeout); + swiper.touchEventsData.preventTouchMoveFromPointerMove = true; + allowTouchMoveTimeout = setTimeout(() => { + if (swiper.destroyed) return; + allowTouchMove(); + }); + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + const isMouseEvent = e.pointerType === 'mouse'; + const isMousePan = isMouseEvent && swiper.params.zoom.panOnMouseMove; + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) { + return; + } + const zoom = swiper.zoom; + if (!gesture.imageEl) { + return; + } + if (!image.isTouched || !gesture.slideEl) { + if (isMousePan) onMouseMove(e); + return; + } + if (isMousePan) { + onMouseMove(e); + return; + } + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + 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)) { + image.isTouched = false; + allowTouchMove(); + return; + } + 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)) { + image.isTouched = false; + allowTouchMove(); + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + preventTouchMove(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + evCache.length = 0; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function onMouseMove(e) { + // Only pan if zoomed in and mouse panning is enabled + if (currentScale <= 1 || !gesture.imageWrapEl) return; + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return; + const currentTransform = window.getComputedStyle(gesture.imageWrapEl).transform; + const matrix = new window.DOMMatrix(currentTransform); + if (!isPanningWithMouse) { + isPanningWithMouse = true; + mousePanStart.x = e.clientX; + mousePanStart.y = e.clientY; + image.startX = matrix.e; + image.startY = matrix.f; + image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + return; + } + const deltaX = (e.clientX - mousePanStart.x) * mousePanSensitivity; + const deltaY = (e.clientY - mousePanStart.y) * mousePanSensitivity; + const scaledWidth = image.width * currentScale; + const scaledHeight = image.height * currentScale; + const slideWidth = gesture.slideWidth; + const slideHeight = gesture.slideHeight; + const minX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + const maxX = -minX; + const minY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + const maxY = -minY; + const newX = Math.max(Math.min(image.startX + deltaX, maxX), minX); + const newY = Math.max(Math.min(image.startY + deltaY, maxY), minY); + gesture.imageWrapEl.style.transitionDuration = '0ms'; + gesture.imageWrapEl.style.transform = `translate3d(${newX}px, ${newY}px, 0)`; + mousePanStart.x = e.clientX; + mousePanStart.y = e.clientY; + image.startX = newX; + image.startY = newY; + image.currentX = newX; + image.currentY = newY; + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + gesture.maxRatio = getMaxRatio(); + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const prevScale = currentScale; + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + image.touchesStart.x = undefined; + image.touchesStart.y = undefined; + } + const maxRatio = getMaxRatio(); + zoom.scale = forceZoomRatio || maxRatio; + currentScale = forceZoomRatio || maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + if (prevScale > 0 && forceZoomRatio && typeof image.currentX === 'number' && typeof image.currentY === 'number') { + translateX = image.currentX * zoom.scale / prevScale; + translateY = image.currentY * zoom.scale / prevScale; + } else { + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + } + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + image.currentX = translateX; + image.currentY = translateY; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + gesture.maxRatio = getMaxRatio(); + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + image.currentX = undefined; + image.currentY = undefined; + image.touchesStart.x = undefined; + image.touchesStart.y = undefined; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + if (swiper.params.zoom.panOnMouseMove) { + mousePanStart = { + x: 0, + y: 0 + }; + if (isPanningWithMouse) { + isPanningWithMouse = false; + image.startX = 0; + image.startY = 0; + } + } + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); +} + +export { Zoom as default }; diff --git a/vendor/javascript/swiper/package.json b/vendor/javascript/swiper/package.json new file mode 100644 index 0000000..414431c --- /dev/null +++ b/vendor/javascript/swiper/package.json @@ -0,0 +1,165 @@ +{ + "name": "swiper", + "version": "12.1.2", + "description": "Most modern mobile touch slider and framework with hardware accelerated transitions", + "typings": "swiper.d.ts", + "type": "module", + "main": "./swiper.mjs", + "module": "./swiper.mjs", + "exports": { + ".": { + "types": "./swiper.d.ts", + "default": "./swiper.mjs" + }, + "./effect-utils": { + "types": "./swiper-effect-utils.d.ts", + "default": "./swiper-effect-utils.mjs" + }, + "./core": { + "types": "./swiper.d.ts", + "default": "./swiper.mjs" + }, + "./bundle": { + "types": "./swiper.d.ts", + "default": "./swiper-bundle.mjs" + }, + "./css": "./swiper.css", + "./swiper.css": "./swiper.css", + "./css/bundle": "./swiper-bundle.css", + "./swiper-bundle.css": "./swiper-bundle.css", + "./css/a11y": "./modules/a11y.css", + "./css/autoplay": "./modules/autoplay.css", + "./css/controller": "./modules/controller.css", + "./css/effect-coverflow": "./modules/effect-coverflow.css", + "./css/effect-cube": "./modules/effect-cube.css", + "./css/effect-fade": "./modules/effect-fade.css", + "./css/effect-flip": "./modules/effect-flip.css", + "./css/effect-creative": "./modules/effect-creative.css", + "./css/effect-cards": "./modules/effect-cards.css", + "./css/free-mode": "./modules/free-mode.css", + "./css/grid": "./modules/grid.css", + "./css/hash-navigation": "./modules/hash-navigation.css", + "./css/history": "./modules/history.css", + "./css/keyboard": "./modules/keyboard.css", + "./css/manipulation": "./modules/manipulation.css", + "./css/mousewheel": "./modules/mousewheel.css", + "./css/navigation": "./modules/navigation.css", + "./css/pagination": "./modules/pagination.css", + "./css/parallax": "./modules/parallax.css", + "./css/scrollbar": "./modules/scrollbar.css", + "./css/thumbs": "./modules/thumbs.css", + "./css/virtual": "./modules/virtual.css", + "./css/zoom": "./modules/zoom.css", + "./element": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element.mjs" + }, + "./element/bundle": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element-bundle.mjs" + }, + "./element-bundle": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element-bundle.mjs" + }, + "./element/css/a11y": "./modules/a11y-element.css", + "./element/css/autoplay": "./modules/autoplay-element.css", + "./element/css/controller": "./modules/controller-element.css", + "./element/css/effect-coverflow": "./modules/effect-coverflow-element.css", + "./element/css/effect-cube": "./modules/effect-cube-element.css", + "./element/css/effect-fade": "./modules/effect-fade-element.css", + "./element/css/effect-flip": "./modules/effect-flip-element.css", + "./element/css/effect-creative": "./modules/effect-creative-element.css", + "./element/css/effect-cards": "./modules/effect-cards-element.css", + "./element/css/free-mode": "./modules/free-mode-element.css", + "./element/css/grid": "./modules/grid-element.css", + "./element/css/hash-navigation": "./modules/hash-navigation-element.css", + "./element/css/history": "./modules/history-element.css", + "./element/css/keyboard": "./modules/keyboard-element.css", + "./element/css/manipulation": "./modules/manipulation-element.css", + "./element/css/mousewheel": "./modules/mousewheel-element.css", + "./element/css/navigation": "./modules/navigation-element.css", + "./element/css/pagination": "./modules/pagination-element.css", + "./element/css/parallax": "./modules/parallax-element.css", + "./element/css/scrollbar": "./modules/scrollbar-element.css", + "./element/css/thumbs": "./modules/thumbs-element.css", + "./element/css/virtual": "./modules/virtual-element.css", + "./element/css/zoom": "./modules/zoom-element.css", + "./react": { + "types": "./swiper-react.d.ts", + "default": "./swiper-react.mjs" + }, + "./vue": { + "types": "./swiper-vue.d.ts", + "default": "./swiper-vue.mjs" + }, + "./modules": { + "types": "./types/modules/index.d.ts", + "default": "./modules/index.mjs" + }, + "./types": "./types/index.d.ts", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "modules": [ + "./types/modules/index.d.ts" + ], + "element": [ + "./swiper-element.d.ts" + ], + "element/bundle": [ + "./swiper-element.d.ts" + ], + "react": [ + "./swiper-react.d.ts" + ], + "vue": [ + "./swiper-vue.d.ts" + ] + } + }, + "repository": { + "type": "git", + "url": "https://github.com/nolimits4web/Swiper.git" + }, + "keywords": [ + "swiper", + "swipe", + "slider", + "touch", + "ios", + "mobile", + "cordova", + "phonegap", + "app", + "framework", + "framework7", + "carousel", + "gallery", + "plugin", + "react", + "vue", + "slideshow" + ], + "author": "Vladimir Kharlampidi", + "license": "MIT", + "bugs": { + "url": "https://github.com/nolimits4web/swiper/issues" + }, + "homepage": "https://swiperjs.com", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "engines": { + "node": ">= 4.7.0" + }, + "releaseDate": "February 18, 2026" +} diff --git a/vendor/javascript/swiper/shared/classes-to-selector.min.mjs b/vendor/javascript/swiper/shared/classes-to-selector.min.mjs new file mode 100644 index 0000000..4180102 --- /dev/null +++ b/vendor/javascript/swiper/shared/classes-to-selector.min.mjs @@ -0,0 +1,2 @@ +function classesToSelector(e=""){return`.${e.trim().replace(/([\.:!+\/()[\]#>~*^$|=,'"@{}\\])/g,"\\$1").replace(/ /g,".")}`}export{classesToSelector as c}; +//# sourceMappingURL=classes-to-selector.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/classes-to-selector.min.mjs.map b/vendor/javascript/swiper/shared/classes-to-selector.min.mjs.map new file mode 100644 index 0000000..f6390d3 --- /dev/null +++ b/vendor/javascript/swiper/shared/classes-to-selector.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"classes-to-selector.mjs.mjs","names":["classesToSelector","classes","trim","replace"],"sources":["0"],"mappings":"AAAA,SAASA,kBAAkBC,EAAU,IAEnC,MAAO,IAAIA,EAAQC,OAAOC,QAAQ,oCAAqC,QACtEA,QAAQ,KAAM,MACjB,QAESH"} \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/classes-to-selector.mjs b/vendor/javascript/swiper/shared/classes-to-selector.mjs new file mode 100644 index 0000000..527d6b3 --- /dev/null +++ b/vendor/javascript/swiper/shared/classes-to-selector.mjs @@ -0,0 +1,7 @@ +function classesToSelector(classes = '') { + // Escape all CSS selector special characters + return `.${classes.trim().replace(/([\.:!+\/()[\]#>~*^$|=,'"@{}\\])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; +} + +export { classesToSelector as c }; diff --git a/vendor/javascript/swiper/shared/create-element-if-not-defined.min.mjs b/vendor/javascript/swiper/shared/create-element-if-not-defined.min.mjs new file mode 100644 index 0000000..a0ce0ec --- /dev/null +++ b/vendor/javascript/swiper/shared/create-element-if-not-defined.min.mjs @@ -0,0 +1,2 @@ +import{e as elementChildren,c as createElement}from"./utils.min.mjs";function createElementIfNotDefined(e,t,n,a){return e.params.createElements&&Object.keys(a).forEach(l=>{if(!n[l]&&!0===n.auto){let r=elementChildren(e.el,`.${a[l]}`)[0];r||(r=createElement("div",a[l]),r.className=a[l],e.el.append(r)),n[l]=r,t[l]=r}}),n}export{createElementIfNotDefined as c}; +//# sourceMappingURL=create-element-if-not-defined.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/create-element-if-not-defined.min.mjs.map b/vendor/javascript/swiper/shared/create-element-if-not-defined.min.mjs.map new file mode 100644 index 0000000..4242e6d --- /dev/null +++ b/vendor/javascript/swiper/shared/create-element-if-not-defined.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"create-element-if-not-defined.mjs.mjs","names":["elementChildren","createElement","createElementIfNotDefined","swiper","originalParams","params","checkProps","createElements","Object","keys","forEach","key","auto","element","el","className","append"],"sources":["0"],"mappings":"YAAcA,qBAAsBC,kBAAqB,kBAEzD,SAASC,0BAA0BC,EAAQC,EAAgBC,EAAQC,GAejE,OAdIH,EAAOE,OAAOE,gBAChBC,OAAOC,KAAKH,GAAYI,QAAQC,IAC9B,IAAKN,EAAOM,KAAwB,IAAhBN,EAAOO,KAAe,CACxC,IAAIC,EAAUb,gBAAgBG,EAAOW,GAAI,IAAIR,EAAWK,MAAQ,GAC3DE,IACHA,EAAUZ,cAAc,MAAOK,EAAWK,IAC1CE,EAAQE,UAAYT,EAAWK,GAC/BR,EAAOW,GAAGE,OAAOH,IAEnBR,EAAOM,GAAOE,EACdT,EAAeO,GAAOE,CACxB,IAGGR,CACT,QAESH"} \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/create-element-if-not-defined.mjs b/vendor/javascript/swiper/shared/create-element-if-not-defined.mjs new file mode 100644 index 0000000..10b283f --- /dev/null +++ b/vendor/javascript/swiper/shared/create-element-if-not-defined.mjs @@ -0,0 +1,21 @@ +import { e as elementChildren, c as createElement } from './utils.mjs'; + +function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; +} + +export { createElementIfNotDefined as c }; diff --git a/vendor/javascript/swiper/shared/create-shadow.min.mjs b/vendor/javascript/swiper/shared/create-shadow.min.mjs new file mode 100644 index 0000000..ee6b7a7 --- /dev/null +++ b/vendor/javascript/swiper/shared/create-shadow.min.mjs @@ -0,0 +1,2 @@ +import{g as getSlideTransformEl,c as createElement}from"./utils.min.mjs";function createShadow(e,t,r){const s=`swiper-slide-shadow${r?`-${r}`:""}${e?` swiper-slide-shadow-${e}`:""}`,a=getSlideTransformEl(t);let i=a.querySelector(`.${s.split(" ").join(".")}`);return i||(i=createElement("div",s.split(" ")),a.append(i)),i}export{createShadow as c}; +//# sourceMappingURL=create-shadow.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/create-shadow.min.mjs.map b/vendor/javascript/swiper/shared/create-shadow.min.mjs.map new file mode 100644 index 0000000..4505556 --- /dev/null +++ b/vendor/javascript/swiper/shared/create-shadow.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"create-shadow.mjs.mjs","names":["getSlideTransformEl","createElement","createShadow","suffix","slideEl","side","shadowClass","shadowContainer","shadowEl","querySelector","split","join","append"],"sources":["0"],"mappings":"YAAcA,yBAA0BC,kBAAqB,kBAE7D,SAASC,aAAaC,EAAQC,EAASC,GACrC,MAAMC,EAAc,sBAAsBD,EAAO,IAAIA,IAAS,KAAKF,EAAS,wBAAwBA,IAAW,KACzGI,EAAkBP,oBAAoBI,GAC5C,IAAII,EAAWD,EAAgBE,cAAc,IAAIH,EAAYI,MAAM,KAAKC,KAAK,QAK7E,OAJKH,IACHA,EAAWP,cAAc,MAAOK,EAAYI,MAAM,MAClDH,EAAgBK,OAAOJ,IAElBA,CACT,QAESN"} \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/create-shadow.mjs b/vendor/javascript/swiper/shared/create-shadow.mjs new file mode 100644 index 0000000..2767e70 --- /dev/null +++ b/vendor/javascript/swiper/shared/create-shadow.mjs @@ -0,0 +1,14 @@ +import { g as getSlideTransformEl, c as createElement } from './utils.mjs'; + +function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; +} + +export { createShadow as c }; diff --git a/vendor/javascript/swiper/shared/effect-init.min.mjs b/vendor/javascript/swiper/shared/effect-init.min.mjs new file mode 100644 index 0000000..9e65714 --- /dev/null +++ b/vendor/javascript/swiper/shared/effect-init.min.mjs @@ -0,0 +1,2 @@ +function effectInit(e){const{effect:s,swiper:a,on:t,setTranslate:r,setTransition:i,overwriteParams:n,perspective:o,recreateShadows:f,getEffectParams:l}=e;let c;t("beforeInit",()=>{if(a.params.effect!==s)return;a.classNames.push(`${a.params.containerModifierClass}${s}`),o&&o()&&a.classNames.push(`${a.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(a.params,e),Object.assign(a.originalParams,e)}),t("setTranslate _virtualUpdated",()=>{a.params.effect===s&&r()}),t("setTransition",(e,t)=>{a.params.effect===s&&i(t)}),t("transitionEnd",()=>{if(a.params.effect===s&&f){if(!l||!l().slideShadows)return;a.slides.forEach(e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(e=>e.remove())}),f()}}),t("virtualUpdate",()=>{a.params.effect===s&&(a.slides.length||(c=!0),requestAnimationFrame(()=>{c&&a.slides&&a.slides.length&&(r(),c=!1)}))})}export{effectInit as e}; +//# sourceMappingURL=effect-init.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/effect-init.min.mjs.map b/vendor/javascript/swiper/shared/effect-init.min.mjs.map new file mode 100644 index 0000000..3085e13 --- /dev/null +++ b/vendor/javascript/swiper/shared/effect-init.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-init.mjs.mjs","names":["effectInit","params","effect","swiper","on","setTranslate","setTransition","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","classNames","push","containerModifierClass","overwriteParamsResult","Object","assign","originalParams","_s","duration","slideShadows","slides","forEach","slideEl","querySelectorAll","shadowEl","remove","length","requestAnimationFrame"],"sources":["0"],"mappings":"AAAA,SAASA,WAAWC,GAClB,MAAMC,OACJA,EAAMC,OACNA,EAAMC,GACNA,EAAEC,aACFA,EAAYC,cACZA,EAAaC,gBACbA,EAAeC,YACfA,EAAWC,gBACXA,EAAeC,gBACfA,GACET,EA+BJ,IAAIU,EA9BJP,EAAG,aAAc,KACf,GAAID,EAAOF,OAAOC,SAAWA,EAAQ,OACrCC,EAAOS,WAAWC,KAAK,GAAGV,EAAOF,OAAOa,yBAAyBZ,KAC7DM,GAAeA,KACjBL,EAAOS,WAAWC,KAAK,GAAGV,EAAOF,OAAOa,4BAE1C,MAAMC,EAAwBR,EAAkBA,IAAoB,CAAC,EACrES,OAAOC,OAAOd,EAAOF,OAAQc,GAC7BC,OAAOC,OAAOd,EAAOe,eAAgBH,KAEvCX,EAAG,+BAAgC,KAC7BD,EAAOF,OAAOC,SAAWA,GAC7BG,MAEFD,EAAG,gBAAiB,CAACe,EAAIC,KACnBjB,EAAOF,OAAOC,SAAWA,GAC7BI,EAAcc,KAEhBhB,EAAG,gBAAiB,KAClB,GAAID,EAAOF,OAAOC,SAAWA,GACzBO,EAAiB,CACnB,IAAKC,IAAoBA,IAAkBW,aAAc,OAEzDlB,EAAOmB,OAAOC,QAAQC,IACpBA,EAAQC,iBAAiB,gHAAgHF,QAAQG,GAAYA,EAASC,YAGxKlB,GACF,IAGFL,EAAG,gBAAiB,KACdD,EAAOF,OAAOC,SAAWA,IACxBC,EAAOmB,OAAOM,SACjBjB,GAAyB,GAE3BkB,sBAAsB,KAChBlB,GAA0BR,EAAOmB,QAAUnB,EAAOmB,OAAOM,SAC3DvB,IACAM,GAAyB,OAIjC,QAESX"} \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/effect-init.mjs b/vendor/javascript/swiper/shared/effect-init.mjs new file mode 100644 index 0000000..54e60e2 --- /dev/null +++ b/vendor/javascript/swiper/shared/effect-init.mjs @@ -0,0 +1,58 @@ +function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate _virtualUpdated', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); +} + +export { effectInit as e }; diff --git a/vendor/javascript/swiper/shared/effect-target.min.mjs b/vendor/javascript/swiper/shared/effect-target.min.mjs new file mode 100644 index 0000000..9829053 --- /dev/null +++ b/vendor/javascript/swiper/shared/effect-target.min.mjs @@ -0,0 +1,2 @@ +import{g as getSlideTransformEl}from"./utils.min.mjs";function effectTarget(e,i){const t=getSlideTransformEl(i);return t!==i&&(t.style.backfaceVisibility="hidden",t.style["-webkit-backface-visibility"]="hidden"),t}export{effectTarget as e}; +//# sourceMappingURL=effect-target.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/effect-target.min.mjs.map b/vendor/javascript/swiper/shared/effect-target.min.mjs.map new file mode 100644 index 0000000..9d0c540 --- /dev/null +++ b/vendor/javascript/swiper/shared/effect-target.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-target.mjs.mjs","names":["getSlideTransformEl","effectTarget","effectParams","slideEl","transformEl","style","backfaceVisibility"],"sources":["0"],"mappings":"YAAcA,wBAA2B,kBAEzC,SAASC,aAAaC,EAAcC,GAClC,MAAMC,EAAcJ,oBAAoBG,GAKxC,OAJIC,IAAgBD,IAClBC,EAAYC,MAAMC,mBAAqB,SACvCF,EAAYC,MAAM,+BAAiC,UAE9CD,CACT,QAESH"} \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/effect-target.mjs b/vendor/javascript/swiper/shared/effect-target.mjs new file mode 100644 index 0000000..b1a7b3b --- /dev/null +++ b/vendor/javascript/swiper/shared/effect-target.mjs @@ -0,0 +1,12 @@ +import { g as getSlideTransformEl } from './utils.mjs'; + +function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; +} + +export { effectTarget as e }; diff --git a/vendor/javascript/swiper/shared/effect-virtual-transition-end.min.mjs b/vendor/javascript/swiper/shared/effect-virtual-transition-end.min.mjs new file mode 100644 index 0000000..ff75ac4 --- /dev/null +++ b/vendor/javascript/swiper/shared/effect-virtual-transition-end.min.mjs @@ -0,0 +1,2 @@ +import{o as elementTransitionEnd}from"./utils.min.mjs";function effectVirtualTransitionEnd({swiper:e,duration:n,transformElements:t,allSlides:r}){const{activeIndex:i}=e;if(e.params.virtualTranslate&&0!==n){let n,a=!1;n=r?t:t.filter(n=>{const t=n.classList.contains("swiper-slide-transform")?(n=>{if(!n.parentElement)return e.slides.find(e=>e.shadowRoot&&e.shadowRoot===n.parentNode);return n.parentElement})(n):n;return e.getSlideIndex(t)===i}),n.forEach(n=>{elementTransitionEnd(n,()=>{if(a)return;if(!e||e.destroyed)return;a=!0,e.animating=!1;const n=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});e.wrapperEl.dispatchEvent(n)})})}}export{effectVirtualTransitionEnd as e}; +//# sourceMappingURL=effect-virtual-transition-end.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/effect-virtual-transition-end.min.mjs.map b/vendor/javascript/swiper/shared/effect-virtual-transition-end.min.mjs.map new file mode 100644 index 0000000..8c65cb7 --- /dev/null +++ b/vendor/javascript/swiper/shared/effect-virtual-transition-end.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-virtual-transition-end.mjs.mjs","names":["elementTransitionEnd","effectVirtualTransitionEnd","swiper","duration","transformElements","allSlides","activeIndex","params","virtualTranslate","transitionEndTarget","eventTriggered","filter","transformEl","el","classList","contains","parentElement","slides","find","slideEl","shadowRoot","parentNode","getSlide","getSlideIndex","forEach","destroyed","animating","evt","window","CustomEvent","bubbles","cancelable","wrapperEl","dispatchEvent"],"sources":["0"],"mappings":"YAAcA,yBAA4B,kBAE1C,SAASC,4BAA2BC,OAClCA,EAAMC,SACNA,EAAQC,kBACRA,EAAiBC,UACjBA,IAEA,MAAMC,YACJA,GACEJ,EASJ,GAAIA,EAAOK,OAAOC,kBAAiC,IAAbL,EAAgB,CACpD,IACIM,EADAC,GAAiB,EAGnBD,EADEJ,EACoBD,EAEAA,EAAkBO,OAAOC,IAC7C,MAAMC,EAAKD,EAAYE,UAAUC,SAAS,0BAf/BF,KACf,IAAKA,EAAGG,cAGN,OADcd,EAAOe,OAAOC,KAAKC,GAAWA,EAAQC,YAAcD,EAAQC,aAAeP,EAAGQ,YAG9F,OAAOR,EAAGG,eASgEM,CAASV,GAAeA,EAC9F,OAAOV,EAAOqB,cAAcV,KAAQP,IAGxCG,EAAoBe,QAAQX,IAC1Bb,qBAAqBa,EAAI,KACvB,GAAIH,EAAgB,OACpB,IAAKR,GAAUA,EAAOuB,UAAW,OACjCf,GAAiB,EACjBR,EAAOwB,WAAY,EACnB,MAAMC,EAAM,IAAIC,OAAOC,YAAY,gBAAiB,CAClDC,SAAS,EACTC,YAAY,IAEd7B,EAAO8B,UAAUC,cAAcN,MAGrC,CACF,QAES1B"} \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/effect-virtual-transition-end.mjs b/vendor/javascript/swiper/shared/effect-virtual-transition-end.mjs new file mode 100644 index 0000000..b9b1352 --- /dev/null +++ b/vendor/javascript/swiper/shared/effect-virtual-transition-end.mjs @@ -0,0 +1,47 @@ +import { o as elementTransitionEnd } from './utils.mjs'; + +function effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides +}) { + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.find(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode); + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } +} + +export { effectVirtualTransitionEnd as e }; diff --git a/vendor/javascript/swiper/shared/get-element-params.min.mjs b/vendor/javascript/swiper/shared/get-element-params.min.mjs new file mode 100644 index 0000000..155bb45 --- /dev/null +++ b/vendor/javascript/swiper/shared/get-element-params.min.mjs @@ -0,0 +1,2 @@ +import{e as extend,i as isObject,c as attrToProp,p as paramsList}from"./update-swiper.min.mjs";import{d as defaults}from"./swiper-core.min.mjs";const formatValue=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let a;try{a=JSON.parse(e)}catch(t){a=e}return a}return e}},modulesParamsList=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function getParams(e,a,t){const r={},n={};extend(r,defaults);const i=[...paramsList,"on"],o=i.map(e=>e.replace(/_/,""));i.forEach(a=>{a=a.replace("_",""),void 0!==e[a]&&(n[a]=e[a])});const s=[...e.attributes];return"string"==typeof a&&void 0!==t&&s.push({name:a,value:isObject(t)?{...t}:t}),s.forEach(e=>{const a=modulesParamsList.find(a=>e.name.startsWith(`${a}-`));if(a){const t=attrToProp(a),r=attrToProp(e.name.split(`${a}-`)[1]);void 0===n[t]&&(n[t]={}),!0===n[t]&&(n[t]={enabled:!0}),!1===n[t]&&(n[t]={enabled:!1}),n[t][r]=formatValue(e.value)}else{const a=attrToProp(e.name);if(!o.includes(a))return;const t=formatValue(e.value);n[a]&&modulesParamsList.includes(e.name)&&!isObject(t)?(n[a].constructor!==Object&&(n[a]={}),n[a].enabled=!!t):n[a]=t}}),extend(r,n),r.navigation?r.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==r.navigation?r.navigation:{}}:!1===r.navigation&&delete r.navigation,r.scrollbar?r.scrollbar={el:".swiper-scrollbar",...!0!==r.scrollbar?r.scrollbar:{}}:!1===r.scrollbar&&delete r.scrollbar,r.pagination?r.pagination={el:".swiper-pagination",...!0!==r.pagination?r.pagination:{}}:!1===r.pagination&&delete r.pagination,{params:r,passedParams:n}}export{getParams as g}; +//# sourceMappingURL=get-element-params.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/get-element-params.min.mjs.map b/vendor/javascript/swiper/shared/get-element-params.min.mjs.map new file mode 100644 index 0000000..f1e11ab --- /dev/null +++ b/vendor/javascript/swiper/shared/get-element-params.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"get-element-params.mjs.mjs","names":["extend","isObject","attrToProp","paramsList","defaults","formatValue","val","parseFloat","Number","includes","v","JSON","parse","err","modulesParamsList","getParams","element","propName","propValue","params","passedParams","localParamsList","allowedParams","map","key","replace","forEach","paramName","attrsList","attributes","push","name","value","attr","moduleParam","find","mParam","startsWith","parentObjName","subObjName","split","enabled","constructor","Object","navigation","prevEl","nextEl","scrollbar","el","pagination"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/get-element-params.mjs b/vendor/javascript/swiper/shared/get-element-params.mjs new file mode 100644 index 0000000..9044d72 --- /dev/null +++ b/vendor/javascript/swiper/shared/get-element-params.mjs @@ -0,0 +1,113 @@ +import { e as extend, i as isObject, c as attrToProp, p as paramsList } from './update-swiper.mjs'; +import { d as defaults } from './swiper-core.mjs'; + +const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; +}; +const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; +function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.find(mParam => attr.name.startsWith(`${mParam}-`)); + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') { + passedParams[parentObjName] = {}; + } + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + if (passedParams[parentObjName] === false) { + passedParams[parentObjName] = { + enabled: false + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; +} + +export { getParams as g }; diff --git a/vendor/javascript/swiper/shared/ssr-window.esm.min.mjs b/vendor/javascript/swiper/shared/ssr-window.esm.min.mjs new file mode 100644 index 0000000..05da826 --- /dev/null +++ b/vendor/javascript/swiper/shared/ssr-window.esm.min.mjs @@ -0,0 +1,2 @@ +function isObject(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function extend(e={},t={}){const n=["__proto__","constructor","prototype"];Object.keys(t).filter(e=>n.indexOf(e)<0).forEach(n=>{void 0===e[n]?e[n]=t[n]:isObject(t[n])&&isObject(e[n])&&Object.keys(t[n]).length>0&&extend(e[n],t[n])})}const ssrDocument={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function getDocument(){const e="undefined"!=typeof document?document:{};return extend(e,ssrDocument),e}const ssrWindow={document:ssrDocument,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function getWindow(){const e="undefined"!=typeof window?window:{};return extend(e,ssrWindow),e}export{getWindow as a,getDocument as g}; +//# sourceMappingURL=ssr-window.esm.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/ssr-window.esm.min.mjs.map b/vendor/javascript/swiper/shared/ssr-window.esm.min.mjs.map new file mode 100644 index 0000000..7e9f91a --- /dev/null +++ b/vendor/javascript/swiper/shared/ssr-window.esm.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"ssr-window.esm.mjs.mjs","names":["isObject","obj","constructor","Object","extend","target","src","noExtend","keys","filter","key","indexOf","forEach","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window"],"sources":["0"],"mappings":"AAYA,SAASA,SAASC,GAChB,OAAe,OAARA,GAA+B,iBAARA,GAAoB,gBAAiBA,GAAOA,EAAIC,cAAgBC,MAChG,CACA,SAASC,OAAOC,EAAS,CAAC,EAAGC,EAAM,CAAC,GAClC,MAAMC,EAAW,CAAC,YAAa,cAAe,aAC9CJ,OAAOK,KAAKF,GAAKG,OAAOC,GAAOH,EAASI,QAAQD,GAAO,GAAGE,QAAQF,SACrC,IAAhBL,EAAOK,GAAsBL,EAAOK,GAAOJ,EAAII,GAAcV,SAASM,EAAII,KAASV,SAASK,EAAOK,KAASP,OAAOK,KAAKF,EAAII,IAAMG,OAAS,GACpJT,OAAOC,EAAOK,GAAMJ,EAAII,KAG9B,CACA,MAAMI,YAAc,CAClBC,KAAM,CAAC,EACP,gBAAAC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBC,cAAe,CACb,IAAAC,GAAQ,EACRC,SAAU,IAEZC,cAAa,IACJ,KAETC,iBAAgB,IACP,GAETC,eAAc,IACL,KAETC,YAAW,KACF,CACL,SAAAC,GAAa,IAGjBC,cAAa,KACJ,CACLC,SAAU,GACVC,WAAY,GACZC,MAAO,CAAC,EACR,YAAAC,GAAgB,EAChBC,qBAAoB,IACX,KAIbC,gBAAe,KACN,CAAC,GAEVC,WAAU,IACD,KAETC,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGZ,SAASC,cACP,MAAMC,EAA0B,oBAAbC,SAA2BA,SAAW,CAAC,EAE1D,OADAzC,OAAOwC,EAAK9B,aACL8B,CACT,CACA,MAAME,UAAY,CAChBD,SAAU/B,YACViC,UAAW,CACTC,UAAW,IAEbd,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEVO,QAAS,CACP,YAAAC,GAAgB,EAChB,SAAAC,GAAa,EACb,EAAAC,GAAM,EACN,IAAAC,GAAQ,GAEVC,YAAa,WACX,OAAOC,IACT,EACA,gBAAAvC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBuC,iBAAgB,KACP,CACLC,iBAAgB,IACP,KAIb,KAAAC,GAAS,EACT,IAAAC,GAAQ,EACRC,OAAQ,CAAC,EACT,UAAAC,GAAc,EACd,YAAAC,GAAgB,EAChBC,WAAU,KACD,CAAC,GAEVC,sBAAsBC,GACM,oBAAfJ,YACTI,IACO,MAEFJ,WAAWI,EAAU,GAE9B,oBAAAC,CAAqBC,GACO,oBAAfN,YAGXC,aAAaK,EACf,GAEF,SAASC,YACP,MAAMC,EAAwB,oBAAXC,OAAyBA,OAAS,CAAC,EAEtD,OADAlE,OAAOiE,EAAKvB,WACLuB,CACT,QAESD,eAAgBzB"} \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/ssr-window.esm.mjs b/vendor/javascript/swiper/shared/ssr-window.esm.mjs new file mode 100644 index 0000000..60704fa --- /dev/null +++ b/vendor/javascript/swiper/shared/ssr-window.esm.mjs @@ -0,0 +1,140 @@ +/** + * SSR Window 5.0.1 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2025, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: June 27, 2025 + */ +/* eslint-disable no-param-reassign */ +function isObject(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; +} +function extend(target = {}, src = {}) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + extend(target[key], src[key]); + } + }); +} +const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } +}; +function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend(doc, ssrDocument); + return doc; +} +const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } +}; +function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend(win, ssrWindow); + return win; +} + +export { getWindow as a, getDocument as g }; diff --git a/vendor/javascript/swiper/shared/swiper-core.min.mjs b/vendor/javascript/swiper/shared/swiper-core.min.mjs new file mode 100644 index 0000000..40c5af2 --- /dev/null +++ b/vendor/javascript/swiper/shared/swiper-core.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow,g as getDocument}from"./ssr-window.esm.min.mjs";import{d as elementParents,q as elementStyle,e as elementChildren,b as setCSSProperty,i as elementOuterSize,r as elementNextAll,t as elementPrevAll,l as getTranslate,u as animateCSSModeScroll,n as nextTick,v as showWarning,c as createElement,w as elementIsChildOf,h as now,x as extend,j as elementIndex,y as deleteProps}from"./utils.min.mjs";let support,deviceCached,browser;function calcSupport(){const e=getWindow(),t=getDocument();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}function getSupport(){return support||(support=calcSupport()),support}function calcDevice({userAgent:e}={}){const t=getSupport(),s=getWindow(),i=s.navigator.platform,r=e||s.navigator.userAgent,a={ios:!1,android:!1},n=s.screen.width,l=s.screen.height,o=r.match(/(Android);?[\s\/]+([\d.]+)?/);let d=r.match(/(iPad)(?!\1).*OS\s([\d_]+)/);const c=r.match(/(iPod)(.*OS\s([\d_]+))?/),p=!d&&r.match(/(iPhone\sOS|iOS)\s([\d_]+)/),u="Win32"===i;let h="MacIntel"===i;return!d&&h&&t.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${n}x${l}`)>=0&&(d=r.match(/(Version)\/([\d.]+)/),d||(d=[0,1,"13_0_0"]),h=!1),o&&!u&&(a.os="android",a.android=!0),(d||p||c)&&(a.os="ios",a.ios=!0),a}function getDevice(e={}){return deviceCached||(deviceCached=calcDevice(e)),deviceCached}function calcBrowser(){const e=getWindow(),t=getDevice();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map(e=>Number(e));s=e<16||16===e&&i<2}}const r=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),a=i();return{isSafari:s||a,needPerspectiveFix:s,need3dFix:a||r&&t.ios,isWebView:r}}function getBrowser(){return browser||(browser=calcBrowser()),browser}function Resize({swiper:e,on:t,emit:s}){const i=getWindow();let r=null,a=null;const n=()=>{e&&!e.destroyed&&e.initialized&&(s("beforeResize"),s("resize"))},l=()=>{e&&!e.destroyed&&e.initialized&&s("orientationchange")};t("init",()=>{e.params.resizeObserver&&void 0!==i.ResizeObserver?e&&!e.destroyed&&e.initialized&&(r=new ResizeObserver(t=>{a=i.requestAnimationFrame(()=>{const{width:s,height:i}=e;let r=s,a=i;t.forEach(({contentBoxSize:t,contentRect:s,target:i})=>{i&&i!==e.el||(r=s?s.width:(t[0]||t).inlineSize,a=s?s.height:(t[0]||t).blockSize)}),r===s&&a===i||n()})}),r.observe(e.el)):(i.addEventListener("resize",n),i.addEventListener("orientationchange",l))}),t("destroy",()=>{a&&i.cancelAnimationFrame(a),r&&r.unobserve&&e.el&&(r.unobserve(e.el),r=null),i.removeEventListener("resize",n),i.removeEventListener("orientationchange",l)})}function Observer({swiper:e,extendParams:t,on:s,emit:i}){const r=[],a=getWindow(),n=(t,s={})=>{const n=new(a.MutationObserver||a.WebkitMutationObserver)(t=>{if(e.__preventObserver__)return;if(1===t.length)return void i("observerUpdate",t[0]);const s=function(){i("observerUpdate",t[0])};a.requestAnimationFrame?a.requestAnimationFrame(s):a.setTimeout(s,0)});n.observe(t,{attributes:void 0===s.attributes||s.attributes,childList:e.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),r.push(n)};t({observer:!1,observeParents:!1,observeSlideChildren:!1}),s("init",()=>{if(e.params.observer){if(e.params.observeParents){const t=elementParents(e.hostEl);for(let e=0;e{r.forEach(e=>{e.disconnect()}),r.splice(0,r.length)})}var eventsEmitter={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach(e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)}),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(...s){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy,t.apply(i,s)}return r.__emitterProxy=t,i.on(e,r,s)},onAny(e,t){const s=this;if(!s.eventsListeners||s.destroyed)return s;if("function"!=typeof e)return s;const i=t?"unshift":"push";return s.eventsAnyListeners.indexOf(e)<0&&s.eventsAnyListeners[i](e),s},offAny(e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsAnyListeners)return t;const s=t.eventsAnyListeners.indexOf(e);return s>=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach(e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)})}),s):s},emit(...e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsListeners)return t;let s,i,r;"string"==typeof e[0]||Array.isArray(e[0])?(s=e[0],i=e.slice(1,e.length),r=t):(s=e[0].events,i=e[0].data,r=e[0].context||t),i.unshift(r);return(Array.isArray(s)?s:s.split(" ")).forEach(e=>{t.eventsAnyListeners&&t.eventsAnyListeners.length&&t.eventsAnyListeners.forEach(t=>{t.apply(r,[e,...i])}),t.eventsListeners&&t.eventsListeners[e]&&t.eventsListeners[e].forEach(e=>{e.apply(r,i)})}),t}};function updateSize(){const e=this;let t,s;const i=e.el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:i.clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:i.clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(elementStyle(i,"padding-left")||0,10)-parseInt(elementStyle(i,"padding-right")||0,10),s=s-parseInt(elementStyle(i,"padding-top")||0,10)-parseInt(elementStyle(i,"padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(s)&&(s=0),Object.assign(e,{width:t,height:s,size:e.isHorizontal()?t:s}))}function updateSlides(){const e=this;function t(t,s){return parseFloat(t.getPropertyValue(e.getDirectionLabel(s))||0)}const s=e.params,{wrapperEl:i,slidesEl:r,rtlTranslate:a,wrongRTL:n}=e,l=e.virtual&&s.virtual.enabled,o=l?e.virtual.slides.length:e.slides.length,d=elementChildren(r,`.${e.params.slideClass}, swiper-slide`),c=l?e.virtual.slides.length:d.length;let p=[];const u=[],h=[];let m=s.slidesOffsetBefore;"function"==typeof m&&(m=s.slidesOffsetBefore.call(e));let f=s.slidesOffsetAfter;"function"==typeof f&&(f=s.slidesOffsetAfter.call(e));const g=e.snapGrid.length,v=e.slidesGrid.length,w=e.size-m-f;let S=s.spaceBetween,T=-m,b=0,x=0;if(void 0===w)return;"string"==typeof S&&S.indexOf("%")>=0?S=parseFloat(S.replace("%",""))/100*w:"string"==typeof S&&(S=parseFloat(S)),e.virtualSize=-S-m-f,d.forEach(e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""}),s.centeredSlides&&s.cssMode&&(setCSSProperty(i,"--swiper-centered-offset-before",""),setCSSProperty(i,"--swiper-centered-offset-after","")),s.cssMode&&(setCSSProperty(i,"--swiper-slides-offset-before",`${m}px`),setCSSProperty(i,"--swiper-slides-offset-after",`${f}px`));const y=s.grid&&s.grid.rows>1&&e.grid;let E;y?e.grid.initSlides(d):e.grid&&e.grid.unsetSlides();const C="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter(e=>void 0!==s.breakpoints[e].slidesPerView).length>0;for(let i=0;i=0&&(t+=h[s]+(s1&&(i||p.push(e.virtualSize-w))}if(l&&s.loop){const t=h[0]+S;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==d.length-1).forEach(e=>{e.style[t]=`${S}px`})}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;h.forEach(t=>{e+=t+(S||0)}),e-=S;const t=e>w?e-w:0;p=p.map(e=>e<=0?-m:e>t?t+f:e)}if(s.centerInsufficientSlides){let e=0;if(h.forEach(t=>{e+=t+(S||0)}),e-=S,e{p[s]=e-t}),u.forEach((e,s)=>{u[s]=e+t})}}if(Object.assign(e,{slides:d,snapGrid:p,slidesGrid:u,slidesSizesGrid:h}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){setCSSProperty(i,"--swiper-centered-offset-before",-p[0]+"px"),setCSSProperty(i,"--swiper-centered-offset-after",e.size/2-h[h.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map(e=>e+t),e.slidesGrid=e.slidesGrid.map(e=>e+s)}if(c!==o&&e.emit("slidesLengthChange"),p.length!==g&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),u.length!==v&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(l||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);c<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}}function updateAutoHeight(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,a=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach(e=>{s.push(e)});else for(r=0;rt.slides.length&&!i)break;s.push(n(e))}else s.push(n(t.activeIndex));for(r=0;ra?e:a}(a||0===a)&&(t.wrapperEl.style.height=`${a}px`)}function updateSlidesOffset(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};function updateSlidesProgress(e=this&&this.translate||0){const t=this,s=t.params,{slides:i,rtlTranslate:r,snapGrid:a}=t;if(0===i.length)return;void 0===i[0].swiperSlideOffset&&t.updateSlidesOffset();let n=-e;r&&(n=e),t.visibleSlidesIndexes=[],t.visibleSlides=[];let l=s.spaceBetween;"string"==typeof l&&l.indexOf("%")>=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],f=u>=0&&u1&&h<=t.size||u<=0&&h>=t.size;f&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e)),toggleSlideClasses$1(o,f,s.slideVisibleClass),toggleSlideClasses$1(o,m,s.slideFullyVisibleClass),o.progress=r?-c:c,o.originalProgress=r?-p:p}}function updateProgress(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:a,isEnd:n,progressLoop:l}=t;const o=a,d=n;if(0===i)r=0,a=!0,n=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;a=s||r<=0,n=l||r>=1,s&&(r=0),l&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],a=t.slidesGrid[i],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=r?(o-r)/n:(o+n-a)/n,l>1&&(l-=1)}Object.assign(t,{progress:r,progressLoop:l,isBeginning:a,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),a&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!a||d&&!n)&&t.emit("fromEdge"),t.emit("progress",r)}const toggleSlideClasses=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};function updateSlidesClasses(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,a=e.virtual&&s.virtual.enabled,n=e.grid&&s.grid&&s.grid.rows>1,l=e=>elementChildren(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,c;if(a)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${r}"]`);else n?(o=t.find(e=>e.column===r),c=t.find(e=>e.column===r+1),d=t.find(e=>e.column===r-1)):o=t[r];o&&(n||(c=elementNextAll(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),d=elementPrevAll(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach(e=>{toggleSlideClasses(e,e===o,s.slideActiveClass),toggleSlideClasses(e,e===c,s.slideNextClass),toggleSlideClasses(e,e===d,s.slidePrevClass)}),e.emitSlidesClasses()}const processLazyPreloader=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame(()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&!t.lazyPreloaderManaged&&t.remove())})),t&&!t.lazyPreloaderManaged&&t.remove()}},unlazy=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},preload=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,a=[s-t];return a.push(...Array.from({length:t}).map((e,t)=>s+i+t)),void e.slides.forEach((t,s)=>{a.includes(t.column)&&unlazy(e,s)})}const a=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=a+t;i+=1){const t=(i%s+s)%s;(ta)&&unlazy(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(a+t,s-1);i+=1)i!==r&&(i>a||i=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}function updateActiveIndex(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:a,realIndex:n,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=getActiveIndexByTranslate(t)),i.indexOf(s)>=0)o=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/r.slidesPerGroup)}if(o>=i.length&&(o=i.length-1),d===a&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===a&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled)u=r.loop?c(d):d;else if(p){const e=t.slides.find(e=>e.column===d);let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:u,previousIndex:a,activeIndex:d}),t.initialized&&preload(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==u&&t.emit("realIndexChange"),t.emit("slideChange"))}function updateClickedSlide(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach(e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)});let a,n=!1;if(r)for(let e=0;eo?o:i&&ea?"next":r=o.length&&(g=o.length-1);const v=-o[g];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(a.initialized&&n!==p){if(!a.allowSlideNext&&(u?v>a.translate&&v>a.minTranslate():va.translate&&v>a.maxTranslate()&&(p||0)!==n)return!1}let w;n!==(c||0)&&s&&a.emit("beforeSlideChangeStart"),a.updateProgress(v),w=n>p?"next":n0?(a._cssModeVirtualInitialSet=!0,requestAnimationFrame(()=>{h[e?"scrollLeft":"scrollTop"]=s})):h[e?"scrollLeft":"scrollTop"]=s,S&&requestAnimationFrame(()=>{a.wrapperEl.style.scrollSnapType="",a._immediateVirtual=!1});else{if(!a.support.smoothScroll)return animateCSSModeScroll({swiper:a,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}const T=getBrowser().isSafari;return S&&!r&&T&&a.isElement&&a.virtual.update(!1,!1,n),a.setTransition(t),a.setTranslate(v),a.updateActiveIndex(n),a.updateSlidesClasses(),a.emit("beforeTransitionStart",t,i),a.transitionStart(s,w),0===t?a.transitionEnd(s,w):a.animating||(a.animating=!0,a.onSlideToWrapperTransitionEnd||(a.onSlideToWrapperTransitionEnd=function(e){a&&!a.destroyed&&e.target===this&&(a.wrapperEl.removeEventListener("transitionend",a.onSlideToWrapperTransitionEnd),a.onSlideToWrapperTransitionEnd=null,delete a.onSlideToWrapperTransitionEnd,a.transitionEnd(s,w))}),a.wrapperEl.addEventListener("transitionend",a.onSlideToWrapperTransitionEnd)),!0}function slideToLoop(e=0,t,s=!0,i){if("string"==typeof e){e=parseInt(e,10)}const r=this;if(r.destroyed)return;void 0===t&&(t=r.params.speed);const a=r.grid&&r.params.grid&&r.params.grid.rows>1;let n=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)n+=r.virtual.slidesBefore;else{let e;if(a){const t=n*r.params.grid.rows;e=r.slides.find(e=>1*e.getAttribute("data-swiper-slide-index")===t).column}else e=r.getSlideIndexByData(n);const t=a?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s,slidesOffsetBefore:l,slidesOffsetAfter:o}=r.params,d=s||!!l||!!o;let c=r.params.slidesPerView;"auto"===c?c=r.slidesPerViewDynamic():(c=Math.ceil(parseFloat(r.params.slidesPerView,10)),d&&c%2==0&&(c+=1));let p=t-e1*t.getAttribute("data-swiper-slide-index")===e).column}else n=r.getSlideIndexByData(n)}return requestAnimationFrame(()=>{r.slideTo(n,t,s,i)}),r}function slideNext(e,t=!0,s){const i=this,{enabled:r,params:a,animating:n}=i;if(!r||i.destroyed)return i;void 0===e&&(e=i.params.speed);let l=a.slidesPerGroup;"auto"===a.slidesPerView&&1===a.slidesPerGroup&&a.slidesPerGroupAuto&&(l=Math.max(i.slidesPerViewDynamic("current",!0),1));const o=i.activeIndex{i.slideTo(i.activeIndex+o,e,t,s)}),!0}return a.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+o,e,t,s)}function slidePrev(e,t=!0,s){const i=this,{params:r,snapGrid:a,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=i;if(!o||i.destroyed)return i;void 0===e&&(e=i.params.speed);const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?i.translate:-i.translate),h=a.map(e=>p(e)),m=r.freeMode&&r.freeMode.enabled;let f=a[h.indexOf(u)-1];if(void 0===f&&(r.cssMode||m)){let e;a.forEach((t,s)=>{u>=t&&(e=s)}),void 0!==e&&(f=m?a[e]:a[e>0?e-1:e])}let g=0;if(void 0!==f&&(g=n.indexOf(f),g<0&&(g=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(g=g-i.slidesPerViewDynamic("previous",!0)+1,g=Math.max(g,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame(()=>{i.slideTo(g,e,t,s)}),!0):i.slideTo(g,e,t,s)}function slideReset(e,t=!0,s){const i=this;if(!i.destroyed)return void 0===e&&(e=i.params.speed),i.slideTo(i.activeIndex,e,t,s)}function slideToClosest(e,t=!0,s,i=.5){const r=this;if(r.destroyed)return;void 0===e&&(e=r.params.speed);let a=r.activeIndex;const n=Math.min(r.params.slidesPerGroupSkip,a),l=n+Math.floor((a-n)/r.params.slidesPerGroup),o=r.rtlTranslate?r.translate:-r.translate;if(o>=r.snapGrid[l]){const e=r.snapGrid[l];o-e>(r.snapGrid[l+1]-e)*i&&(a+=r.params.slidesPerGroup)}else{const e=r.snapGrid[l-1];o-e<=(r.snapGrid[l]-e)*i&&(a-=r.params.slidesPerGroup)}return a=Math.max(a,0),a=Math.min(a,r.slidesGrid.length-1),r.slideTo(a,e,t,s)}function slideToClickedSlide(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,a=e.getSlideIndexWhenGrid(e.clickedIndex);const n=e.isElement?"swiper-slide":`.${t.slideClass}`,l=e.grid&&e.params.grid&&e.params.grid.rows>1;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?e.slideToLoop(r):a>(l?(e.slides.length-i)/2-(e.params.grid.rows-1):e.slides.length-i)?(e.loopFix(),a=e.getSlideIndex(elementChildren(s,`${n}[data-swiper-slide-index="${r}"]`)[0]),nextTick(()=>{e.slideTo(a)})):e.slideTo(a)}else e.slideTo(a)}var slide={slideTo:slideTo,slideToLoop:slideToLoop,slideNext:slideNext,slidePrev:slidePrev,slideReset:slideReset,slideToClosest:slideToClosest,slideToClickedSlide:slideToClickedSlide};function loopCreate(e,t){const s=this,{params:i,slidesEl:r}=s;if(!i.loop||s.virtual&&s.params.virtual.enabled)return;const a=()=>{elementChildren(r,`.${i.slideClass}, swiper-slide`).forEach((e,t)=>{e.setAttribute("data-swiper-slide-index",t)})},n=s.grid&&i.grid&&i.grid.rows>1;i.loopAddBlankSlides&&(i.slidesPerGroup>1||n)&&(()=>{const e=elementChildren(r,`.${i.slideBlankClass}`);e.forEach(e=>{e.remove()}),e.length>0&&(s.recalcSlides(),s.updateSlides())})();const l=i.slidesPerGroup*(n?i.grid.rows:1),o=s.slides.length%l!==0,d=n&&s.slides.length%i.grid.rows!==0,c=e=>{for(let t=0;t1;d.lengthe.classList.contains(h.slideActiveClass))):M=r;const k="next"===s||!s,I="prev"===s||!s;let L=0,z=0;const O=(x?d[r].column:r)+(w&&void 0===i?-S/2+.5:0);if(O=0;t-=1)d[t].column===e&&y.push(t)}else y.push(C-t-1)}}else if(O+S>C-b){z=Math.max(O-(C-2*b),T),P&&(z=Math.max(z,S-C+v+1));for(let e=0;e{e.column===t&&E.push(s)}):E.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame(()=>{o.__preventObserver__=!1}),"cards"===o.params.effect&&d.length{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1}),k&&E.forEach(e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1}),o.recalcSlides(),"auto"===h.slidesPerView?o.updateSlides():x&&(y.length>0&&I||E.length>0&&k)&&o.slides.forEach((e,t)=>{o.grid.updateSlide(t,e,o.slides)}),h.watchSlidesProgress&&o.updateSlidesOffset(),t)if(y.length>0&&I){if(void 0===e){const e=o.slidesGrid[M],t=o.slidesGrid[M+L]-e;l?o.setTranslate(o.translate-t):(o.slideTo(M+Math.ceil(L),0,!1,!0),i&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(i){const e=x?y.length/h.grid.rows:y.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(E.length>0&&k)if(void 0===e){const e=o.slidesGrid[M],t=o.slidesGrid[M-z]-e;l?o.setTranslate(o.translate-t):(o.slideTo(M-z,0,!1,!0),i&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=x?E.length/h.grid.rows:E.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=c,o.allowSlideNext=p,o.controller&&o.controller.control&&!n){const a={slideRealIndex:e,direction:s,setTranslate:i,activeSlideIndex:r,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach(e=>{!e.destroyed&&e.params.loop&&e.loopFix({...a,slideTo:e.params.slidesPerView===h.slidesPerView&&t})}):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...a,slideTo:o.controller.control.params.slidesPerView===h.slidesPerView&&t})}o.emit("loopFix")}function loopDestroy(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||!s||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach(e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e}),e.slides.forEach(e=>{e.removeAttribute("data-swiper-slide-index")}),i.forEach(e=>{s.append(e)}),e.recalcSlides(),e.slideTo(e.realIndex,0)}var loop={loopCreate:loopCreate,loopFix:loopFix,loopDestroy:loopDestroy};function setGrabCursor(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame(()=>{t.__preventObserver__=!1})}function unsetGrabCursor(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame(()=>{e.__preventObserver__=!1}))}var grabCursor={setGrabCursor:setGrabCursor,unsetGrabCursor:unsetGrabCursor};function closestElement(e,t=this){return function t(s){if(!s||s===getDocument()||s===getWindow())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}function preventEdgeSwipe(e,t,s){const i=getWindow(),{params:r}=e,a=r.edgeSwipeDetection,n=r.edgeSwipeThreshold;return!a||!(s<=n||s>=i.innerWidth-n)||"prevent"===a&&(t.preventDefault(),!0)}function onTouchStart(e){const t=this,s=getDocument();let i=e;i.originalEvent&&(i=i.originalEvent);const r=t.touchEventsData;if("pointerdown"===i.type){if(null!==r.pointerId&&r.pointerId!==i.pointerId)return;r.pointerId=i.pointerId}else"touchstart"===i.type&&1===i.targetTouches.length&&(r.touchId=i.targetTouches[0].identifier);if("touchstart"===i.type)return void preventEdgeSwipe(t,i,i.targetTouches[0].pageX);const{params:a,touches:n,enabled:l}=t;if(!l)return;if(!a.simulateTouch&&"mouse"===i.pointerType)return;if(t.animating&&a.preventInteractionOnTransition)return;!t.animating&&a.cssMode&&a.loop&&t.loopFix();let o=i.target;if("wrapper"===a.touchEventsTarget&&!elementIsChildOf(o,t.wrapperEl))return;if("which"in i&&3===i.which)return;if("button"in i&&i.button>0)return;if(r.isTouched&&r.isMoved)return;const d=!!a.noSwipingClass&&""!==a.noSwipingClass,c=i.composedPath?i.composedPath():i.path;d&&i.target&&i.target.shadowRoot&&c&&(o=c[0]);const p=a.noSwipingSelector?a.noSwipingSelector:`.${a.noSwipingClass}`,u=!(!i.target||!i.target.shadowRoot);if(a.noSwiping&&(u?closestElement(p,o):o.closest(p)))return void(t.allowClick=!0);if(a.swipeHandler&&!o.closest(a.swipeHandler))return;n.currentX=i.pageX,n.currentY=i.pageY;const h=n.currentX,m=n.currentY;if(!preventEdgeSwipe(t,i,h))return;Object.assign(r,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),n.startX=h,n.startY=m,r.touchStartTime=now(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,a.threshold>0&&(r.allowThresholdMove=!1);let f=!0;o.matches(r.focusableElements)&&(f=!1,"SELECT"===o.nodeName&&(r.isTouched=!1)),s.activeElement&&s.activeElement.matches(r.focusableElements)&&s.activeElement!==o&&("mouse"===i.pointerType||"mouse"!==i.pointerType&&!o.matches(r.focusableElements))&&s.activeElement.blur();const g=f&&t.allowTouchMove&&a.touchStartPreventDefault;!a.touchStartForcePreventDefault&&!g||o.isContentEditable||i.preventDefault(),a.freeMode&&a.freeMode.enabled&&t.freeMode&&t.animating&&!a.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",i)}function onTouchMove(e){const t=getDocument(),s=this,i=s.touchEventsData,{params:r,touches:a,rtlTranslate:n,enabled:l}=s;if(!l)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let o,d=e;if(d.originalEvent&&(d=d.originalEvent),"pointermove"===d.type){if(null!==i.touchId)return;if(d.pointerId!==i.pointerId)return}if("touchmove"===d.type){if(o=[...d.changedTouches].find(e=>e.identifier===i.touchId),!o||o.identifier!==i.touchId)return}else o=d;if(!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",d));const c=o.pageX,p=o.pageY;if(d.preventedByNestedSwiper)return a.startX=c,void(a.startY=p);if(!s.allowTouchMove)return d.target.matches(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(a,{startX:c,startY:p,currentX:c,currentY:p}),i.touchStartTime=now()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(pa.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else{if(n&&(c>a.startX&&-s.translate<=s.maxTranslate()||c=s.minTranslate()))return;if(!n&&(ca.startX&&s.translate>=s.minTranslate()))return}if(t.activeElement&&t.activeElement.matches(i.focusableElements)&&t.activeElement!==d.target&&"mouse"!==d.pointerType&&t.activeElement.blur(),t.activeElement&&d.target===t.activeElement&&d.target.matches(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);i.allowTouchCallbacks&&s.emit("touchMove",d),a.previousX=a.currentX,a.previousY=a.currentY,a.currentX=c,a.currentY=p;const u=a.currentX-a.startX,h=a.currentY-a.startY;if(s.params.threshold&&Math.sqrt(u**2+h**2)=25&&(e=180*Math.atan2(Math.abs(h),Math.abs(u))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",d),void 0===i.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(i.startMoving=!0)),i.isScrolling||"touchmove"===d.type&&i.preventTouchMoveFromPointerMove)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&d.cancelable&&d.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&d.stopPropagation();let m=s.isHorizontal()?u:h,f=s.isHorizontal()?a.currentX-a.previousX:a.currentY-a.previousY;r.oneWayMovement&&(m=Math.abs(m)*(n?1:-1),f=Math.abs(f)*(n?1:-1)),a.diff=m,m*=r.touchRatio,n&&(m=-m,f=-f);const g=s.touchesDirection;s.swipeDirection=m>0?"prev":"next",s.touchesDirection=f>0?"prev":"next";const v=s.params.loop&&!r.cssMode,w="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!i.isMoved){if(v&&w&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",d)}if((new Date).getTime(),!1!==r._loopSwapReset&&i.isMoved&&i.allowThresholdMove&&g!==s.touchesDirection&&v&&w&&Math.abs(m)>=1)return Object.assign(a,{startX:c,startY:p,currentX:c,currentY:p,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,void(i.startTranslate=i.currentTranslate);s.emit("sliderMove",d),i.isMoved=!0,i.currentTranslate=m+i.startTranslate;let S=!0,T=r.resistanceRatio;if(r.touchReleaseOnEdges&&(T=0),m>0?(v&&w&&i.allowThresholdMove&&i.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]-("auto"!==r.slidesPerView&&s.slides.length-r.slidesPerView>=2?s.slidesSizesGrid[s.activeIndex+1]+s.params.spaceBetween:0)-s.params.spaceBetween:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(S=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+m)**T))):m<0&&(v&&w&&i.allowThresholdMove&&i.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]+s.params.spaceBetween+("auto"!==r.slidesPerView&&s.slides.length-r.slidesPerView>=2?s.slidesSizesGrid[s.slidesSizesGrid.length-1]+s.params.spaceBetween:0):s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(m)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,i.currentTranslate=i.startTranslate,void(a.diff=s.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function onTouchEnd(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].find(e=>e.identifier===s.touchId),!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:a,touches:n,rtlTranslate:l,slidesGrid:o,enabled:d}=t;if(!d)return;if(!a.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&a.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);a.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const c=now(),p=c-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),p<300&&c-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=now(),nextTick(()=>{t.destroyed||(t.allowClick=!0)}),!s.isTouched||!s.isMoved||!t.swipeDirection||0===n.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let u;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,u=a.followFinger?l?t.translate:-t.translate:-s.currentTranslate,a.cssMode)return;if(a.freeMode&&a.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:u});const h=u>=-t.maxTranslate()&&!t.params.loop;let m=0,f=t.slidesSizesGrid[0];for(let e=0;e=o[e]&&u=o[e])&&(m=e,f=o[o.length-1]-o[o.length-2])}let g=null,v=null;a.rewind&&(t.isBeginning?v=a.virtual&&a.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(g=0));const w=(u-o[m])/f,S=ma.longSwipesMs){if(!a.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(w>=a.longSwipesRatio?t.slideTo(a.rewind&&t.isEnd?g:m+S):t.slideTo(m)),"prev"===t.swipeDirection&&(w>1-a.longSwipesRatio?t.slideTo(m+S):null!==v&&w<0&&Math.abs(w)>a.longSwipesRatio?t.slideTo(v):t.slideTo(m))}else{if(!a.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(m+S):t.slideTo(m):("next"===t.swipeDirection&&t.slideTo(null!==g?g:m+S),"prev"===t.swipeDirection&&t.slideTo(null!==v?v:m))}}function onResize(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:a}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout(()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()},500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&a!==e.snapGrid&&e.checkOverflow()}function onClick(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function onScroll(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const a=e.maxTranslate()-e.minTranslate();r=0===a?0:(e.translate-e.minTranslate())/a,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function onLoad(e){const t=this;processLazyPreloader(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function onDocumentTouchStart(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const events=(e,t)=>{const s=getDocument(),{params:i,el:r,wrapperEl:a,device:n}=e,l=!!i.nested,o="on"===t?"addEventListener":"removeEventListener",d=t;r&&"string"!=typeof r&&(s[o]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),r[o]("touchstart",e.onTouchStart,{passive:!1}),r[o]("pointerdown",e.onTouchStart,{passive:!1}),s[o]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[o]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[o]("touchend",e.onTouchEnd,{passive:!0}),s[o]("pointerup",e.onTouchEnd,{passive:!0}),s[o]("pointercancel",e.onTouchEnd,{passive:!0}),s[o]("touchcancel",e.onTouchEnd,{passive:!0}),s[o]("pointerout",e.onTouchEnd,{passive:!0}),s[o]("pointerleave",e.onTouchEnd,{passive:!0}),s[o]("contextmenu",e.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&r[o]("click",e.onClick,!0),i.cssMode&&a[o]("scroll",e.onScroll),i.updateOnWindowResize?e[d](n.ios||n.android?"resize orientationchange observerUpdate":"resize observerUpdate",onResize,!0):e[d]("observerUpdate",onResize,!0),r[o]("load",e.onLoad,{capture:!0}))};function attachEvents(){const e=this,{params:t}=e;e.onTouchStart=onTouchStart.bind(e),e.onTouchMove=onTouchMove.bind(e),e.onTouchEnd=onTouchEnd.bind(e),e.onDocumentTouchStart=onDocumentTouchStart.bind(e),t.cssMode&&(e.onScroll=onScroll.bind(e)),e.onClick=onClick.bind(e),e.onLoad=onLoad.bind(e),events(e,"on")}function detachEvents(){events(this,"off")}var events$1={attachEvents:attachEvents,detachEvents:detachEvents};const isGridEnabled=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;function setBreakpoint(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,a=i.breakpoints;if(!a||a&&0===Object.keys(a).length)return;const n=getDocument(),l="window"!==i.breakpointsBase&&i.breakpointsBase?"container":i.breakpointsBase,o=["window","container"].includes(i.breakpointsBase)||!i.breakpointsBase?e.el:n.querySelector(i.breakpointsBase),d=e.getBreakpoint(a,l,o);if(!d||e.currentBreakpoint===d)return;const c=(d in a?a[d]:void 0)||e.originalParams,p=isGridEnabled(e,i),u=isGridEnabled(e,c),h=e.params.grabCursor,m=c.grabCursor,f=i.enabled;p&&!u?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!p&&u&&(r.classList.add(`${i.containerModifierClass}grid`),(c.grid.fill&&"column"===c.grid.fill||!c.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),h&&!m?e.unsetGrabCursor():!h&&m&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach(t=>{if(void 0===c[t])return;const s=i[t]&&i[t].enabled,r=c[t]&&c[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()});const g=c.direction&&c.direction!==i.direction,v=i.loop&&(c.slidesPerView!==i.slidesPerView||g),w=i.loop;g&&s&&e.changeDirection(),extend(e.params,c);const S=e.params.enabled,T=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),f&&!S?e.disable():!f&&S&&e.enable(),e.currentBreakpoint=d,e.emit("_beforeBreakpoint",c),s&&(v?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!w&&T?(e.loopCreate(t),e.updateSlides()):w&&!T&&e.loopDestroy()),e.emit("breakpoint",c)}function getBreakpoint(e,t="window",s){if(!e||"container"===t&&!s)return;let i=!1;const r=getWindow(),a="window"===t?r.innerHeight:s.clientHeight,n=Object.keys(e).map(e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:a*t,point:e}}return{value:e,point:e}});n.sort((e,t)=>parseInt(e.value,10)-parseInt(t.value,10));for(let e=0;e{"object"==typeof e?Object.keys(e).forEach(i=>{e[i]&&s.push(t+i)}):"string"==typeof e&&s.push(t+e)}),s}function addClasses(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:a}=e,n=prepareClasses(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:a.android},{ios:a.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),r.classList.add(...t),e.emitContainerClasses()}function removeClasses(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}var classes={addClasses:addClasses,removeClasses:removeClasses};function checkOverflow(){const e=this,{isLocked:t,params:s}=e,{slidesOffsetBefore:i}=s;if(i){const t=e.slides.length-1,s=e.slidesGrid[t]+e.slidesSizesGrid[t]+2*i;e.isLocked=e.size>s}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}var checkOverflow$1={checkOverflow:checkOverflow},defaults={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,snapToSlideEdge:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function moduleExtendParams(e,t){return function(s={}){const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),extend(t,s)):extend(t,s)):extend(t,s)}}const prototypes={eventsEmitter:eventsEmitter,update:update,translate:translate,transition:transition,slide:slide,loop:loop,grabCursor:grabCursor,events:events$1,breakpoints:breakpoints,checkOverflow:checkOverflow$1,classes:classes},extendedDefaults={};class Swiper{constructor(...e){let t,s;1===e.length&&e[0].constructor&&"Object"===Object.prototype.toString.call(e[0]).slice(8,-1)?s=e[0]:[t,s]=e,s||(s={}),s=extend({},s),t&&!s.el&&(s.el=t);const i=getDocument();if(s.el&&"string"==typeof s.el&&i.querySelectorAll(s.el).length>1){const e=[];return i.querySelectorAll(s.el).forEach(t=>{const i=extend({},s,{el:t});e.push(new Swiper(i))}),e}const r=this;r.__swiper__=!0,r.support=getSupport(),r.device=getDevice({userAgent:s.userAgent}),r.browser=getBrowser(),r.eventsListeners={},r.eventsAnyListeners=[],r.modules=[...r.__modules__],s.modules&&Array.isArray(s.modules)&&s.modules.forEach(e=>{"function"==typeof e&&r.modules.indexOf(e)<0&&r.modules.push(e)});const a={};r.modules.forEach(e=>{e({params:s,swiper:r,extendParams:moduleExtendParams(s,a),on:r.on.bind(r),once:r.once.bind(r),off:r.off.bind(r),emit:r.emit.bind(r)})});const n=extend({},defaults,a);return r.params=extend({},n,extendedDefaults,s),r.originalParams=extend({},r.params),r.passedParams=extend({},s),r.params&&r.params.on&&Object.keys(r.params.on).forEach(e=>{r.on(e,r.params.on[e])}),r.params&&r.params.onAny&&r.onAny(r.params.onAny),Object.assign(r,{enabled:r.params.enabled,el:t,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===r.params.direction,isVertical:()=>"vertical"===r.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:r.params.allowSlideNext,allowSlidePrev:r.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:r.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:r.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),r.emit("_swiper"),r.params.init&&r.init(),r}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=elementChildren(t,`.${s.slideClass}, swiper-slide`),r=elementIndex(i[0]);return elementIndex(e)-r}getSlideIndexByData(e){return this.getSlideIndex(this.slides.find(t=>1*t.getAttribute("data-swiper-slide-index")===e))}getSlideIndexWhenGrid(e){return this.grid&&this.params.grid&&this.params.grid.rows>1&&("column"===this.params.grid.fill?e=Math.floor(e/this.params.grid.rows):"row"===this.params.grid.fill&&(e%=Math.ceil(this.slides.length/this.params.grid.rows))),e}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=elementChildren(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter(t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter(e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass)).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach(s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)}),e.emit("_slideClasses",t)}slidesPerViewDynamic(e="current",t=!1){const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:a,size:n,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[l]?Math.ceil(i[l].swiperSlideSize):0;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){r[l]-r[e]{t.complete&&processLazyPreloader(e,t)}),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t=!0){const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach(t=>{"vertical"===e?t.style.width="":t.style.height=""}),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return elementChildren(s,i())[0]})();return!r&&t.params.createElements&&(r=createElement("div",t.params.wrapperClass),s.append(r),elementChildren(s,`.${t.params.slideClass}`).forEach(e=>{r.append(e)})),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===elementStyle(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===elementStyle(s,"direction")),wrongRTL:"-webkit-box"===elementStyle(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(void 0,!0),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach(e=>{e.complete?processLazyPreloader(t,e):e.addEventListener("load",e=>{processLazyPreloader(t,e.target)})}),preload(t),t.initialized=!0,preload(t),t.emit("init"),t.emit("afterInit"),t}destroy(e=!0,t=!0){const s=this,{params:i,el:r,wrapperEl:a,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r&&"string"!=typeof r&&r.removeAttribute("style"),a&&a.removeAttribute("style"),n&&n.length&&n.forEach(e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")})),s.emit("destroy"),Object.keys(s.eventsListeners).forEach(e=>{s.off(e)}),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),deleteProps(s)),s.destroyed=!0),null}static extendDefaults(e){extend(extendedDefaults,e)}static get extendedDefaults(){return extendedDefaults}static get defaults(){return defaults}static installModule(e){Swiper.prototype.__modules__||(Swiper.prototype.__modules__=[]);const t=Swiper.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach(e=>Swiper.installModule(e)),Swiper):(Swiper.installModule(e),Swiper)}}Object.keys(prototypes).forEach(e=>{Object.keys(prototypes[e]).forEach(t=>{Swiper.prototype[t]=prototypes[e][t]})}),Swiper.use([Resize,Observer]);export{Swiper as S,defaults as d}; +//# sourceMappingURL=swiper-core.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/swiper-core.min.mjs.map b/vendor/javascript/swiper/shared/swiper-core.min.mjs.map new file mode 100644 index 0000000..5d6001a --- /dev/null +++ b/vendor/javascript/swiper/shared/swiper-core.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-core.mjs.mjs","names":["getWindow","getDocument","elementParents","elementStyle","elementChildren","setCSSProperty","elementOuterSize","elementNextAll","elementPrevAll","getTranslate","animateCSSModeScroll","nextTick","showWarning","createElement","elementIsChildOf","now","extend","elementIndex","deleteProps","support","deviceCached","browser","calcSupport","window","document","smoothScroll","documentElement","style","touch","DocumentTouch","getSupport","calcDevice","userAgent","platform","navigator","ua","device","ios","android","screenWidth","screen","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","indexOf","os","getDevice","overrides","calcBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","split","map","num","Number","isWebView","test","isSafariBrowser","need3dFix","getBrowser","Resize","swiper","on","emit","observer","animationFrame","resizeHandler","destroyed","initialized","orientationChangeHandler","params","resizeObserver","ResizeObserver","entries","requestAnimationFrame","newWidth","newHeight","forEach","contentBoxSize","contentRect","target","el","inlineSize","blockSize","observe","addEventListener","cancelAnimationFrame","unobserve","removeEventListener","Observer","extendParams","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","__preventObserver__","length","observerUpdate","setTimeout","attributes","childList","isElement","characterData","push","observeParents","observeSlideChildren","containerParents","hostEl","i","wrapperEl","disconnect","splice","eventsEmitter","events","handler","priority","self","this","eventsListeners","method","event","once","onceHandler","args","off","__emitterProxy","apply","onAny","eventsAnyListeners","offAny","index","eventHandler","data","context","Array","isArray","slice","unshift","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","Object","assign","size","updateSlides","getDirectionPropertyValue","node","label","parseFloat","getPropertyValue","getDirectionLabel","slidesEl","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","call","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","swiperSize","spaceBetween","slidePosition","prevSlideSize","replace","virtualSize","slideEl","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","unsetSlides","shouldResetSlideSize","slidesPerView","breakpoints","keys","filter","key","slide","updateSlide","slidesPerViewAutoSlideSize","roundLengths","Math","floor","slideStyles","getComputedStyle","currentTransform","transform","currentWebKitTransform","webkitTransform","paddingLeft","paddingRight","boxSizing","offsetWidth","swiperSlideSize","abs","slidesPerGroup","min","slidesPerGroupSkip","max","effect","setWrapperSize","updateWrapperSize","isFractionalSlidesPerView","shouldSnapToSlideEdge","snapToSlideEdge","loop","lastAllowedSnapIndex","minVisibleSlides","accumulatedSize","newSlidesGrid","slidesGridItem","groups","ceil","slidesBefore","slidesAfter","groupSize","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","classList","contains","maxBackfaceHiddenSlides","add","remove","updateAutoHeight","speed","activeSlides","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","activeIndex","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","toggleSlideClasses$1","condition","className","updateSlidesProgress","translate","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","progress","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","toggleSlideClasses","updateSlidesClasses","getFilteredSlide","selector","activeSlide","prevSlide","nextSlide","find","column","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","processLazyPreloader","imageEl","closest","lazyEl","querySelector","lazyPreloaderClass","shadowRoot","lazyPreloaderManaged","unlazy","removeAttribute","preload","amount","lazyPreloadPrevNext","len","slidesPerViewDynamic","activeColumn","preloadColumns","from","slideIndexLastInView","rewind","realIndex","getActiveIndexByTranslate","normalizeSlideIndex","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","skip","firstSlideInColumn","activeSlideIndex","getAttribute","runCallbacksOnInit","updateClickedSlide","path","pathEl","matches","slideFound","clickedSlide","undefined","clickedIndex","slideToClickedSlide","update","getSwiperTranslate","axis","virtualTranslate","currentTranslate","setTranslate","byController","x","y","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","targetPosition","side","scrollTo","behavior","onTranslateToWrapperTransitionEnd","e","duration","transitionDuration","transitionDelay","transitionEmit","direction","step","dir","transitionStart","transitionEnd","transition","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","t","scrollSnapType","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","bothDirections","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","isFreeMode","freeMode","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","getSlideIndexWhenGrid","slideSelector","isGrid","getSlideIndex","loopCreate","setAttribute","loopAddBlankSlides","slideBlankClass","recalcSlides","clearBlankSlides","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","append","byMousewheel","loopedSlides","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isInitialOverflow","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","c","constructor","loopDestroy","newSlidesOrder","swiperSlideIndex","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","assignedSlot","found","getRootNode","host","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","pointerType","targetEl","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","nodeName","activeElement","blur","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","PI","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","CustomEvent","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","Date","getTime","_loopSwapReset","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","clearTimeout","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","attachEvents","bind","detachEvents","events$1","isGridEnabled","breakpointsBase","breakpointContainer","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","prop","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","a","b","matchMedia","prepareClasses","prefix","resultClasses","item","classNames","addClasses","suffixes","autoheight","centered","removeClasses","classes","wasLocked","lastSlideRightEdge","checkOverflow$1","defaults","init","swiperElementNodeName","createElements","eventsPrefix","url","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","obj","moduleParamName","moduleParams","auto","prototypes","extendedDefaults","Swiper","prototype","toString","querySelectorAll","swipers","newParams","__swiper__","modules","__modules__","mod","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","current","cls","join","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","element","mounted","parentNode","toUpperCase","getWrapperSelector","trim","getWrapper","slideSlots","lazyElements","destroy","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/swiper-core.mjs b/vendor/javascript/swiper/shared/swiper-core.mjs new file mode 100644 index 0000000..994e2f8 --- /dev/null +++ b/vendor/javascript/swiper/shared/swiper-core.mjs @@ -0,0 +1,3922 @@ +import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs'; +import { d as elementParents, q as elementStyle, e as elementChildren, b as setCSSProperty, i as elementOuterSize, r as elementNextAll, t as elementPrevAll, l as getTranslate, u as animateCSSModeScroll, n as nextTick, v as showWarning, c as createElement, w as elementIsChildOf, h as now, x as extend, j as elementIndex, y as deleteProps } from './utils.mjs'; + +let support; +function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; +} +function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; +} + +let deviceCached; +function calcDevice({ + userAgent +} = {}) { + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad)(?!\1).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; +} +function getDevice(overrides = {}) { + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; +} + +let browser; +function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; +} +function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; +} + +function Resize({ + swiper, + on, + emit +}) { + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(({ + contentBoxSize, + contentRect, + target + }) => { + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); +} + +function Observer({ + swiper, + extendParams, + on, + emit +}) { + const observers = []; + const window = getWindow(); + const attach = (target, options = {}) => { + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); +} + +/* eslint-disable no-underscore-dangle */ + +var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler(...args) { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit(...args) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } +}; + +function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); +} + +function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + const swiperSize = swiper.size - offsetBefore - offsetAfter; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween - offsetBefore - offsetAfter; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + + // set cssMode offsets + if (params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-slides-offset-before', `${offsetBefore}px`); + setCSSProperty(wrapperEl, '--swiper-slides-offset-after', `${offsetAfter}px`); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + const slide = slides[i]; + if (slide) { + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + } + + if (isVirtual && params.slidesPerView === 'auto') { + if (params.virtual.slidesPerViewAutoSlideSize) { + slideSize = params.virtual.slidesPerViewAutoSlideSize; + } + if (slideSize && slide) { + if (params.roundLengths) slideSize = Math.floor(slideSize); + slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } else if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slide.style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slide) { + slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slide) { + slide.swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + // Check if snapToSlideEdge should be applied + const isFractionalSlidesPerView = params.slidesPerView !== 'auto' && params.slidesPerView % 1 !== 0; + const shouldSnapToSlideEdge = params.snapToSlideEdge && !params.loop && (params.slidesPerView === 'auto' || isFractionalSlidesPerView); + + // Calculate the last allowed snap index when snapToSlideEdge is enabled + // This ensures minimum slides are visible at the end + let lastAllowedSnapIndex = snapGrid.length; + if (shouldSnapToSlideEdge) { + let minVisibleSlides; + if (params.slidesPerView === 'auto') { + // For 'auto' mode, calculate how many slides fit based on actual sizes + minVisibleSlides = 1; + let accumulatedSize = 0; + for (let i = slidesSizesGrid.length - 1; i >= 0; i -= 1) { + accumulatedSize += slidesSizesGrid[i] + (i < slidesSizesGrid.length - 1 ? spaceBetween : 0); + if (accumulatedSize <= swiperSize) { + minVisibleSlides = slidesSizesGrid.length - i; + } else { + break; + } + } + } else { + minVisibleSlides = Math.floor(params.slidesPerView); + } + lastAllowedSnapIndex = Math.max(slidesLength - minVisibleSlides, 0); + } + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (shouldSnapToSlideEdge) { + // When snapToSlideEdge is enabled, only keep snaps up to lastAllowedSnapIndex + if (i <= lastAllowedSnapIndex) { + newSlidesGrid.push(slidesGridItem); + } + } else if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + // When snapToSlideEdge is disabled, keep snaps that fit within scrollable area + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + // Only add edge-aligned snap if snapToSlideEdge is not enabled + if (!shouldSnapToSlideEdge) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } +} + +function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; +} + +function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } +} + +const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } +}; +function updateSlidesProgress(translate = this && this.translate || 0) { + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } +} + +function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); +} + +const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } +}; +function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.find(slideEl => slideEl.column === activeIndex); + nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1); + prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1); + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); +} + +const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove(); + } + }); + } + } + // Skip removal if managed by React/Vue component + if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove(); + } +}; +const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); +}; +const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } +}; + +function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; +} +function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled) { + if (params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else { + realIndex = activeIndex; + } + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex); + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } +} + +function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } +} + +var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide +}; + +function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') { + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; +} + +function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); +} + +function minTranslate() { + return -this.snapGrid[0]; +} + +function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; +} + +function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) { + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; +} + +var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo +}; + +function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); +} + +function transitionEmit({ + swiper, + runCallbacks, + direction, + step +}) { + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + } else if (runCallbacks && activeIndex !== previousIndex) { + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } +} + +function transitionStart(runCallbacks = true, direction) { + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); +} + +function transitionEnd(runCallbacks = true, direction) { + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); +} + +var transition = { + setTransition, + transitionStart, + transitionEnd +}; + +function slideTo(index = 0, speed, runCallbacks = true, internal, initial) { + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // initial virtual + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + const isInitialVirtual = isVirtual && initial; + // Update Index + if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + const browser = getBrowser(); + const isSafari = browser.isSafari; + if (isVirtual && !initial && isSafari && swiper.isElement) { + swiper.virtual.update(false, false, slideIndex); + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; +} + +function slideToLoop(index = 0, speed, runCallbacks = true, internal) { + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides, + slidesOffsetBefore, + slidesOffsetAfter + } = swiper.params; + const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (bothDirections && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (bothDirections) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && bothDirections && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = bothDirections ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; +} + +/* eslint no-unused-vars: "off" */ +function slideNext(speed, runCallbacks = true, internal) { + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slidePrev(speed, runCallbacks = true, internal) { + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + const isFreeMode = params.freeMode && params.freeMode.enabled; + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideReset(speed, runCallbacks = true, internal) { + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideToClosest(speed, runCallbacks = true, internal, threshold = 0.5) { + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); +} + +function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.getSlideIndexWhenGrid(swiper.clickedIndex); + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + const isGrid = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + swiper.slideToLoop(realIndex); + } else if (slideToIndex > (isGrid ? (swiper.slides.length - slidesPerView) / 2 - (swiper.params.grid.rows - 1) : swiper.slides.length - slidesPerView)) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } +} + +var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide +}; + +function loopCreate(slideRealIndex, initial) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const clearBlankSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideBlankClass}`); + slides.forEach(el => { + el.remove(); + }); + if (slides.length > 0) { + swiper.recalcSlides(); + swiper.updateSlides(); + } + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (params.loopAddBlankSlides && (params.slidesPerGroup > 1 || gridEnabled)) { + clearBlankSlides(); + } + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + const bothDirections = params.centeredSlides || !!params.slidesOffsetBefore || !!params.slidesOffsetAfter; + swiper.loopFix({ + slideRealIndex, + direction: bothDirections ? undefined : 'next', + initial + }); +} + +function loopFix({ + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + initial, + byController, + byMousewheel +} = {}) { + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides, + slidesOffsetBefore, + slidesOffsetAfter, + initialSlide + } = params; + const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!bothDirections && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (bothDirections && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (bothDirections && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = bothDirections ? Math.max(slidesPerGroup, Math.ceil(slidesPerView / 2)) : slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !bothDirections; + let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass))); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (bothDirections && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + if (isInitialOverflow) { + slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1); + } + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) { + if (appendSlidesIndexes.includes(activeSlideIndex)) { + appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1); + } + if (prependSlidesIndexes.includes(activeSlideIndex)) { + prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1); + } + } + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); +} + +function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); +} + +var loop = { + loopCreate, + loopFix, + loopDestroy +}; + +function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } +} + +function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } +} + +var grabCursor = { + setGrabCursor, + unsetGrabCursor +}; + +// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd +function closestElement(selector, base = this) { + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); +} +function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; +} +function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); +} + +function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId); + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) { + return; + } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) { + return; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') { + document.activeElement.blur(); + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); +} + +function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId); + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } +} + +function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } +} + +function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } +} + +function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); +} + +function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); +} + +function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } +} + +const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); +}; +function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); +} +function detachEvents() { + const swiper = this; + events(swiper, 'off'); +} +var events$1 = { + attachEvents, + detachEvents +}; + +const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; +}; +function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + const document = getDocument(); + + // Get breakpoint for window/container width and update parameters + const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container'; + const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase); + const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); +} + +function getBreakpoint(breakpoints, base = 'window', containerEl) { + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; +} + +var breakpoints = { + setBreakpoint, + getBreakpoint +}; + +function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; +} +function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); +} + +function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); +} + +var classes = { + addClasses, + removeClasses +}; + +function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } +} +var checkOverflow$1 = { + checkOverflow +}; + +var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + snapToSlideEdge: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false +}; + +function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj = {}) { + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; +} + +/* eslint no-param-reassign: "off" */ +const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes +}; +const extendedDefaults = {}; +class Swiper { + constructor(...args) { + let el; + let params; + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + params.modules.forEach(mod => { + if (typeof mod === 'function' && swiper.modules.indexOf(mod) < 0) { + swiper.modules.push(mod); + } + }); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)); + } + getSlideIndexWhenGrid(index) { + if (this.grid && this.params.grid && this.params.grid.rows > 1) { + if (this.params.grid.fill === 'column') { + index = Math.floor(index / this.params.grid.rows); + } else if (this.params.grid.fill === 'row') { + index = index % Math.ceil(this.slides.length / this.params.grid.rows); + } + } + return index; + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view = 'current', exact = false) { + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate = true) { + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(undefined, true); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance = true, cleanStyles = true) { + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } +} +Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); +}); +Swiper.use([Resize, Observer]); + +export { Swiper as S, defaults as d }; diff --git a/vendor/javascript/swiper/shared/update-on-virtual-data.min.mjs b/vendor/javascript/swiper/shared/update-on-virtual-data.min.mjs new file mode 100644 index 0000000..291abfa --- /dev/null +++ b/vendor/javascript/swiper/shared/update-on-virtual-data.min.mjs @@ -0,0 +1,2 @@ +import{e as extend,p as paramsList,i as isObject,n as needsNavigation,a as needsPagination,b as needsScrollbar}from"./update-swiper.min.mjs";import{d as defaults}from"./swiper-core.min.mjs";function getParams(a={},e=!0){const s={on:{}},t={},n={};extend(s,defaults),s._emitClasses=!0,s.init=!1;const r={},i=paramsList.map(a=>a.replace(/_/,"")),l=Object.assign({},a);return Object.keys(l).forEach(l=>{void 0!==a[l]&&(i.indexOf(l)>=0?isObject(a[l])?(s[l]={},n[l]={},extend(s[l],a[l]),extend(n[l],a[l])):(s[l]=a[l],n[l]=a[l]):0===l.search(/on[A-Z]/)&&"function"==typeof a[l]?e?t[`${l[2].toLowerCase()}${l.substr(3)}`]=a[l]:s.on[`${l[2].toLowerCase()}${l.substr(3)}`]=a[l]:r[l]=a[l])}),["navigation","pagination","scrollbar"].forEach(a=>{!0===s[a]&&(s[a]={}),!1===s[a]&&delete s[a]}),{params:s,passedParams:n,rest:r,events:t}}function mountSwiper({el:a,nextEl:e,prevEl:s,paginationEl:t,scrollbarEl:n,swiper:r},i){needsNavigation(i)&&e&&s&&(r.params.navigation.nextEl=e,r.originalParams.navigation.nextEl=e,r.params.navigation.prevEl=s,r.originalParams.navigation.prevEl=s),needsPagination(i)&&t&&(r.params.pagination.el=t,r.originalParams.pagination.el=t),needsScrollbar(i)&&n&&(r.params.scrollbar.el=n,r.originalParams.scrollbar.el=n),r.init(a)}function getChangedParams(a,e,s,t,n){const r=[];if(!e)return r;const i=a=>{r.indexOf(a)<0&&r.push(a)};if(s&&t){const a=t.map(n),e=s.map(n);a.join("")!==e.join("")&&i("children"),t.length!==s.length&&i("children")}return paramsList.filter(a=>"_"===a[0]).map(a=>a.replace(/_/,"")).forEach(s=>{if(s in a&&s in e)if(isObject(a[s])&&isObject(e[s])){const t=Object.keys(a[s]),n=Object.keys(e[s]);t.length!==n.length?i(s):(t.forEach(t=>{a[s][t]!==e[s][t]&&i(s)}),n.forEach(t=>{a[s][t]!==e[s][t]&&i(s)}))}else a[s]!==e[s]&&i(s)}),r}const updateOnVirtualData=a=>{!a||a.destroyed||!a.params.virtual||a.params.virtual&&!a.params.virtual.enabled||(a.updateSlides(),a.updateProgress(),a.updateSlidesClasses(),a.emit("_virtualUpdated"),a.parallax&&a.params.parallax&&a.params.parallax.enabled&&a.parallax.setTranslate())};export{getChangedParams as a,getParams as g,mountSwiper as m,updateOnVirtualData as u}; +//# sourceMappingURL=update-on-virtual-data.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/update-on-virtual-data.min.mjs.map b/vendor/javascript/swiper/shared/update-on-virtual-data.min.mjs.map new file mode 100644 index 0000000..dcb1ec1 --- /dev/null +++ b/vendor/javascript/swiper/shared/update-on-virtual-data.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"update-on-virtual-data.mjs.mjs","names":["extend","paramsList","isObject","needsNavigation","needsPagination","needsScrollbar","defaults","getParams","obj","splitEvents","params","on","events","passedParams","_emitClasses","init","rest","allowedParams","map","key","replace","plainObj","Object","assign","keys","forEach","indexOf","search","toLowerCase","substr","mountSwiper","el","nextEl","prevEl","paginationEl","scrollbarEl","swiper","swiperParams","navigation","originalParams","pagination","scrollbar","getChangedParams","oldParams","children","oldChildren","getKey","addKey","push","oldChildrenKeys","childrenKeys","join","length","filter","newKeys","oldKeys","newKey","oldKey","updateOnVirtualData","destroyed","virtual","enabled","updateSlides","updateProgress","updateSlidesClasses","emit","parallax","setTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/update-on-virtual-data.mjs b/vendor/javascript/swiper/shared/update-on-virtual-data.mjs new file mode 100644 index 0000000..5db6780 --- /dev/null +++ b/vendor/javascript/swiper/shared/update-on-virtual-data.mjs @@ -0,0 +1,124 @@ +import { e as extend, p as paramsList, i as isObject, n as needsNavigation, a as needsPagination, b as needsScrollbar } from './update-swiper.mjs'; +import { d as defaults } from './swiper-core.mjs'; + +function getParams(obj = {}, splitEvents = true) { + const params = { + on: {} + }; + const events = {}; + const passedParams = {}; + extend(params, defaults); + params._emitClasses = true; + params.init = false; + const rest = {}; + const allowedParams = paramsList.map(key => key.replace(/_/, '')); + const plainObj = Object.assign({}, obj); + Object.keys(plainObj).forEach(key => { + if (typeof obj[key] === 'undefined') return; + if (allowedParams.indexOf(key) >= 0) { + if (isObject(obj[key])) { + params[key] = {}; + passedParams[key] = {}; + extend(params[key], obj[key]); + extend(passedParams[key], obj[key]); + } else { + params[key] = obj[key]; + passedParams[key] = obj[key]; + } + } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') { + if (splitEvents) { + events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; + } else { + params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; + } + } else { + rest[key] = obj[key]; + } + }); + ['navigation', 'pagination', 'scrollbar'].forEach(key => { + if (params[key] === true) params[key] = {}; + if (params[key] === false) delete params[key]; + }); + return { + params, + passedParams, + rest, + events + }; +} + +function mountSwiper({ + el, + nextEl, + prevEl, + paginationEl, + scrollbarEl, + swiper +}, swiperParams) { + if (needsNavigation(swiperParams) && nextEl && prevEl) { + swiper.params.navigation.nextEl = nextEl; + swiper.originalParams.navigation.nextEl = nextEl; + swiper.params.navigation.prevEl = prevEl; + swiper.originalParams.navigation.prevEl = prevEl; + } + if (needsPagination(swiperParams) && paginationEl) { + swiper.params.pagination.el = paginationEl; + swiper.originalParams.pagination.el = paginationEl; + } + if (needsScrollbar(swiperParams) && scrollbarEl) { + swiper.params.scrollbar.el = scrollbarEl; + swiper.originalParams.scrollbar.el = scrollbarEl; + } + swiper.init(el); +} + +function getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) { + const keys = []; + if (!oldParams) return keys; + const addKey = key => { + if (keys.indexOf(key) < 0) keys.push(key); + }; + if (children && oldChildren) { + const oldChildrenKeys = oldChildren.map(getKey); + const childrenKeys = children.map(getKey); + if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children'); + if (oldChildren.length !== children.length) addKey('children'); + } + const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, '')); + watchParams.forEach(key => { + if (key in swiperParams && key in oldParams) { + if (isObject(swiperParams[key]) && isObject(oldParams[key])) { + const newKeys = Object.keys(swiperParams[key]); + const oldKeys = Object.keys(oldParams[key]); + if (newKeys.length !== oldKeys.length) { + addKey(key); + } else { + newKeys.forEach(newKey => { + if (swiperParams[key][newKey] !== oldParams[key][newKey]) { + addKey(key); + } + }); + oldKeys.forEach(oldKey => { + if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key); + }); + } + } else if (swiperParams[key] !== oldParams[key]) { + addKey(key); + } + } + }); + return keys; +} + +const updateOnVirtualData = swiper => { + if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return; + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + swiper.emit('_virtualUpdated'); + if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) { + swiper.parallax.setTranslate(); + } +}; + +export { getChangedParams as a, getParams as g, mountSwiper as m, updateOnVirtualData as u }; diff --git a/vendor/javascript/swiper/shared/update-swiper.min.mjs b/vendor/javascript/swiper/shared/update-swiper.min.mjs new file mode 100644 index 0000000..ea69313 --- /dev/null +++ b/vendor/javascript/swiper/shared/update-swiper.min.mjs @@ -0,0 +1,2 @@ +import{s as setInnerHTML}from"./utils.min.mjs";const paramsList=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","swiperElementNodeName","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_snapToSlideEdge","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function isObject(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function extend(e,t){const i=["__proto__","constructor","prototype"];Object.keys(t).filter(e=>i.indexOf(e)<0).forEach(i=>{void 0===e[i]?e[i]=t[i]:isObject(t[i])&&isObject(e[i])&&Object.keys(t[i]).length>0?t[i].__swiper__?e[i]=t[i]:extend(e[i],t[i]):e[i]=t[i]})}function needsNavigation(e={}){return e.navigation&&void 0===e.navigation.nextEl&&void 0===e.navigation.prevEl}function needsPagination(e={}){return e.pagination&&void 0===e.pagination.el}function needsScrollbar(e={}){return e.scrollbar&&void 0===e.scrollbar.el}function uniqueClasses(e=""){const t=e.split(" ").map(e=>e.trim()).filter(e=>!!e),i=[];return t.forEach(e=>{i.indexOf(e)<0&&i.push(e)}),i.join(" ")}function attrToProp(e=""){return e.replace(/-[a-z]/g,e=>e.toUpperCase().replace("-",""))}function wrapperClass(e=""){return e?e.includes("swiper-wrapper")?e:`swiper-wrapper ${e}`:"swiper-wrapper"}function updateSwiper({swiper:e,slides:t,passedParams:i,changedParams:l,nextEl:n,prevEl:o,scrollbarEl:r,paginationEl:a}){const s=l.filter(e=>"children"!==e&&"direction"!==e&&"wrapperClass"!==e),{params:d,pagination:c,navigation:p,scrollbar:u,virtual:v,thumbs:g}=e;let b,f,w,_,h,m,S,E;l.includes("thumbs")&&i.thumbs&&i.thumbs.swiper&&!i.thumbs.swiper.destroyed&&d.thumbs&&(!d.thumbs.swiper||d.thumbs.swiper.destroyed)&&(b=!0),l.includes("controller")&&i.controller&&i.controller.control&&d.controller&&!d.controller.control&&(f=!0),l.includes("pagination")&&i.pagination&&(i.pagination.el||a)&&(d.pagination||!1===d.pagination)&&c&&!c.el&&(w=!0),l.includes("scrollbar")&&i.scrollbar&&(i.scrollbar.el||r)&&(d.scrollbar||!1===d.scrollbar)&&u&&!u.el&&(_=!0),l.includes("navigation")&&i.navigation&&(i.navigation.prevEl||o)&&(i.navigation.nextEl||n)&&(d.navigation||!1===d.navigation)&&p&&!p.prevEl&&!p.nextEl&&(h=!0);const C=t=>{e[t]&&(e[t].destroy(),"navigation"===t?(e.isElement&&(e[t].prevEl.remove(),e[t].nextEl.remove()),d[t].prevEl=void 0,d[t].nextEl=void 0,e[t].prevEl=void 0,e[t].nextEl=void 0):(e.isElement&&e[t].el.remove(),d[t].el=void 0,e[t].el=void 0))};if(l.includes("loop")&&e.isElement&&(d.loop&&!i.loop?m=!0:!d.loop&&i.loop?S=!0:E=!0),s.forEach(e=>{if(isObject(d[e])&&isObject(i[e]))Object.assign(d[e],i[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in i[e])||i[e].enabled||C(e);else{const t=i[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?d[e]=i[e]:!1===t&&C(e)}}),s.includes("controller")&&!f&&e.controller&&e.controller.control&&d.controller&&d.controller.control&&(e.controller.control=d.controller.control),l.includes("children")&&t&&v&&d.virtual.enabled?(v.slides=t,v.update(!0)):l.includes("virtual")&&v&&d.virtual.enabled&&(t&&(v.slides=t),v.update(!0)),l.includes("children")&&t&&d.loop&&(E=!0),b){g.init()&&g.update(!0)}f&&(e.controller.control=d.controller.control),w&&(!e.isElement||a&&"string"!=typeof a||((a=document.createElement("div")).classList.add("swiper-pagination"),a.part.add("pagination"),e.el.appendChild(a)),a&&(d.pagination.el=a),c.init(),c.render(),c.update()),_&&(!e.isElement||r&&"string"!=typeof r||((r=document.createElement("div")).classList.add("swiper-scrollbar"),r.part.add("scrollbar"),e.el.appendChild(r)),r&&(d.scrollbar.el=r),u.init(),u.updateSize(),u.setTranslate()),h&&(e.isElement&&(n&&"string"!=typeof n||((n=document.createElement("div")).classList.add("swiper-button-next"),setInnerHTML(n,e.navigation.arrowSvg),n.part.add("button-next"),e.el.appendChild(n)),o&&"string"!=typeof o||((o=document.createElement("div")).classList.add("swiper-button-prev"),setInnerHTML(o,e.navigation.arrowSvg),o.part.add("button-prev"),e.el.appendChild(o))),n&&(d.navigation.nextEl=n),o&&(d.navigation.prevEl=o),p.init(),p.update()),l.includes("allowSlideNext")&&(e.allowSlideNext=i.allowSlideNext),l.includes("allowSlidePrev")&&(e.allowSlidePrev=i.allowSlidePrev),l.includes("direction")&&e.changeDirection(i.direction,!1),(m||E)&&e.loopDestroy(),(S||E)&&e.loopCreate(),e.update()}export{needsPagination as a,needsScrollbar as b,attrToProp as c,uniqueClasses as d,extend as e,isObject as i,needsNavigation as n,paramsList as p,updateSwiper as u,wrapperClass as w}; +//# sourceMappingURL=update-swiper.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/update-swiper.min.mjs.map b/vendor/javascript/swiper/shared/update-swiper.min.mjs.map new file mode 100644 index 0000000..b551583 --- /dev/null +++ b/vendor/javascript/swiper/shared/update-swiper.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"update-swiper.mjs.mjs","names":["setInnerHTML","paramsList","isObject","o","constructor","Object","prototype","toString","call","slice","__swiper__","extend","target","src","noExtend","keys","filter","key","indexOf","forEach","length","needsNavigation","params","navigation","nextEl","prevEl","needsPagination","pagination","el","needsScrollbar","scrollbar","uniqueClasses","classNames","classes","split","map","c","trim","unique","push","join","attrToProp","attrName","replace","l","toUpperCase","wrapperClass","className","includes","updateSwiper","swiper","slides","passedParams","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","virtual","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyed","controller","control","destroyModule","mod","destroy","isElement","remove","undefined","loop","assign","enabled","newValue","update","init","document","createElement","classList","add","part","appendChild","render","updateSize","setTranslate","arrowSvg","allowSlideNext","allowSlidePrev","changeDirection","direction","loopDestroy","loopCreate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/update-swiper.mjs b/vendor/javascript/swiper/shared/update-swiper.mjs new file mode 100644 index 0000000..8a7c6a1 --- /dev/null +++ b/vendor/javascript/swiper/shared/update-swiper.mjs @@ -0,0 +1,219 @@ +import { s as setInnerHTML } from './utils.mjs'; + +/* underscore in name -> watch for changes */ +const paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_snapToSlideEdge', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', +// modules +'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + +function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; +} +function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); +} +function needsNavigation(params = {}) { + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; +} +function needsPagination(params = {}) { + return params.pagination && typeof params.pagination.el === 'undefined'; +} +function needsScrollbar(params = {}) { + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; +} +function uniqueClasses(classNames = '') { + const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c); + const unique = []; + classes.forEach(c => { + if (unique.indexOf(c) < 0) unique.push(c); + }); + return unique.join(' '); +} +function attrToProp(attrName = '') { + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); +} +function wrapperClass(className = '') { + if (!className) return 'swiper-wrapper'; + if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`; + return className; +} + +function updateSwiper({ + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl +}) { + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && !passedParams.thumbs.swiper.destroyed && currentParams.thumbs && (!currentParams.thumbs.swiper || currentParams.thumbs.swiper.destroyed)) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + setInnerHTML(nextEl, swiper.navigation.arrowSvg); + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + setInnerHTML(prevEl, swiper.navigation.arrowSvg); + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); +} + +export { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w }; diff --git a/vendor/javascript/swiper/shared/utils.min.mjs b/vendor/javascript/swiper/shared/utils.min.mjs new file mode 100644 index 0000000..1c2a8a0 --- /dev/null +++ b/vendor/javascript/swiper/shared/utils.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow,g as getDocument}from"./ssr-window.esm.min.mjs";function classesToTokens(e=""){return e.trim().split(" ").filter(e=>!!e.trim())}function deleteProps(e){const t=e;Object.keys(t).forEach(e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}})}function nextTick(e,t=0){return setTimeout(e,t)}function now(){return Date.now()}function getComputedStyle(e){const t=getWindow();let n;return t.getComputedStyle&&(n=t.getComputedStyle(e,null)),!n&&e.currentStyle&&(n=e.currentStyle),n||(n=e.style),n}function getTranslate(e,t="x"){const n=getWindow();let r,o,s;const l=getComputedStyle(e);return n.WebKitCSSMatrix?(o=l.transform||l.webkitTransform,o.split(",").length>6&&(o=o.split(", ").map(e=>e.replace(",",".")).join(", ")),s=new n.WebKitCSSMatrix("none"===o?"":o)):(s=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),r=s.toString().split(",")),"x"===t&&(o=n.WebKitCSSMatrix?s.m41:16===r.length?parseFloat(r[12]):parseFloat(r[4])),"y"===t&&(o=n.WebKitCSSMatrix?s.m42:16===r.length?parseFloat(r[13]):parseFloat(r[5])),o||0}function isObject(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function isNode(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function extend(...e){const t=Object(e[0]);for(let n=1;n"__proto__"!==e&&"constructor"!==e&&"prototype"!==e);for(let n=0,o=e.length;no?"next":"prev",c=(e,t)=>"next"===a&&e>=t||"prev"===a&&e<=t,m=()=>{s=(new Date).getTime(),null===l&&(l=s);const a=Math.max(Math.min((s-l)/i,1),0),u=.5-Math.cos(a*Math.PI)/2;let d=o+u*(t-o);if(c(d,t)&&(d=t),e.wrapperEl.scrollTo({[n]:d}),c(d,t))return e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.scrollSnapType="",setTimeout(()=>{e.wrapperEl.style.overflow="",e.wrapperEl.scrollTo({[n]:d})}),void r.cancelAnimationFrame(e.cssModeFrameID);e.cssModeFrameID=r.requestAnimationFrame(m)};m()}function getSlideTransformEl(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function elementChildren(e,t=""){const n=getWindow(),r=[...e.children];return n.HTMLSlotElement&&e instanceof HTMLSlotElement&&r.push(...e.assignedElements()),t?r.filter(e=>e.matches(t)):r}function elementIsChildOfSlot(e,t){const n=[t];for(;n.length>0;){const t=n.shift();if(e===t)return!0;n.push(...t.children,...t.shadowRoot?t.shadowRoot.children:[],...t.assignedElements?t.assignedElements():[])}}function elementIsChildOf(e,t){const n=getWindow();let r=t.contains(e);if(!r&&n.HTMLSlotElement&&t instanceof HTMLSlotElement){r=[...t.assignedElements()].includes(e),r||(r=elementIsChildOfSlot(e,t))}return r}function showWarning(e){try{return void console.warn(e)}catch(e){}}function createElement(e,t=[]){const n=document.createElement(e);return n.classList.add(...Array.isArray(t)?t:classesToTokens(t)),n}function elementOffset(e){const t=getWindow(),n=getDocument(),r=e.getBoundingClientRect(),o=n.body,s=e.clientTop||o.clientTop||0,l=e.clientLeft||o.clientLeft||0,i=e===t?t.scrollY:e.scrollTop,a=e===t?t.scrollX:e.scrollLeft;return{top:r.top+i-s,left:r.left+a-l}}function elementPrevAll(e,t){const n=[];for(;e.previousElementSibling;){const r=e.previousElementSibling;t?r.matches(t)&&n.push(r):n.push(r),e=r}return n}function elementNextAll(e,t){const n=[];for(;e.nextElementSibling;){const r=e.nextElementSibling;t?r.matches(t)&&n.push(r):n.push(r),e=r}return n}function elementStyle(e,t){return getWindow().getComputedStyle(e,null).getPropertyValue(t)}function elementIndex(e){let t,n=e;if(n){for(t=0;null!==(n=n.previousSibling);)1===n.nodeType&&(t+=1);return t}}function elementParents(e,t){const n=[];let r=e.parentElement;for(;r;)t?r.matches(t)&&n.push(r):n.push(r),r=r.parentElement;return n}function elementTransitionEnd(e,t){t&&e.addEventListener("transitionend",function n(r){r.target===e&&(t.call(e,r),e.removeEventListener("transitionend",n))})}function elementOuterSize(e,t,n){const r=getWindow();return n?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(r.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(r.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function makeElementsArray(e){return(Array.isArray(e)?e:[e]).filter(e=>!!e)}function getRotateFix(e){return t=>Math.abs(t)>0&&e.browser&&e.browser.need3dFix&&Math.abs(t)%90==0?t+.001:t}function setInnerHTML(e,t=""){"undefined"!=typeof trustedTypes?e.innerHTML=trustedTypes.createPolicy("html",{createHTML:e=>e}).createHTML(t):e.innerHTML=t}export{getRotateFix as a,setCSSProperty as b,createElement as c,elementParents as d,elementChildren as e,elementOffset as f,getSlideTransformEl as g,now as h,elementOuterSize as i,elementIndex as j,classesToTokens as k,getTranslate as l,makeElementsArray as m,nextTick as n,elementTransitionEnd as o,isObject as p,elementStyle as q,elementNextAll as r,setInnerHTML as s,elementPrevAll as t,animateCSSModeScroll as u,showWarning as v,elementIsChildOf as w,extend as x,deleteProps as y}; +//# sourceMappingURL=utils.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/utils.min.mjs.map b/vendor/javascript/swiper/shared/utils.min.mjs.map new file mode 100644 index 0000000..6a036f5 --- /dev/null +++ b/vendor/javascript/swiper/shared/utils.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.mjs.mjs","names":["getWindow","getDocument","classesToTokens","classes","trim","split","filter","c","deleteProps","obj","object","Object","keys","forEach","key","e","nextTick","callback","delay","setTimeout","now","Date","getComputedStyle","el","window","style","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","transform","webkitTransform","length","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","toString","m41","parseFloat","m42","isObject","o","constructor","prototype","call","slice","isNode","node","HTMLElement","nodeType","extend","args","to","i","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","undefined","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cancelAnimationFrame","cssModeFrameID","dir","isOutOfBound","current","target","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","requestAnimationFrame","getSlideTransformEl","slideEl","querySelector","shadowRoot","elementChildren","element","selector","children","HTMLSlotElement","push","assignedElements","matches","elementIsChildOfSlot","slot","elementsQueue","elementToCheck","shift","elementIsChildOf","parent","isChild","contains","includes","showWarning","text","console","warn","err","createElement","tag","document","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","body","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementPrevAll","prevEls","previousElementSibling","prev","elementNextAll","nextEls","nextElementSibling","next","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parentElement","elementTransitionEnd","addEventListener","fireCallBack","removeEventListener","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","getRotateFix","v","abs","browser","need3dFix","setInnerHTML","html","trustedTypes","innerHTML","createPolicy","createHTML","s"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/shared/utils.mjs b/vendor/javascript/swiper/shared/utils.mjs new file mode 100644 index 0000000..98c86ad --- /dev/null +++ b/vendor/javascript/swiper/shared/utils.mjs @@ -0,0 +1,323 @@ +import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs'; + +function classesToTokens(classes = '') { + return classes.trim().split(' ').filter(c => !!c.trim()); +} + +function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); +} +function nextTick(callback, delay = 0) { + return setTimeout(callback, delay); +} +function now() { + return Date.now(); +} +function getComputedStyle(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; +} +function getTranslate(el, axis = 'x') { + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; +} +function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; +} +function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); +} +function extend(...args) { + const to = Object(args[0]); + for (let i = 1; i < args.length; i += 1) { + const nextSource = args[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => key !== '__proto__' && key !== 'constructor' && key !== 'prototype'); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; +} +function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); +} +function animateCSSModeScroll({ + swiper, + targetPosition, + side +}) { + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); +} +function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; +} +function elementChildren(element, selector = '') { + const window = getWindow(); + const children = [...element.children]; + if (window.HTMLSlotElement && element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); +} +function elementIsChildOfSlot(el, slot) { + // Breadth-first search through all parent's children and assigned elements + const elementsQueue = [slot]; + while (elementsQueue.length > 0) { + const elementToCheck = elementsQueue.shift(); + if (el === elementToCheck) { + return true; + } + elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : [])); + } +} +function elementIsChildOf(el, parent) { + const window = getWindow(); + let isChild = parent.contains(el); + if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) { + const children = [...parent.assignedElements()]; + isChild = children.includes(el); + if (!isChild) { + isChild = elementIsChildOfSlot(el, parent); + } + } + return isChild; +} +function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } +} +function createElement(tag, classes = []) { + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; +} +function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; +} +function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; +} +function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; +} +function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); +} +function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; +} +function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; +} +function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } +} +function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; +} +function makeElementsArray(el) { + return (Array.isArray(el) ? el : [el]).filter(e => !!e); +} +function getRotateFix(swiper) { + return v => { + if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) { + return v + 0.001; + } + return v; + }; +} +function setInnerHTML(el, html = '') { + if (typeof trustedTypes !== 'undefined') { + el.innerHTML = trustedTypes.createPolicy('html', { + createHTML: s => s + }).createHTML(html); + } else { + el.innerHTML = html; + } +} + +export { getRotateFix as a, setCSSProperty as b, createElement as c, elementParents as d, elementChildren as e, elementOffset as f, getSlideTransformEl as g, now as h, elementOuterSize as i, elementIndex as j, classesToTokens as k, getTranslate as l, makeElementsArray as m, nextTick as n, elementTransitionEnd as o, isObject as p, elementStyle as q, elementNextAll as r, setInnerHTML as s, elementPrevAll as t, animateCSSModeScroll as u, showWarning as v, elementIsChildOf as w, extend as x, deleteProps as y }; diff --git a/vendor/javascript/swiper/swiper-bundle.css b/vendor/javascript/swiper/swiper-bundle.css new file mode 100644 index 0000000..b66634c --- /dev/null +++ b/vendor/javascript/swiper/swiper-bundle.css @@ -0,0 +1,859 @@ +/** + * Swiper 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +:root { + --swiper-theme-color: #007aff; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; + .swiper-slide, + .swiper-cube-shadow { + transform-style: preserve-3d; + } +} + +/* CSS Mode */ +.swiper-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } + &.swiper-horizontal { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } + > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-slides-offset-before); + scroll-margin-inline-start: var(--swiper-slides-offset-before); + } + > .swiper-wrapper > .swiper-slide:last-child { + margin-inline-end: var(--swiper-slides-offset-after); + } + } + &.swiper-vertical { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } + > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-slides-offset-before); + scroll-margin-block-start: var(--swiper-slides-offset-before); + } + > .swiper-wrapper > .swiper-slide:last-child { + margin-block-end: var(--swiper-slides-offset-after); + } + } + &.swiper-free-mode { + > .swiper-wrapper { + scroll-snap-type: none; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; + } + } + &.swiper-centered { + > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; + } + } + &.swiper-centered.swiper-horizontal { + > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); + } + } + &.swiper-centered.swiper-vertical { + > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); + } + } +} + +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d { + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress), +.swiper-watch-progress .swiper-slide-visible { + .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; + } +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ + +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode { + .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; + } +} +.swiper-virtual.swiper-css-mode.swiper-horizontal { + .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); + } +} + +.swiper-virtual.swiper-css-mode.swiper-vertical { + .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); + } +} + + + +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 4px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + + width: var(--swiper-navigation-size); + height: var(--swiper-navigation-size); + + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; + } + .swiper-navigation-disabled & { + display: none !important; + } + svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; + fill: currentColor; + pointer-events: none; + } +} + +.swiper-button-lock { + display: none; +} + +.swiper-button-prev, +.swiper-button-next { + top: var(--swiper-navigation-top-offset, 50%); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); +} +.swiper-button-prev { + left: var(--swiper-navigation-sides-offset, 4px); + right: auto; + .swiper-navigation-icon { + transform: rotate(180deg); + } +} +.swiper-button-next { + right: var(--swiper-navigation-sides-offset, 4px); + left: auto; +} +.swiper-horizontal { + .swiper-button-prev, + .swiper-button-next, + ~ .swiper-button-prev, + ~ .swiper-button-next { + top: var(--swiper-navigation-top-offset, 50%); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + margin-left: 0; + } + .swiper-button-prev, + & ~ .swiper-button-prev, + &.swiper-rtl .swiper-button-next, + &.swiper-rtl ~ .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 4px); + right: auto; + } + .swiper-button-next, + & ~ .swiper-button-next, + &.swiper-rtl .swiper-button-prev, + &.swiper-rtl ~ .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 4px); + left: auto; + } + .swiper-button-prev, + & ~ .swiper-button-prev, + &.swiper-rtl .swiper-button-next, + &.swiper-rtl ~ .swiper-button-next { + .swiper-navigation-icon { + transform: rotate(180deg); + } + } + &.swiper-rtl .swiper-button-prev, + &.swiper-rtl ~ .swiper-button-prev { + .swiper-navigation-icon { + transform: rotate(0deg); + } + } +} +.swiper-vertical { + .swiper-button-prev, + .swiper-button-next, + ~ .swiper-button-prev, + ~ .swiper-button-next { + left: var(--swiper-navigation-top-offset, 50%); + right: auto; + margin-left: calc(0px - (var(--swiper-navigation-size) / 2)); + margin-top: 0; + } + .swiper-button-prev, + ~ .swiper-button-prev { + top: var(--swiper-navigation-sides-offset, 4px); + bottom: auto; + .swiper-navigation-icon { + transform: rotate(-90deg); + } + } + .swiper-button-next, + ~ .swiper-button-next { + bottom: var(--swiper-navigation-sides-offset, 4px); + top: auto; + .swiper-navigation-icon { + transform: rotate(90deg); + } + } +} + +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } + .swiper-pagination-disabled > &, + &.swiper-pagination-disabled { + display: none !important; + } +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); + button& { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } + + &:only-child { + display: none !important; + } +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); + .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: + 200ms transform, + 200ms top; + } + } +} +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-horizontal.swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms left; + } + } +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-horizontal > &, + &.swiper-pagination-horizontal, + .swiper-vertical > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; + } + .swiper-vertical > &, + &.swiper-pagination-vertical, + .swiper-horizontal > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; + } +} +.swiper-pagination-lock { + display: none; +} + +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); + .swiper-scrollbar-disabled > &, + &.swiper-scrollbar-disabled { + display: none !important; + } + .swiper-horizontal > &, + &.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } + .swiper-vertical > &, + &.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} + + +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, + > svg, + > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} +/* Zoom container styles end */ + +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} + + +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} + + + + +.swiper-thumbs { + .swiper-slide-thumb-active { + /* Styles for active thumb slide */ + } +} + +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} + +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} + + +.swiper-fade { + &.swiper-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + pointer-events: auto; + & .swiper-slide-active { + pointer-events: auto; + } + } +} + +.swiper.swiper-cube { + overflow: visible; +} +.swiper-cube { + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, + .swiper-slide-next, + .swiper-slide-prev { + pointer-events: auto; + visibility: visible; + } + + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; + + &:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); + } + } +} +.swiper-cube { + .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } +} +/* Cube slide shadows start */ +.swiper-cube { + .swiper-slide-shadow-cube.swiper-slide-shadow-top, + .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, + .swiper-slide-shadow-cube.swiper-slide-shadow-left, + .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Cube slide shadows end */ + +.swiper.swiper-flip { + overflow: visible; +} +.swiper-flip { + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} +/* Flip slide shadows start */ +.swiper-flip { + .swiper-slide-shadow-flip.swiper-slide-shadow-top, + .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, + .swiper-slide-shadow-flip.swiper-slide-shadow-left, + .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Flip slide shadows end */ + +.swiper-coverflow { +} + +.swiper-creative { + .swiper-slide { + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; + } +} + +.swiper.swiper-cards { + overflow: visible; +} +.swiper-cards { + .swiper-slide { + transform-origin: center bottom; + backface-visibility: hidden; + overflow: hidden; + } +} diff --git a/vendor/javascript/swiper/swiper-bundle.js b/vendor/javascript/swiper/swiper-bundle.js new file mode 100644 index 0000000..6eb1fb5 --- /dev/null +++ b/vendor/javascript/swiper/swiper-bundle.js @@ -0,0 +1,9813 @@ +/** + * Swiper 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +var Swiper = (function () { + 'use strict'; + + /** + * SSR Window 5.0.1 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2025, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: June 27, 2025 + */ + /* eslint-disable no-param-reassign */ + function isObject$1(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$1(target = {}, src = {}) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) { + extend$1(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$1(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$1(win, ssrWindow); + return win; + } + + function classesToTokens(classes = '') { + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay = 0) { + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis = 'x') { + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend(...args) { + const to = Object(args[0]); + for (let i = 1; i < args.length; i += 1) { + const nextSource = args[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => key !== '__proto__' && key !== 'constructor' && key !== 'prototype'); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll({ + swiper, + targetPosition, + side + }) { + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; + } + function elementChildren(element, selector = '') { + const window = getWindow(); + const children = [...element.children]; + if (window.HTMLSlotElement && element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); + } + function elementIsChildOfSlot(el, slot) { + // Breadth-first search through all parent's children and assigned elements + const elementsQueue = [slot]; + while (elementsQueue.length > 0) { + const elementToCheck = elementsQueue.shift(); + if (el === elementToCheck) { + return true; + } + elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : [])); + } + } + function elementIsChildOf(el, parent) { + const window = getWindow(); + let isChild = parent.contains(el); + if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) { + const children = [...parent.assignedElements()]; + isChild = children.includes(el); + if (!isChild) { + isChild = elementIsChildOfSlot(el, parent); + } + } + return isChild; + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes = []) { + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + function makeElementsArray(el) { + return (Array.isArray(el) ? el : [el]).filter(e => !!e); + } + function getRotateFix(swiper) { + return v => { + if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) { + return v + 0.001; + } + return v; + }; + } + function setInnerHTML(el, html = '') { + if (typeof trustedTypes !== 'undefined') { + el.innerHTML = trustedTypes.createPolicy('html', { + createHTML: s => s + }).createHTML(html); + } else { + el.innerHTML = html; + } + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice({ + userAgent + } = {}) { + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad)(?!\1).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides = {}) { + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize({ + swiper, + on, + emit + }) { + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(({ + contentBoxSize, + contentRect, + target + }) => { + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer({ + swiper, + extendParams, + on, + emit + }) { + const observers = []; + const window = getWindow(); + const attach = (target, options = {}) => { + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler(...args) { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit(...args) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + const swiperSize = swiper.size - offsetBefore - offsetAfter; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween - offsetBefore - offsetAfter; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + + // set cssMode offsets + if (params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-slides-offset-before', `${offsetBefore}px`); + setCSSProperty(wrapperEl, '--swiper-slides-offset-after', `${offsetAfter}px`); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + const slide = slides[i]; + if (slide) { + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + } + + if (isVirtual && params.slidesPerView === 'auto') { + if (params.virtual.slidesPerViewAutoSlideSize) { + slideSize = params.virtual.slidesPerViewAutoSlideSize; + } + if (slideSize && slide) { + if (params.roundLengths) slideSize = Math.floor(slideSize); + slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } else if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slide.style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slide) { + slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slide) { + slide.swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + // Check if snapToSlideEdge should be applied + const isFractionalSlidesPerView = params.slidesPerView !== 'auto' && params.slidesPerView % 1 !== 0; + const shouldSnapToSlideEdge = params.snapToSlideEdge && !params.loop && (params.slidesPerView === 'auto' || isFractionalSlidesPerView); + + // Calculate the last allowed snap index when snapToSlideEdge is enabled + // This ensures minimum slides are visible at the end + let lastAllowedSnapIndex = snapGrid.length; + if (shouldSnapToSlideEdge) { + let minVisibleSlides; + if (params.slidesPerView === 'auto') { + // For 'auto' mode, calculate how many slides fit based on actual sizes + minVisibleSlides = 1; + let accumulatedSize = 0; + for (let i = slidesSizesGrid.length - 1; i >= 0; i -= 1) { + accumulatedSize += slidesSizesGrid[i] + (i < slidesSizesGrid.length - 1 ? spaceBetween : 0); + if (accumulatedSize <= swiperSize) { + minVisibleSlides = slidesSizesGrid.length - i; + } else { + break; + } + } + } else { + minVisibleSlides = Math.floor(params.slidesPerView); + } + lastAllowedSnapIndex = Math.max(slidesLength - minVisibleSlides, 0); + } + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (shouldSnapToSlideEdge) { + // When snapToSlideEdge is enabled, only keep snaps up to lastAllowedSnapIndex + if (i <= lastAllowedSnapIndex) { + newSlidesGrid.push(slidesGridItem); + } + } else if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + // When snapToSlideEdge is disabled, keep snaps that fit within scrollable area + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + // Only add edge-aligned snap if snapToSlideEdge is not enabled + if (!shouldSnapToSlideEdge) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesProgress(translate = this && this.translate || 0) { + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.find(slideEl => slideEl.column === activeIndex); + nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1); + prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1); + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove(); + } + }); + } + } + // Skip removal if managed by React/Vue component + if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled) { + if (params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else { + realIndex = activeIndex; + } + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex); + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') { + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) { + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit({ + swiper, + runCallbacks, + direction, + step + }) { + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + } else if (runCallbacks && activeIndex !== previousIndex) { + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks = true, direction) { + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks = true, direction) { + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index = 0, speed, runCallbacks = true, internal, initial) { + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // initial virtual + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + const isInitialVirtual = isVirtual && initial; + // Update Index + if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + const browser = getBrowser(); + const isSafari = browser.isSafari; + if (isVirtual && !initial && isSafari && swiper.isElement) { + swiper.virtual.update(false, false, slideIndex); + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index = 0, speed, runCallbacks = true, internal) { + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides, + slidesOffsetBefore, + slidesOffsetAfter + } = swiper.params; + const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (bothDirections && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (bothDirections) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && bothDirections && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = bothDirections ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks = true, internal) { + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks = true, internal) { + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + const isFreeMode = params.freeMode && params.freeMode.enabled; + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks = true, internal) { + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks = true, internal, threshold = 0.5) { + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.getSlideIndexWhenGrid(swiper.clickedIndex); + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + const isGrid = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + swiper.slideToLoop(realIndex); + } else if (slideToIndex > (isGrid ? (swiper.slides.length - slidesPerView) / 2 - (swiper.params.grid.rows - 1) : swiper.slides.length - slidesPerView)) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex, initial) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const clearBlankSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideBlankClass}`); + slides.forEach(el => { + el.remove(); + }); + if (slides.length > 0) { + swiper.recalcSlides(); + swiper.updateSlides(); + } + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (params.loopAddBlankSlides && (params.slidesPerGroup > 1 || gridEnabled)) { + clearBlankSlides(); + } + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + const bothDirections = params.centeredSlides || !!params.slidesOffsetBefore || !!params.slidesOffsetAfter; + swiper.loopFix({ + slideRealIndex, + direction: bothDirections ? undefined : 'next', + initial + }); + } + + function loopFix({ + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + initial, + byController, + byMousewheel + } = {}) { + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides, + slidesOffsetBefore, + slidesOffsetAfter, + initialSlide + } = params; + const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!bothDirections && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (bothDirections && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (bothDirections && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = bothDirections ? Math.max(slidesPerGroup, Math.ceil(slidesPerView / 2)) : slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !bothDirections; + let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass))); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (bothDirections && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + if (isInitialOverflow) { + slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1); + } + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) { + if (appendSlidesIndexes.includes(activeSlideIndex)) { + appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1); + } + if (prependSlidesIndexes.includes(activeSlideIndex)) { + prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1); + } + } + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base = this) { + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId); + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) { + return; + } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) { + return; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') { + document.activeElement.blur(); + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId); + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + const document = getDocument(); + + // Get breakpoint for window/container width and update parameters + const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container'; + const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase); + const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base = 'window', containerEl) { + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + snapToSlideEdge: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj = {}) { + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor(...args) { + let el; + let params; + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + params.modules.forEach(mod => { + if (typeof mod === 'function' && swiper.modules.indexOf(mod) < 0) { + swiper.modules.push(mod); + } + }); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)); + } + getSlideIndexWhenGrid(index) { + if (this.grid && this.params.grid && this.params.grid.rows > 1) { + if (this.params.grid.fill === 'column') { + index = Math.floor(index / this.params.grid.rows); + } else if (this.params.grid.fill === 'row') { + index = index % Math.ceil(this.slides.length / this.params.grid.rows); + } + } + return index; + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view = 'current', exact = false) { + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate = true) { + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(undefined, true); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance = true, cleanStyles = true) { + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + function Virtual({ + swiper, + extendParams, + on, + emit + }) { + extendParams({ + virtual: { + enabled: false, + slides: [], + cache: true, + slidesPerViewAutoSlideSize: 320, + renderSlide: null, + renderExternal: null, + renderExternalUpdate: true, + addSlidesBefore: 0, + addSlidesAfter: 0 + } + }); + let cssModeTimeout; + const document = getDocument(); + swiper.virtual = { + cache: {}, + from: undefined, + to: undefined, + slides: [], + offset: 0, + slidesGrid: [] + }; + const tempDOM = document.createElement('div'); + function renderSlide(slide, index) { + const params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + // eslint-disable-next-line + let slideEl; + if (params.renderSlide) { + slideEl = params.renderSlide.call(swiper, slide, index); + if (typeof slideEl === 'string') { + setInnerHTML(tempDOM, slideEl); + slideEl = tempDOM.children[0]; + } + } else if (swiper.isElement) { + slideEl = createElement('swiper-slide'); + } else { + slideEl = createElement('div', swiper.params.slideClass); + } + slideEl.setAttribute('data-swiper-slide-index', index); + if (!params.renderSlide) { + setInnerHTML(slideEl, slide); + } + if (params.cache) { + swiper.virtual.cache[index] = slideEl; + } + return slideEl; + } + function update(force, beforeInit, forceActiveIndex) { + const { + slidesPerGroup, + centeredSlides, + slidesPerView, + loop: isLoop, + initialSlide + } = swiper.params; + if (beforeInit && !isLoop && initialSlide > 0) { + return; + } + const { + addSlidesBefore, + addSlidesAfter, + slidesPerViewAutoSlideSize + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + const activeIndex = typeof forceActiveIndex === 'undefined' ? swiper.activeIndex || 0 : forceActiveIndex; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesPerViewNumeric; + if (slidesPerView === 'auto') { + if (slidesPerViewAutoSlideSize) { + let swiperSize = swiper.size; + if (!swiperSize) { + swiperSize = swiper.isHorizontal() ? swiper.el.getBoundingClientRect().width : swiper.el.getBoundingClientRect().height; + } + slidesPerViewNumeric = Math.max(1, Math.ceil(swiperSize / slidesPerViewAutoSlideSize)); + } else { + slidesPerViewNumeric = 1; + } + } else { + slidesPerViewNumeric = slidesPerView; + } + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerViewNumeric / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerViewNumeric / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerViewNumeric + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = (isLoop ? slidesPerViewNumeric : slidesPerGroup) + addSlidesBefore; + } + let from = activeIndex - slidesBefore; + let to = activeIndex + slidesAfter; + if (!isLoop) { + from = Math.max(from, 0); + to = Math.min(to, slides.length - 1); + } + let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + if (isLoop && activeIndex >= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(false, true); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); + } + + /* eslint-disable consistent-return */ + function Keyboard({ + swiper, + extendParams, + on, + emit + }) { + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true, + speed: undefined + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && (document.activeElement.isContentEditable || document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea'))) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + const speed = swiper.params.keyboard.speed; + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(speed); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(speed); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(speed); + if (isPageUp || isArrowUp) swiper.slidePrev(speed); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); + } + + /* eslint-disable consistent-return */ + function Mousewheel({ + swiper, + extendParams, + on, + emit + }) { + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + if (swiper.destroyed || !swiper.params) return; + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + if (swiper.destroyed || !swiper.params) return; + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplay.disableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); + } + + function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; + } + + const arrowSvg = ``; + function Navigation({ + swiper, + extendParams, + on, + emit + }) { + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + addIcons: true, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null, + arrowSvg + }; + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } else if (res && res.length === 1) { + res = res[0]; + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + if (params.addIcons && el.matches('.swiper-button-next,.swiper-button-prev') && !el.querySelector('svg')) { + const tempEl = document.createElement('div'); + setInnerHTML(tempEl, arrowSvg); + el.appendChild(tempEl.querySelector('svg')); + tempEl.remove(); + } + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); + if (swiper.isElement && !targetIsButton) { + const path = e.path || e.composedPath && e.composedPath(); + if (path) { + targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl)); + } + } + if (swiper.params.navigation.hideOnClick && !targetIsButton) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); + } + + function classesToSelector(classes = '') { + // Escape all CSS selector special characters + return `.${classes.trim().replace(/([\.:!+\/()[\]#>~*^$|=,'"@{}\\])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; + } + + function Pagination({ + swiper, + extendParams, + on, + emit + }) { + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function getMoveDirection(prevIndex, nextIndex, length) { + prevIndex = prevIndex % length; + nextIndex = nextIndex % length; + if (nextIndex === prevIndex + 1) { + return 'next'; + } else if (nextIndex === prevIndex - 1) { + return 'previous'; + } + return; + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length); + if (moveDirection === 'next') { + swiper.slideNext(); + } else if (moveDirection === 'previous') { + swiper.slidePrev(); + } else { + swiper.slideToLoop(index); + } + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + setInnerHTML(subEl, params.renderCustom(swiper, current + 1, total)); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + setInnerHTML(subEl, paginationHTML || ''); + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.find(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + }); + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); + } + + function Scrollbar({ + swiper, + extendParams, + on, + emit + }) { + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('changeDirection', () => { + if (!swiper.scrollbar || !swiper.scrollbar.el) return; + const params = swiper.params.scrollbar; + let { + el + } = swiper.scrollbar; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock changeDirection', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); + } + + function Parallax({ + swiper, + extendParams, + on + }) { + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = (duration = swiper.params.speed) => { + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); + } + + function Zoom({ + swiper, + extendParams, + on, + emit + }) { + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + limitToOriginalSize: false, + maxRatio: 3, + minRatio: 1, + panOnMouseMove: false, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let isPanningWithMouse = false; + let mousePanStart = { + x: 0, + y: 0 + }; + const mousePanSensitivity = -3; // Negative to invert pan direction + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getMaxRatio() { + const params = swiper.params.zoom; + const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { + const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; + return Math.min(imageMaxRatio, maxRatio); + } + return maxRatio; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = getMaxRatio(); + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + let allowTouchMoveTimeout; + function allowTouchMove() { + swiper.touchEventsData.preventTouchMoveFromPointerMove = false; + } + function preventTouchMove() { + clearTimeout(allowTouchMoveTimeout); + swiper.touchEventsData.preventTouchMoveFromPointerMove = true; + allowTouchMoveTimeout = setTimeout(() => { + if (swiper.destroyed) return; + allowTouchMove(); + }); + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + const isMouseEvent = e.pointerType === 'mouse'; + const isMousePan = isMouseEvent && swiper.params.zoom.panOnMouseMove; + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) { + return; + } + const zoom = swiper.zoom; + if (!gesture.imageEl) { + return; + } + if (!image.isTouched || !gesture.slideEl) { + if (isMousePan) onMouseMove(e); + return; + } + if (isMousePan) { + onMouseMove(e); + return; + } + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + 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)) { + image.isTouched = false; + allowTouchMove(); + return; + } + 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)) { + image.isTouched = false; + allowTouchMove(); + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + preventTouchMove(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + evCache.length = 0; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function onMouseMove(e) { + // Only pan if zoomed in and mouse panning is enabled + if (currentScale <= 1 || !gesture.imageWrapEl) return; + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return; + const currentTransform = window.getComputedStyle(gesture.imageWrapEl).transform; + const matrix = new window.DOMMatrix(currentTransform); + if (!isPanningWithMouse) { + isPanningWithMouse = true; + mousePanStart.x = e.clientX; + mousePanStart.y = e.clientY; + image.startX = matrix.e; + image.startY = matrix.f; + image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + return; + } + const deltaX = (e.clientX - mousePanStart.x) * mousePanSensitivity; + const deltaY = (e.clientY - mousePanStart.y) * mousePanSensitivity; + const scaledWidth = image.width * currentScale; + const scaledHeight = image.height * currentScale; + const slideWidth = gesture.slideWidth; + const slideHeight = gesture.slideHeight; + const minX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + const maxX = -minX; + const minY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + const maxY = -minY; + const newX = Math.max(Math.min(image.startX + deltaX, maxX), minX); + const newY = Math.max(Math.min(image.startY + deltaY, maxY), minY); + gesture.imageWrapEl.style.transitionDuration = '0ms'; + gesture.imageWrapEl.style.transform = `translate3d(${newX}px, ${newY}px, 0)`; + mousePanStart.x = e.clientX; + mousePanStart.y = e.clientY; + image.startX = newX; + image.startY = newY; + image.currentX = newX; + image.currentY = newY; + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + gesture.maxRatio = getMaxRatio(); + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const prevScale = currentScale; + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + image.touchesStart.x = undefined; + image.touchesStart.y = undefined; + } + const maxRatio = getMaxRatio(); + zoom.scale = forceZoomRatio || maxRatio; + currentScale = forceZoomRatio || maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + if (prevScale > 0 && forceZoomRatio && typeof image.currentX === 'number' && typeof image.currentY === 'number') { + translateX = image.currentX * zoom.scale / prevScale; + translateY = image.currentY * zoom.scale / prevScale; + } else { + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + } + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + image.currentX = translateX; + image.currentY = translateY; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + gesture.maxRatio = getMaxRatio(); + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + image.currentX = undefined; + image.currentY = undefined; + image.touchesStart.x = undefined; + image.touchesStart.y = undefined; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + if (swiper.params.zoom.panOnMouseMove) { + mousePanStart = { + x: 0, + y: 0 + }; + if (isPanningWithMouse) { + isPanningWithMouse = false; + image.startX = 0; + image.startY = 0; + } + } + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); + } + + /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ + function Controller({ + swiper, + extendParams, + on + }) { + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control]; + controlElements.forEach(controlElement => { + if (!swiper.controller.control) swiper.controller.control = []; + if (controlElement && controlElement.swiper) { + swiper.controller.control.push(controlElement.swiper); + } else if (controlElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onControllerSwiper = e => { + swiper.controller.control.push(e.detail[0]); + swiper.update(); + controlElement.removeEventListener(eventName, onControllerSwiper); + }; + controlElement.addEventListener(eventName, onControllerSwiper); + } + }); + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); + } + + function A11y({ + swiper, + extendParams, + on + }) { + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + containerRole: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null, + scrollOnFocus: true, + wrapperLiveRegion: true + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + let preventFocusHandler; + let focusTargetSlideEl; + let visibilityChangedTimestamp = new Date().getTime(); + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + setInnerHTML(notification, message); + } + function getRandomNumber(size = 16) { + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { + const prevEls = makeElementsArray(swiper.navigation.prevEl); + const nextEls = makeElementsArray(swiper.navigation.nextEl); + if (nextEls.includes(targetEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (prevEls.includes(targetEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = e => { + if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) { + preventFocusHandler = true; + } + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + preventFocusHandler = false; + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const onVisibilityChange = e => { + visibilityChangedTimestamp = new Date().getTime(); + }; + const handleFocus = e => { + if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; + if (new Date().getTime() - visibilityChangedTimestamp < 100) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + focusTargetSlideEl = slideEl; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + const isActive = (isVirtual ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : swiper.slides.indexOf(slideEl)) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + requestAnimationFrame(() => { + if (preventFocusHandler) return; + if (swiper.params.loop) { + swiper.slideToLoop(swiper.getSlideIndexWhenGrid(parseInt(slideEl.getAttribute('data-swiper-slide-index'))), 0); + } else if (isVirtual) { + swiper.slideTo(swiper.getSlideIndexWhenGrid(parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10)), 0); + } else { + swiper.slideTo(swiper.getSlideIndexWhenGrid(swiper.slides.indexOf(slideEl)), 0); + } + preventFocusHandler = false; + }); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + if (params.containerRole) { + addElRole(containerEl, params.containerRole); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + addElId(wrapperEl, wrapperId); + if (params.wrapperLiveRegion) { + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElLive(wrapperEl, live); + } + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + // Tab focus + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); + } + + function History({ + swiper, + extendParams, + on + }) { + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + } + + function HashNavigation({ + swiper, + extendParams, + emit, + on + }) { + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.find(slideEl => slideEl.getAttribute('data-hash') === hash); + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); + } + + /* eslint no-underscore-dangle: "off" */ + /* eslint no-use-before-define: "off" */ + function Autoplay({ + swiper, + extendParams, + on, + emit, + params + }) { + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active')); + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const getTotalDelay = () => { + let totalDelay = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0) { + totalDelay = currentSlideDelay; + } + return totalDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = delayForce; + if (typeof delay === 'undefined') { + delay = getTotalDelay(); + autoplayDelayTotal = delay; + autoplayDelayCurrent = delay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + } + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + autoplayTimeLeft = getTotalDelay(); + autoplayDelayTotal = getTotalDelay(); + } + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); + } + + function Thumb({ + swiper, + extendParams, + on + }) { + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function isVirtualEnabled() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return false; + return thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled; + } + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + if (thumbsParams.swiper.destroyed) { + initialized = false; + return false; + } + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + if (isVirtualEnabled()) { + swiper.thumbs.swiper.on('virtualUpdate', () => { + update(false, { + autoScroll: false + }); + }); + } + return true; + } + function update(initial, p) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || isVirtualEnabled()) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + if (p?.autoScroll ?? true) { + autoScroll(initial ? 0 : undefined); + } + } + function autoScroll(slideSpeed) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`); + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, slideSpeed); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener(eventName, onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener(eventName, onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); + } + + function freeMode({ + swiper, + extendParams, + emit, + once + }) { + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd({ + currentPos + }) { + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); + } + + function Grid({ + swiper, + extendParams, + on + }) { + extendParams({ + grid: { + rows: 1, + fill: 'column' + } + }); + let slidesNumberEvenToRows; + let slidesPerRow; + let numFullColumns; + let wasMultiRow; + const getSpaceBetween = () => { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; + } + + function appendSlide(slides) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + const appendElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + setInnerHTML(tempDOM, slideEl); + slidesEl.append(tempDOM.children[0]); + setInnerHTML(tempDOM, ''); + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + } + + function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + setInnerHTML(tempDOM, slideEl); + slidesEl.prepend(tempDOM.children[0]); + setInnerHTML(tempDOM, ''); + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); + } + + function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); + } + + function Manipulation({ + swiper + }) { + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); + } + + function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate _virtualUpdated', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); + } + + function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; + } + + function effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides + }) { + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.find(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode); + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } + } + + function EffectFade({ + swiper, + extendParams, + on + }) { + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCube({ + swiper, + extendParams, + on + }) { + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const r = getRotateFix(swiper); + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); + } + + function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; + } + + function EffectFlip({ + swiper, + extendParams, + on + }) { + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + const rotateFix = getRotateFix(swiper); + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCoverflow({ + swiper, + extendParams, + on + }) { + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + const r = getRotateFix(swiper); + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); + } + + function EffectCreative({ + swiper, + extendParams, + on + }) { + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + const rotateFix = getRotateFix(swiper); + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCards({ + swiper, + extendParams, + on + }) { + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${(params.rotate || swiper.isHorizontal() ? -25 : 0) * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + _loopSwapReset: false, + watchSlidesProgress: true, + loopAdditionalSlides: swiper.params.cardsEffect.rotate ? 3 : 2, + centeredSlides: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + /** + * Swiper 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + + + // Swiper Class + const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; + Swiper.use(modules); + + return Swiper; + +})(); diff --git a/vendor/javascript/swiper/swiper-bundle.min.css b/vendor/javascript/swiper/swiper-bundle.min.css new file mode 100644 index 0000000..4a790c3 --- /dev/null +++ b/vendor/javascript/swiper/swiper-bundle.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +:root{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;padding:0;position:relative;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:initial;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px;.swiper-cube-shadow,.swiper-slide{transform-style:preserve-3d}}.swiper-css-mode{>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none;&::-webkit-scrollbar{display:none}}>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}&.swiper-horizontal{>.swiper-wrapper{scroll-snap-type:x mandatory}>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}>.swiper-wrapper>.swiper-slide:last-child{margin-inline-end:var(--swiper-slides-offset-after)}}&.swiper-vertical{>.swiper-wrapper{scroll-snap-type:y mandatory}>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}>.swiper-wrapper>.swiper-slide:last-child{margin-block-end:var(--swiper-slides-offset-after)}}&.swiper-free-mode{>.swiper-wrapper{scroll-snap-type:none}>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}}&.swiper-centered{>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}}&.swiper-centered.swiper-horizontal{>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}}&.swiper-centered.swiper-vertical{>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}}}.swiper-3d{.swiper-slide-shadow,.swiper-slide-shadow-bottom,.swiper-slide-shadow-left,.swiper-slide-shadow-right,.swiper-slide-shadow-top{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}.swiper-slide-shadow{background:#00000026}.swiper-slide-shadow-left{background-image:linear-gradient(270deg,#00000080,#0000)}.swiper-slide-shadow-right{background-image:linear-gradient(90deg,#00000080,#0000)}.swiper-slide-shadow-top{background-image:linear-gradient(0deg,#00000080,#0000)}.swiper-slide-shadow-bottom{background-image:linear-gradient(180deg,#00000080,#0000)}}.swiper-lazy-preloader{border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid #0000;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}.swiper-watch-progress .swiper-slide-visible,.swiper:not(.swiper-watch-progress){.swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite}}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode{.swiper-wrapper:after{content:"";left:0;pointer-events:none;position:absolute;top:0}}.swiper-virtual.swiper-css-mode.swiper-horizontal{.swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}}.swiper-virtual.swiper-css-mode.swiper-vertical{.swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px}}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{align-items:center;color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;display:flex;height:var(--swiper-navigation-size);justify-content:center;position:absolute;width:var(--swiper-navigation-size);z-index:10;&.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}&.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.swiper-navigation-disabled &{display:none!important}svg{height:100%;object-fit:contain;transform-origin:center;width:100%;fill:currentColor;pointer-events:none}}.swiper-button-lock{display:none}.swiper-button-next,.swiper-button-prev{margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto;.swiper-navigation-icon{transform:rotate(180deg)}}.swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.swiper-horizontal{.swiper-button-next,.swiper-button-prev,~.swiper-button-next,~.swiper-button-prev{margin-left:0;margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}&.swiper-rtl .swiper-button-next,&.swiper-rtl~.swiper-button-next,&~.swiper-button-prev,.swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto}&.swiper-rtl .swiper-button-prev,&.swiper-rtl~.swiper-button-prev,&~.swiper-button-next,.swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}&.swiper-rtl .swiper-button-next,&.swiper-rtl~.swiper-button-next,&~.swiper-button-prev,.swiper-button-prev{.swiper-navigation-icon{transform:rotate(180deg)}}&.swiper-rtl .swiper-button-prev,&.swiper-rtl~.swiper-button-prev{.swiper-navigation-icon{transform:rotate(0deg)}}}.swiper-vertical{.swiper-button-next,.swiper-button-prev,~.swiper-button-next,~.swiper-button-prev{left:var(--swiper-navigation-top-offset,50%);margin-left:calc(0px - var(--swiper-navigation-size)/2);margin-top:0;right:auto}.swiper-button-prev,~.swiper-button-prev{bottom:auto;top:var(--swiper-navigation-sides-offset,4px);.swiper-navigation-icon{transform:rotate(-90deg)}}.swiper-button-next,~.swiper-button-next{bottom:var(--swiper-navigation-sides-offset,4px);top:auto;.swiper-navigation-icon{transform:rotate(90deg)}}}.swiper-pagination{position:absolute;text-align:center;transform:translateZ(0);transition:opacity .3s;z-index:10;&.swiper-pagination-hidden{opacity:0}&.swiper-pagination-disabled,.swiper-pagination-disabled>&{display:none!important}}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden;.swiper-pagination-bullet{position:relative;transform:scale(.33)}.swiper-pagination-bullet-active,.swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullet-active-next-next{transform:scale(.33)}}.swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);display:inline-block;height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));button&{appearance:none;border:none;box-shadow:none;margin:0;padding:0}.swiper-pagination-clickable &{cursor:pointer}&:only-child{display:none!important}}.swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translate3d(0,-50%,0);.swiper-pagination-bullet{display:block;margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0}&.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px;.swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}}}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-horizontal.swiper-pagination-bullets{.swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}&.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap;.swiper-pagination-bullet{transition:transform .2s,left .2s}}}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,#00000040);position:absolute;.swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));height:100%;left:0;position:absolute;top:0;transform:scale(0);transform-origin:left top;width:100%}.swiper-rtl & .swiper-pagination-progressbar-fill{transform-origin:right top}&.swiper-pagination-horizontal,&.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-horizontal>&,.swiper-vertical>&.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0;width:100%}&.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,&.swiper-pagination-vertical,.swiper-horizontal>&.swiper-pagination-progressbar-opposite,.swiper-vertical>&{height:100%;left:0;top:0;width:var(--swiper-pagination-progressbar-size,4px)}}.swiper-pagination-lock{display:none}.swiper-scrollbar{background:var(--swiper-scrollbar-bg-color,#0000001a);border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;&.swiper-scrollbar-disabled,.swiper-scrollbar-disabled>&{display:none!important}&.swiper-scrollbar-horizontal,.swiper-horizontal>&{bottom:var(--swiper-scrollbar-bottom,4px);height:var(--swiper-scrollbar-size,4px);left:var(--swiper-scrollbar-sides-offset,1%);position:absolute;top:var(--swiper-scrollbar-top,auto);width:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);z-index:50}&.swiper-scrollbar-vertical,.swiper-vertical>&{height:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);left:var(--swiper-scrollbar-left,auto);position:absolute;right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);width:var(--swiper-scrollbar-size,4px);z-index:50}}.swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,#00000080);border-radius:var(--swiper-scrollbar-border-radius,10px);height:100%;left:0;position:relative;top:0;width:100%}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{align-items:center;display:flex;height:100%;justify-content:center;text-align:center;width:100%;>canvas,>img,>svg{max-height:100%;max-width:100%;object-fit:contain}}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{left:0;opacity:0;pointer-events:none;position:absolute;top:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{margin:0 auto;transition-timing-function:ease-out}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-direction:column;flex-wrap:wrap}.swiper-fade{&.swiper-free-mode{.swiper-slide{transition-timing-function:ease-out}}.swiper-slide{pointer-events:none;transition-property:opacity;.swiper-slide{pointer-events:none}}.swiper-slide-active{pointer-events:auto;& .swiper-slide-active{pointer-events:auto}}}.swiper.swiper-cube{overflow:visible}.swiper-cube{.swiper-slide{backface-visibility:hidden;height:100%;pointer-events:none;transform-origin:0 0;visibility:hidden;width:100%;z-index:1;.swiper-slide{pointer-events:none}}&.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-slide-active{&,& .swiper-slide-active{pointer-events:auto}}.swiper-slide-active,.swiper-slide-next,.swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube-shadow{bottom:0;height:100%;left:0;opacity:.6;position:absolute;width:100%;z-index:0;&:before{background:#000;bottom:0;content:"";filter:blur(50px);left:0;position:absolute;right:0;top:0}}}.swiper-cube{.swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}}.swiper-cube{.swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-slide-shadow-cube.swiper-slide-shadow-top{backface-visibility:hidden;z-index:0}}.swiper.swiper-flip{overflow:visible}.swiper-flip{.swiper-slide{backface-visibility:hidden;pointer-events:none;z-index:1;.swiper-slide{pointer-events:none}}.swiper-slide-active{&,& .swiper-slide-active{pointer-events:auto}}}.swiper-flip{.swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-slide-shadow-flip.swiper-slide-shadow-top{backface-visibility:hidden;z-index:0}}.swiper-creative{.swiper-slide{backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}}.swiper.swiper-cards{overflow:visible}.swiper-cards{.swiper-slide{backface-visibility:hidden;overflow:hidden;transform-origin:center bottom}} \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper-bundle.min.js b/vendor/javascript/swiper/swiper-bundle.min.js new file mode 100644 index 0000000..bac6462 --- /dev/null +++ b/vendor/javascript/swiper/swiper-bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +var Swiper=function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s={},a={}){const i=["__proto__","constructor","prototype"];Object.keys(a).filter(e=>i.indexOf(e)<0).forEach(i=>{void 0===s[i]?s[i]=a[i]:e(a[i])&&e(s[i])&&Object.keys(a[i]).length>0&&t(s[i],a[i])})}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function a(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const i={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,i),e}function n(e=""){return e.trim().split(" ").filter(e=>!!e.trim())}function l(e,t=0){return setTimeout(e,t)}function o(){return Date.now()}function d(e,t="x"){const s=r();let a,i,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(i=l.transform||l.webkitTransform,i.split(",").length>6&&(i=i.split(", ").map(e=>e.replace(",",".")).join(", ")),n=new s.WebKitCSSMatrix("none"===i?"":i)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),a=n.toString().split(",")),"x"===t&&(i=s.WebKitCSSMatrix?n.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=s.WebKitCSSMatrix?n.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||0}function c(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function p(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function u(...e){const t=Object(e[0]);for(let s=1;s"__proto__"!==e&&"constructor"!==e&&"prototype"!==e);for(let s=0,i=e.length;si?"next":"prev",c=(e,t)=>"next"===d&&e>=t||"prev"===d&&e<=t,p=()=>{n=(new Date).getTime(),null===l&&(l=n);const r=Math.max(Math.min((n-l)/o,1),0),d=.5-Math.cos(r*Math.PI)/2;let u=i+d*(t-i);if(c(u,t)&&(u=t),e.wrapperEl.scrollTo({[s]:u}),c(u,t))return e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.scrollSnapType="",setTimeout(()=>{e.wrapperEl.style.overflow="",e.wrapperEl.scrollTo({[s]:u})}),void a.cancelAnimationFrame(e.cssModeFrameID);e.cssModeFrameID=a.requestAnimationFrame(p)};p()}function f(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function g(e,t=""){const s=r(),a=[...e.children];return s.HTMLSlotElement&&e instanceof HTMLSlotElement&&a.push(...e.assignedElements()),t?a.filter(e=>e.matches(t)):a}function v(e){try{return void console.warn(e)}catch(e){}}function w(e,t=[]){const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:n(t)),s}function b(e){const t=r(),s=a(),i=e.getBoundingClientRect(),n=s.body,l=e.clientTop||n.clientTop||0,o=e.clientLeft||n.clientLeft||0,d=e===t?t.scrollY:e.scrollTop,c=e===t?t.scrollX:e.scrollLeft;return{top:i.top+d-l,left:i.left+c-o}}function y(e,t){return r().getComputedStyle(e,null).getPropertyValue(t)}function E(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function x(e,t){const s=[];let a=e.parentElement;for(;a;)t?a.matches(t)&&s.push(a):s.push(a),a=a.parentElement;return s}function S(e,t){t&&e.addEventListener("transitionend",function s(a){a.target===e&&(t.call(e,a),e.removeEventListener("transitionend",s))})}function T(e,t,s){const a=r();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function M(e){return(Array.isArray(e)?e:[e]).filter(e=>!!e)}function C(e){return t=>Math.abs(t)>0&&e.browser&&e.browser.need3dFix&&Math.abs(t)%90==0?t+.001:t}function P(e,t=""){"undefined"!=typeof trustedTypes?e.innerHTML=trustedTypes.createPolicy("html",{createHTML:e=>e}).createHTML(t):e.innerHTML=t}let L,I,z;function A(){return L||(L=function(){const e=r(),t=a();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),L}function $(e={}){return I||(I=function({userAgent:e}={}){const t=A(),s=r(),a=s.navigator.platform,i=e||s.navigator.userAgent,n={ios:!1,android:!1},l=s.screen.width,o=s.screen.height,d=i.match(/(Android);?[\s\/]+([\d.]+)?/);let c=i.match(/(iPad)(?!\1).*OS\s([\d_]+)/);const p=i.match(/(iPod)(.*OS\s([\d_]+))?/),u=!c&&i.match(/(iPhone\sOS|iOS)\s([\d_]+)/),m="Win32"===a;let h="MacIntel"===a;return!c&&h&&t.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${o}`)>=0&&(c=i.match(/(Version)\/([\d.]+)/),c||(c=[0,1,"13_0_0"]),h=!1),d&&!m&&(n.os="android",n.android=!0),(c||u||p)&&(n.os="ios",n.ios=!0),n}(e)),I}function k(){return z||(z=function(){const e=r(),t=$();let s=!1;function a(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(a()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,a]=t.split("Version/")[1].split(" ")[0].split(".").map(e=>Number(e));s=e<16||16===e&&a<2}}const i=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),n=a();return{isSafari:s||n,needPerspectiveFix:s,need3dFix:n||i&&t.ios,isWebView:i}}()),z}var O={on(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;const i=s?"unshift":"push";return e.split(" ").forEach(e=>{a.eventsListeners[e]||(a.eventsListeners[e]=[]),a.eventsListeners[e][i](t)}),a},once(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;function i(...s){a.off(e,i),i.__emitterProxy&&delete i.__emitterProxy,t.apply(a,s)}return i.__emitterProxy=t,a.on(e,i,s)},onAny(e,t){const s=this;if(!s.eventsListeners||s.destroyed)return s;if("function"!=typeof e)return s;const a=t?"unshift":"push";return s.eventsAnyListeners.indexOf(e)<0&&s.eventsAnyListeners[a](e),s},offAny(e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsAnyListeners)return t;const s=t.eventsAnyListeners.indexOf(e);return s>=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach(e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach((a,i)=>{(a===t||a.__emitterProxy&&a.__emitterProxy===t)&&s.eventsListeners[e].splice(i,1)})}),s):s},emit(...e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsListeners)return t;let s,a,i;"string"==typeof e[0]||Array.isArray(e[0])?(s=e[0],a=e.slice(1,e.length),i=t):(s=e[0].events,a=e[0].data,i=e[0].context||t),a.unshift(i);return(Array.isArray(s)?s:s.split(" ")).forEach(e=>{t.eventsAnyListeners&&t.eventsAnyListeners.length&&t.eventsAnyListeners.forEach(t=>{t.apply(i,[e,...a])}),t.eventsListeners&&t.eventsListeners[e]&&t.eventsListeners[e].forEach(e=>{e.apply(i,a)})}),t}};const D=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const G=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const X=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame(()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&!t.lazyPreloaderManaged&&t.remove())})),t&&!t.lazyPreloaderManaged&&t.remove()}},B=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},Y=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const a="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),i=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=i,r=[s-t];return r.push(...Array.from({length:t}).map((e,t)=>s+a+t)),void e.slides.forEach((t,s)=>{r.includes(t.column)&&B(e,s)})}const r=i+a-1;if(e.params.rewind||e.params.loop)for(let a=i-t;a<=r+t;a+=1){const t=(a%s+s)%s;(tr)&&B(e,t)}else for(let a=Math.max(i-t,0);a<=Math.min(r+t,s-1);a+=1)a!==i&&(a>r||a=0?x=parseFloat(x.replace("%",""))/100*E:"string"==typeof x&&(x=parseFloat(x)),e.virtualSize=-x-f-v,d.forEach(e=>{r?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""}),s.centeredSlides&&s.cssMode&&(m(a,"--swiper-centered-offset-before",""),m(a,"--swiper-centered-offset-after","")),s.cssMode&&(m(a,"--swiper-slides-offset-before",`${f}px`),m(a,"--swiper-slides-offset-after",`${v}px`));const P=s.grid&&s.grid.rows>1&&e.grid;let L;P?e.grid.initSlides(d):e.grid&&e.grid.unsetSlides();const I="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter(e=>void 0!==s.breakpoints[e].slidesPerView).length>0;for(let a=0;a=0&&(t+=h[s]+(s1&&(a||p.push(e.virtualSize-E))}if(l&&s.loop){const t=h[0]+x;if(s.slidesPerGroup>1){const a=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),i=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==d.length-1).forEach(e=>{e.style[t]=`${x}px`})}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;h.forEach(t=>{e+=t+(x||0)}),e-=x;const t=e>E?e-E:0;p=p.map(e=>e<=0?-f:e>t?t+v:e)}if(s.centerInsufficientSlides){let e=0;if(h.forEach(t=>{e+=t+(x||0)}),e-=x,e{p[s]=e-t}),u.forEach((e,s)=>{u[s]=e+t})}}if(Object.assign(e,{slides:d,snapGrid:p,slidesGrid:u,slidesSizesGrid:h}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){m(a,"--swiper-centered-offset-before",-p[0]+"px"),m(a,"--swiper-centered-offset-after",e.size/2-h[h.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map(e=>e+t),e.slidesGrid=e.slidesGrid.map(e=>e+s)}if(c!==o&&e.emit("slidesLengthChange"),p.length!==w&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),u.length!==b&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(l||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,a=e.el.classList.contains(t);c<=s.maxBackfaceHiddenSlides?a||e.el.classList.add(t):a&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],a=t.virtual&&t.params.virtual.enabled;let i,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>a?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach(e=>{s.push(e)});else for(i=0;it.slides.length&&!a)break;s.push(n(e))}else s.push(n(t.activeIndex));for(i=0;ir?e:r}(r||0===r)&&(t.wrapperEl.style.height=`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let a=0;a=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],f=u>=0&&u1&&m<=t.size||u<=0&&m>=t.size;f&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e)),D(o,f,s.slideVisibleClass),D(o,h,s.slideFullyVisibleClass),o.progress=i?-c:c,o.originalProgress=i?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n,progressLoop:l}=t;const o=r,d=n;if(0===a)i=0,r=!0,n=!0;else{i=(e-t.minTranslate())/a;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;r=s||i<=0,n=l||i>=1,s&&(i=0),l&&(i=1)}if(s.loop){const s=t.getSlideIndexByData(0),a=t.getSlideIndexByData(t.slides.length-1),i=t.slidesGrid[s],r=t.slidesGrid[a],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=i?(o-i)/n:(o+n-r)/n,l>1&&(l-=1)}Object.assign(t,{progress:i,progressLoop:l,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!r||d&&!n)&&t.emit("fromEdge"),t.emit("progress",i)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:a,activeIndex:i}=e,r=e.virtual&&s.virtual.enabled,n=e.grid&&s.grid&&s.grid.rows>1,l=e=>g(a,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,c;if(r)if(s.loop){let t=i-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${i}"]`);else n?(o=t.find(e=>e.column===i),c=t.find(e=>e.column===i+1),d=t.find(e=>e.column===i-1)):o=t[i];o&&(n||(c=function(e,t){const s=[];for(;e.nextElementSibling;){const a=e.nextElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),d=function(e,t){const s=[];for(;e.previousElementSibling;){const a=e.previousElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach(e=>{G(e,e===o,s.slideActiveClass),G(e,e===c,s.slideNextClass),G(e,e===d,s.slidePrevClass)}),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:a,params:i,activeIndex:r,realIndex:n,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,a=e.rtlTranslate?e.translate:-e.translate;let i;for(let e=0;e=t[e]&&a=t[e]&&a=t[e]&&(i=e);return s.normalizeSlideIndex&&(i<0||void 0===i)&&(i=0),i}(t)),a.indexOf(s)>=0)o=a.indexOf(s);else{const e=Math.min(i.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/i.slidesPerGroup)}if(o>=a.length&&(o=a.length-1),d===r&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===r&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&i.grid&&i.grid.rows>1;let u;if(t.virtual&&i.virtual.enabled)u=i.loop?c(d):d;else if(p){const e=t.slides.find(e=>e.column===d);let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/i.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:u,previousIndex:r,activeIndex:d}),t.initialized&&Y(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,a=s.params;let i=e.closest(`.${a.slideClass}, swiper-slide`);!i&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach(e=>{!i&&e.matches&&e.matches(`.${a.slideClass}, swiper-slide`)&&(i=e)});let r,n=!1;if(i)for(let e=0;eo?o:a&&er?"next":i=o.length&&(v=o.length-1);const w=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&(u?w>r.translate&&w>r.minTranslate():wr.translate&&w>r.maxTranslate()&&(p||0)!==n)return!1}let b;n!==(c||0)&&s&&r.emit("beforeSlideChangeStart"),r.updateProgress(w),b=n>p?"next":n0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame(()=>{m[e?"scrollLeft":"scrollTop"]=s})):m[e?"scrollLeft":"scrollTop"]=s,y&&requestAnimationFrame(()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1});else{if(!r.support.smoothScroll)return h({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;m.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}const E=k().isSafari;return y&&!i&&E&&r.isElement&&r.virtual.update(!1,!1,n),r.setTransition(t),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e=0,t,s=!0,a){if("string"==typeof e){e=parseInt(e,10)}const i=this;if(i.destroyed)return;void 0===t&&(t=i.params.speed);const r=i.grid&&i.params.grid&&i.params.grid.rows>1;let n=e;if(i.params.loop)if(i.virtual&&i.params.virtual.enabled)n+=i.virtual.slidesBefore;else{let e;if(r){const t=n*i.params.grid.rows;e=i.slides.find(e=>1*e.getAttribute("data-swiper-slide-index")===t).column}else e=i.getSlideIndexByData(n);const t=r?Math.ceil(i.slides.length/i.params.grid.rows):i.slides.length,{centeredSlides:s,slidesOffsetBefore:l,slidesOffsetAfter:o}=i.params,d=s||!!l||!!o;let c=i.params.slidesPerView;"auto"===c?c=i.slidesPerViewDynamic():(c=Math.ceil(parseFloat(i.params.slidesPerView,10)),d&&c%2==0&&(c+=1));let p=t-e1*t.getAttribute("data-swiper-slide-index")===e).column}else n=i.getSlideIndexByData(n)}return requestAnimationFrame(()=>{i.slideTo(n,t,s,a)}),i},slideNext:function(e,t=!0,s){const a=this,{enabled:i,params:r,animating:n}=a;if(!i||a.destroyed)return a;void 0===e&&(e=a.params.speed);let l=r.slidesPerGroup;"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndex{a.slideTo(a.activeIndex+o,e,t,s)}),!0}return r.rewind&&a.isEnd?a.slideTo(0,e,t,s):a.slideTo(a.activeIndex+o,e,t,s)},slidePrev:function(e,t=!0,s){const a=this,{params:i,snapGrid:r,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=a;if(!o||a.destroyed)return a;void 0===e&&(e=a.params.speed);const c=a.virtual&&i.virtual.enabled;if(i.loop){if(d&&!c&&i.loopPreventsSliding)return!1;a.loopFix({direction:"prev"}),a._clientLeft=a.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?a.translate:-a.translate),m=r.map(e=>p(e)),h=i.freeMode&&i.freeMode.enabled;let f=r[m.indexOf(u)-1];if(void 0===f&&(i.cssMode||h)){let e;r.forEach((t,s)=>{u>=t&&(e=s)}),void 0!==e&&(f=h?r[e]:r[e>0?e-1:e])}let g=0;if(void 0!==f&&(g=n.indexOf(f),g<0&&(g=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(g=g-a.slidesPerViewDynamic("previous",!0)+1,g=Math.max(g,0))),i.rewind&&a.isBeginning){const i=a.params.virtual&&a.params.virtual.enabled&&a.virtual?a.virtual.slides.length-1:a.slides.length-1;return a.slideTo(i,e,t,s)}return i.loop&&0===a.activeIndex&&i.cssMode?(requestAnimationFrame(()=>{a.slideTo(g,e,t,s)}),!0):a.slideTo(g,e,t,s)},slideReset:function(e,t=!0,s){const a=this;if(!a.destroyed)return void 0===e&&(e=a.params.speed),a.slideTo(a.activeIndex,e,t,s)},slideToClosest:function(e,t=!0,s,a=.5){const i=this;if(i.destroyed)return;void 0===e&&(e=i.params.speed);let r=i.activeIndex;const n=Math.min(i.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/i.params.slidesPerGroup),o=i.rtlTranslate?i.translate:-i.translate;if(o>=i.snapGrid[l]){const e=i.snapGrid[l];o-e>(i.snapGrid[l+1]-e)*a&&(r+=i.params.slidesPerGroup)}else{const e=i.snapGrid[l-1];o-e<=(i.snapGrid[l]-e)*a&&(r-=i.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,i.slidesGrid.length-1),i.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.getSlideIndexWhenGrid(e.clickedIndex);const n=e.isElement?"swiper-slide":`.${t.slideClass}`,o=e.grid&&e.params.grid&&e.params.grid.rows>1;if(t.loop){if(e.animating)return;i=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?e.slideToLoop(i):r>(o?(e.slides.length-a)/2-(e.params.grid.rows-1):e.slides.length-a)?(e.loopFix(),r=e.getSlideIndex(g(s,`${n}[data-swiper-slide-index="${i}"]`)[0]),l(()=>{e.slideTo(r)})):e.slideTo(r)}else e.slideTo(r)}};var q={loopCreate:function(e,t){const s=this,{params:a,slidesEl:i}=s;if(!a.loop||s.virtual&&s.params.virtual.enabled)return;const r=()=>{g(i,`.${a.slideClass}, swiper-slide`).forEach((e,t)=>{e.setAttribute("data-swiper-slide-index",t)})},n=s.grid&&a.grid&&a.grid.rows>1;a.loopAddBlankSlides&&(a.slidesPerGroup>1||n)&&(()=>{const e=g(i,`.${a.slideBlankClass}`);e.forEach(e=>{e.remove()}),e.length>0&&(s.recalcSlides(),s.updateSlides())})();const l=a.slidesPerGroup*(n?a.grid.rows:1),o=s.slides.length%l!==0,d=n&&s.slides.length%a.grid.rows!==0,c=e=>{for(let t=0;t1;d.lengthe.classList.contains(m.slideActiveClass))):L=i;const I="next"===s||!s,z="prev"===s||!s;let A=0,$=0;const k=(S?d[i].column:i)+(b&&void 0===a?-y/2+.5:0);if(k=0;t-=1)d[t].column===e&&T.push(t)}else T.push(C-t-1)}}else if(k+y>C-x){$=Math.max(k-(C-2*x),E),P&&($=Math.max($,y-C+w+1));for(let e=0;e<$;e+=1){const t=e-Math.floor(e/C)*C;S?d.forEach((e,s)=>{e.column===t&&M.push(s)}):M.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame(()=>{o.__preventObserver__=!1}),"cards"===o.params.effect&&d.length{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1}),I&&M.forEach(e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1}),o.recalcSlides(),"auto"===m.slidesPerView?o.updateSlides():S&&(T.length>0&&z||M.length>0&&I)&&o.slides.forEach((e,t)=>{o.grid.updateSlide(t,e,o.slides)}),m.watchSlidesProgress&&o.updateSlidesOffset(),t)if(T.length>0&&z){if(void 0===e){const e=o.slidesGrid[L],t=o.slidesGrid[L+A]-e;l?o.setTranslate(o.translate-t):(o.slideTo(L+Math.ceil(A),0,!1,!0),a&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(a){const e=S?T.length/m.grid.rows:T.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(M.length>0&&I)if(void 0===e){const e=o.slidesGrid[L],t=o.slidesGrid[L-$]-e;l?o.setTranslate(o.translate-t):(o.slideTo(L-$,0,!1,!0),a&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=S?M.length/m.grid.rows:M.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=c,o.allowSlideNext=p,o.controller&&o.controller.control&&!n){const r={slideRealIndex:e,direction:s,setTranslate:a,activeSlideIndex:i,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach(e=>{!e.destroyed&&e.params.loop&&e.loopFix({...r,slideTo:e.params.slidesPerView===m.slidesPerView&&t})}):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...r,slideTo:o.controller.control.params.slidesPerView===m.slidesPerView&&t})}o.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||!s||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const a=[];e.slides.forEach(e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;a[t]=e}),e.slides.forEach(e=>{e.removeAttribute("data-swiper-slide-index")}),a.forEach(e=>{s.append(e)}),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function _(e,t,s){const a=r(),{params:i}=e,n=i.edgeSwipeDetection,l=i.edgeSwipeThreshold;return!n||!(s<=l||s>=a.innerWidth-l)||"prevent"===n&&(t.preventDefault(),!0)}function F(e){const t=this,s=a();let i=e;i.originalEvent&&(i=i.originalEvent);const n=t.touchEventsData;if("pointerdown"===i.type){if(null!==n.pointerId&&n.pointerId!==i.pointerId)return;n.pointerId=i.pointerId}else"touchstart"===i.type&&1===i.targetTouches.length&&(n.touchId=i.targetTouches[0].identifier);if("touchstart"===i.type)return void _(t,i,i.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===i.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=i.target;if("wrapper"===l.touchEventsTarget&&!function(e,t){const s=r();let a=t.contains(e);!a&&s.HTMLSlotElement&&t instanceof HTMLSlotElement&&(a=[...t.assignedElements()].includes(e),a||(a=function(e,t){const s=[t];for(;s.length>0;){const t=s.shift();if(e===t)return!0;s.push(...t.children,...t.shadowRoot?t.shadowRoot.children:[],...t.assignedElements?t.assignedElements():[])}}(e,t)));return a}(p,t.wrapperEl))return;if("which"in i&&3===i.which)return;if("button"in i&&i.button>0)return;if(n.isTouched&&n.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,m=i.composedPath?i.composedPath():i.path;u&&i.target&&i.target.shadowRoot&&m&&(p=m[0]);const h=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!i.target||!i.target.shadowRoot);if(l.noSwiping&&(f?function(e,t=this){return function t(s){if(!s||s===a()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}(h,p):p.closest(h)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=i.pageX,d.currentY=i.pageY;const g=d.currentX,v=d.currentY;if(!_(t,i,g))return;Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=g,d.startY=v,n.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1);let w=!0;p.matches(n.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==p&&("mouse"===i.pointerType||"mouse"!==i.pointerType&&!p.matches(n.focusableElements))&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||p.isContentEditable||i.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",i)}function W(e){const t=a(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==i.touchId)return;if(p.pointerId!==i.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].find(e=>e.identifier===i.touchId),!c||c.identifier!==i.touchId)return}else c=p;if(!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,m=c.pageY;if(p.preventedByNestedSwiper)return n.startX=u,void(n.startY=m);if(!s.allowTouchMove)return p.target.matches(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m}),i.touchStartTime=o()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(mn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else{if(l&&(u>n.startX&&-s.translate<=s.maxTranslate()||u=s.minTranslate()))return;if(!l&&(un.startX&&s.translate>=s.minTranslate()))return}if(t.activeElement&&t.activeElement.matches(i.focusableElements)&&t.activeElement!==p.target&&"mouse"!==p.pointerType&&t.activeElement.blur(),t.activeElement&&p.target===t.activeElement&&p.target.matches(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);i.allowTouchCallbacks&&s.emit("touchMove",p),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=u,n.currentY=m;const h=n.currentX-n.startX,f=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(h**2+f**2)=25&&(e=180*Math.atan2(Math.abs(f),Math.abs(h))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",p),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling||"touchmove"===p.type&&i.preventTouchMoveFromPointerMove)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&p.cancelable&&p.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&p.stopPropagation();let g=s.isHorizontal()?h:f,v=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(g=Math.abs(g)*(l?1:-1),v=Math.abs(v)*(l?1:-1)),n.diff=g,g*=r.touchRatio,l&&(g=-g,v=-v);const w=s.touchesDirection;s.swipeDirection=g>0?"prev":"next",s.touchesDirection=v>0?"prev":"next";const b=s.params.loop&&!r.cssMode,y="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!i.isMoved){if(b&&y&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),!1!==r._loopSwapReset&&i.isMoved&&i.allowThresholdMove&&w!==s.touchesDirection&&b&&y&&Math.abs(g)>=1)return Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,void(i.startTranslate=i.currentTranslate);s.emit("sliderMove",p),i.isMoved=!0,i.currentTranslate=g+i.startTranslate;let E=!0,x=r.resistanceRatio;if(r.touchReleaseOnEdges&&(x=0),g>0?(b&&y&&i.allowThresholdMove&&i.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]-("auto"!==r.slidesPerView&&s.slides.length-r.slidesPerView>=2?s.slidesSizesGrid[s.activeIndex+1]+s.params.spaceBetween:0)-s.params.spaceBetween:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(E=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+g)**x))):g<0&&(b&&y&&i.allowThresholdMove&&i.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]+s.params.spaceBetween+("auto"!==r.slidesPerView&&s.slides.length-r.slidesPerView>=2?s.slidesSizesGrid[s.slidesSizesGrid.length-1]+s.params.spaceBetween:0):s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(g)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function j(e){const t=this,s=t.touchEventsData;let a,i=e;i.originalEvent&&(i=i.originalEvent);if("touchend"===i.type||"touchcancel"===i.type){if(a=[...i.changedTouches].find(e=>e.identifier===s.touchId),!a||a.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(i.pointerId!==s.pointerId)return;a=i}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(i.type)){if(!(["pointercancel","contextmenu"].includes(i.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:r,touches:n,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!r.simulateTouch&&"mouse"===i.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",i),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&r.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);r.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),m=u-s.touchStartTime;if(t.allowClick){const e=i.path||i.composedPath&&i.composedPath();t.updateClickedSlide(e&&e[0]||i.target,e),t.emit("tap click",i),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",i)}if(s.lastClickTime=o(),l(()=>{t.destroyed||(t.allowClick=!0)}),!s.isTouched||!s.isMoved||!t.swipeDirection||0===n.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=r.followFinger?d?t.translate:-t.translate:-s.currentTranslate,r.cssMode)return;if(r.freeMode&&r.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const f=h>=-t.maxTranslate()&&!t.params.loop;let g=0,v=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&h=c[e])&&(g=e,v=c[c.length-1]-c[c.length-2])}let w=null,b=null;r.rewind&&(t.isBeginning?b=r.virtual&&r.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const y=(h-c[g])/v,E=gr.longSwipesMs){if(!r.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(y>=r.longSwipesRatio?t.slideTo(r.rewind&&t.isEnd?w:g+E):t.slideTo(g)),"prev"===t.swipeDirection&&(y>1-r.longSwipesRatio?t.slideTo(g+E):null!==b&&y<0&&Math.abs(y)>r.longSwipesRatio?t.slideTo(b):t.slideTo(g))}else{if(!r.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(i.target===t.navigation.nextEl||i.target===t.navigation.prevEl)?i.target===t.navigation.nextEl?t.slideTo(g+E):t.slideTo(g):("next"===t.swipeDirection&&t.slideTo(null!==w?w:g+E),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:g))}}function U(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:a,allowSlidePrev:i,snapGrid:r}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout(()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()},500)),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function K(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function Z(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:a}=e;if(!a)return;let i;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();i=0===r?0:(e.translate-e.minTranslate())/r,i!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function Q(e){const t=this;X(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function J(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const ee=(e,t)=>{const s=a(),{params:i,el:r,wrapperEl:n,device:l}=e,o=!!i.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;r&&"string"!=typeof r&&(s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:o}),r[d]("touchstart",e.onTouchStart,{passive:!1}),r[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&r[d]("click",e.onClick,!0),i.cssMode&&n[d]("scroll",e.onScroll),i.updateOnWindowResize?e[c](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",U,!0):e[c]("observerUpdate",U,!0),r[d]("load",e.onLoad,{capture:!0}))};const te=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var se={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,snapToSlideEdge:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function ae(e,t){return function(s={}){const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(!0===e[a]&&(e[a]={enabled:!0}),"navigation"===a&&e[a]&&e[a].enabled&&!e[a].prevEl&&!e[a].nextEl&&(e[a].auto=!0),["pagination","scrollbar"].indexOf(a)>=0&&e[a]&&e[a].enabled&&!e[a].el&&(e[a].auto=!0),a in e&&"enabled"in i?("object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={enabled:!1}),u(t,s)):u(t,s)):u(t,s)}}const ie={eventsEmitter:O,update:H,translate:N,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e=!0,t){const s=this,{params:a}=s;a.cssMode||(a.autoHeight&&s.updateAutoHeight(),R({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e=!0,t){const s=this,{params:a}=s;s.animating=!1,a.cssMode||(s.setTransition(0),R({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:V,loop:q,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame(()=>{t.__preventObserver__=!1})},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame(()=>{e.__preventObserver__=!1}))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=F.bind(e),e.onTouchMove=W.bind(e),e.onTouchEnd=j.bind(e),e.onDocumentTouchStart=J.bind(e),t.cssMode&&(e.onScroll=Z.bind(e)),e.onClick=K.bind(e),e.onLoad=Q.bind(e),ee(e,"on")},detachEvents:function(){ee(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const l=a(),o="window"!==i.breakpointsBase&&i.breakpointsBase?"container":i.breakpointsBase,d=["window","container"].includes(i.breakpointsBase)||!i.breakpointsBase?e.el:l.querySelector(i.breakpointsBase),c=e.getBreakpoint(n,o,d);if(!c||e.currentBreakpoint===c)return;const p=(c in n?n[c]:void 0)||e.originalParams,m=te(e,i),h=te(e,p),f=e.params.grabCursor,g=p.grabCursor,v=i.enabled;m&&!h?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!m&&h&&(r.classList.add(`${i.containerModifierClass}grid`),(p.grid.fill&&"column"===p.grid.fill||!p.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),f&&!g?e.unsetGrabCursor():!f&&g&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach(t=>{if(void 0===p[t])return;const s=i[t]&&i[t].enabled,a=p[t]&&p[t].enabled;s&&!a&&e[t].disable(),!s&&a&&e[t].enable()});const w=p.direction&&p.direction!==i.direction,b=i.loop&&(p.slidesPerView!==i.slidesPerView||w),y=i.loop;w&&s&&e.changeDirection(),u(e.params,p);const E=e.params.enabled,x=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),v&&!E?e.disable():!v&&E&&e.enable(),e.currentBreakpoint=c,e.emit("_beforeBreakpoint",p),s&&(b?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!y&&x?(e.loopCreate(t),e.updateSlides()):y&&!x&&e.loopDestroy()),e.emit("breakpoint",p)},getBreakpoint:function(e,t="window",s){if(!e||"container"===t&&!s)return;let a=!1;const i=r(),n="window"===t?i.innerHeight:s.clientHeight,l=Object.keys(e).map(e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}});l.sort((e,t)=>parseInt(e.value,10)-parseInt(t.value,10));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:a,el:i,device:r}=e,n=function(e,t){const s=[];return e.forEach(e=>{"object"==typeof e?Object.keys(e).forEach(a=>{e[a]&&s.push(t+a)}):"string"==typeof e&&s.push(t+e)}),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:a},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),i.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},re={};class ne{constructor(...e){let t,s;1===e.length&&e[0].constructor&&"Object"===Object.prototype.toString.call(e[0]).slice(8,-1)?s=e[0]:[t,s]=e,s||(s={}),s=u({},s),t&&!s.el&&(s.el=t);const i=a();if(s.el&&"string"==typeof s.el&&i.querySelectorAll(s.el).length>1){const e=[];return i.querySelectorAll(s.el).forEach(t=>{const a=u({},s,{el:t});e.push(new ne(a))}),e}const r=this;r.__swiper__=!0,r.support=A(),r.device=$({userAgent:s.userAgent}),r.browser=k(),r.eventsListeners={},r.eventsAnyListeners=[],r.modules=[...r.__modules__],s.modules&&Array.isArray(s.modules)&&s.modules.forEach(e=>{"function"==typeof e&&r.modules.indexOf(e)<0&&r.modules.push(e)});const n={};r.modules.forEach(e=>{e({params:s,swiper:r,extendParams:ae(s,n),on:r.on.bind(r),once:r.once.bind(r),off:r.off.bind(r),emit:r.emit.bind(r)})});const l=u({},se,n);return r.params=u({},l,re,s),r.originalParams=u({},r.params),r.passedParams=u({},s),r.params&&r.params.on&&Object.keys(r.params.on).forEach(e=>{r.on(e,r.params.on[e])}),r.params&&r.params.onAny&&r.onAny(r.params.onAny),Object.assign(r,{enabled:r.params.enabled,el:t,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===r.params.direction,isVertical:()=>"vertical"===r.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:r.params.allowSlideNext,allowSlidePrev:r.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:r.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:r.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),r.emit("_swiper"),r.params.init&&r.init(),r}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,a=E(g(t,`.${s.slideClass}, swiper-slide`)[0]);return E(e)-a}getSlideIndexByData(e){return this.getSlideIndex(this.slides.find(t=>1*t.getAttribute("data-swiper-slide-index")===e))}getSlideIndexWhenGrid(e){return this.grid&&this.params.grid&&this.params.grid.rows>1&&("column"===this.params.grid.fill?e=Math.floor(e/this.params.grid.rows):"row"===this.params.grid.fill&&(e%=Math.ceil(this.slides.length/this.params.grid.rows))),e}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=g(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const a=s.minTranslate(),i=(s.maxTranslate()-a)*e+a;s.translateTo(i,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter(t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter(e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass)).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach(s=>{const a=e.getSlideClasses(s);t.push({slideEl:s,classNames:a}),e.emit("_slideClass",s,a)}),e.emit("_slideClasses",t)}slidesPerViewDynamic(e="current",t=!1){const{params:s,slides:a,slidesGrid:i,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=a[l]?Math.ceil(a[l].swiperSlideSize):0;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){i[l]-i[e]{t.complete&&X(e,t)}),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)a(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;i=e.slideTo(t.length-1,0,!1,!0)}else i=e.slideTo(e.activeIndex,0,!1,!0);i||a()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t=!0){const s=this,a=s.params.direction;return e||(e="horizontal"===a?"vertical":"horizontal"),e===a||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${a}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach(t=>{"vertical"===e?t.style.width="":t.style.height=""}),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const a=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let i=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(a())}return g(s,a())[0]})();return!i&&t.params.createElements&&(i=w("div",t.params.wrapperClass),s.append(i),g(s,`.${t.params.slideClass}`).forEach(e=>{i.append(e)})),Object.assign(t,{el:s,wrapperEl:i,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:i,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===y(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===y(s,"direction")),wrongRTL:"-webkit-box"===y(i,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(void 0,!0),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach(e=>{e.complete?X(t,e):e.addEventListener("load",e=>{X(t,e.target)})}),Y(t),t.initialized=!0,Y(t),t.emit("init"),t.emit("afterInit"),t}destroy(e=!0,t=!0){const s=this,{params:a,el:i,wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),a.loop&&s.loopDestroy(),t&&(s.removeClasses(),i&&"string"!=typeof i&&i.removeAttribute("style"),r&&r.removeAttribute("style"),n&&n.length&&n.forEach(e=>{e.classList.remove(a.slideVisibleClass,a.slideFullyVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")})),s.emit("destroy"),Object.keys(s.eventsListeners).forEach(e=>{s.off(e)}),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),function(e){const t=e;Object.keys(t).forEach(e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}})}(s)),s.destroyed=!0),null}static extendDefaults(e){u(re,e)}static get extendedDefaults(){return re}static get defaults(){return se}static installModule(e){ne.prototype.__modules__||(ne.prototype.__modules__=[]);const t=ne.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach(e=>ne.installModule(e)),ne):(ne.installModule(e),ne)}}function le(e,t,s,a){return e.params.createElements&&Object.keys(a).forEach(i=>{if(!s[i]&&!0===s.auto){let r=g(e.el,`.${a[i]}`)[0];r||(r=w("div",a[i]),r.className=a[i],e.el.append(r)),s[i]=r,t[i]=r}}),s}Object.keys(ie).forEach(e=>{Object.keys(ie[e]).forEach(t=>{ne.prototype[t]=ie[e][t]})}),ne.use([function({swiper:e,on:t,emit:s}){const a=r();let i=null,n=null;const l=()=>{e&&!e.destroyed&&e.initialized&&(s("beforeResize"),s("resize"))},o=()=>{e&&!e.destroyed&&e.initialized&&s("orientationchange")};t("init",()=>{e.params.resizeObserver&&void 0!==a.ResizeObserver?e&&!e.destroyed&&e.initialized&&(i=new ResizeObserver(t=>{n=a.requestAnimationFrame(()=>{const{width:s,height:a}=e;let i=s,r=a;t.forEach(({contentBoxSize:t,contentRect:s,target:a})=>{a&&a!==e.el||(i=s?s.width:(t[0]||t).inlineSize,r=s?s.height:(t[0]||t).blockSize)}),i===s&&r===a||l()})}),i.observe(e.el)):(a.addEventListener("resize",l),a.addEventListener("orientationchange",o))}),t("destroy",()=>{n&&a.cancelAnimationFrame(n),i&&i.unobserve&&e.el&&(i.unobserve(e.el),i=null),a.removeEventListener("resize",l),a.removeEventListener("orientationchange",o)})},function({swiper:e,extendParams:t,on:s,emit:a}){const i=[],n=r(),l=(t,s={})=>{const r=new(n.MutationObserver||n.WebkitMutationObserver)(t=>{if(e.__preventObserver__)return;if(1===t.length)return void a("observerUpdate",t[0]);const s=function(){a("observerUpdate",t[0])};n.requestAnimationFrame?n.requestAnimationFrame(s):n.setTimeout(s,0)});r.observe(t,{attributes:void 0===s.attributes||s.attributes,childList:e.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),i.push(r)};t({observer:!1,observeParents:!1,observeSlideChildren:!1}),s("init",()=>{if(e.params.observer){if(e.params.observeParents){const t=x(e.hostEl);for(let e=0;e{i.forEach(e=>{e.disconnect()}),i.splice(0,i.length)})}]);const oe='';function de(e=""){return`.${e.trim().replace(/([\.:!+\/()[\]#>~*^$|=,'"@{}\\])/g,"\\$1").replace(/ /g,".")}`}function ce(e){const t=this,{params:s,slidesEl:a}=t;s.loop&&t.loopDestroy();const i=e=>{if("string"==typeof e){const t=document.createElement("div");P(t,e),a.append(t.children[0]),P(t,"")}else a.append(e)};if("object"==typeof e&&"length"in e)for(let t=0;t{if("string"==typeof e){const t=document.createElement("div");P(t,e),i.prepend(t.children[0]),P(t,"")}else i.prepend(e)};if("object"==typeof e&&"length"in e){for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides[t];e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else r.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)}),a("setTranslate _virtualUpdated",()=>{s.params.effect===t&&i()}),a("setTransition",(e,a)=>{s.params.effect===t&&r(a)}),a("transitionEnd",()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.forEach(e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(e=>e.remove())}),o()}}),a("virtualUpdate",()=>{s.params.effect===t&&(s.slides.length||(c=!0),requestAnimationFrame(()=>{c&&s.slides&&s.slides.length&&(i(),c=!1)}))})}function ge(e,t){const s=f(t);return s!==t&&(s.style.backfaceVisibility="hidden",s.style["-webkit-backface-visibility"]="hidden"),s}function ve({swiper:e,duration:t,transformElements:s,allSlides:a}){const{activeIndex:i}=e;if(e.params.virtualTranslate&&0!==t){let t,r=!1;t=a?s:s.filter(t=>{const s=t.classList.contains("swiper-slide-transform")?(t=>{if(!t.parentElement)return e.slides.find(e=>e.shadowRoot&&e.shadowRoot===t.parentNode);return t.parentElement})(t):t;return e.getSlideIndex(s)===i}),t.forEach(t=>{S(t,()=>{if(r)return;if(!e||e.destroyed)return;r=!0,e.animating=!1;const t=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});e.wrapperEl.dispatchEvent(t)})})}}function we(e,t,s){const a=`swiper-slide-shadow${s?`-${s}`:""}${e?` swiper-slide-shadow-${e}`:""}`,i=f(t);let r=i.querySelector(`.${a.split(" ").join(".")}`);return r||(r=w("div",a.split(" ")),i.append(r)),r}const be=[function({swiper:e,extendParams:t,on:s,emit:i}){let r;t({virtual:{enabled:!1,slides:[],cache:!0,slidesPerViewAutoSlideSize:320,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const n=a();e.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const l=n.createElement("div");function o(t,s){const a=e.params.virtual;if(a.cache&&e.virtual.cache[s])return e.virtual.cache[s];let i;return a.renderSlide?(i=a.renderSlide.call(e,t,s),"string"==typeof i&&(P(l,i),i=l.children[0])):i=e.isElement?w("swiper-slide"):w("div",e.params.slideClass),i.setAttribute("data-swiper-slide-index",s),a.renderSlide||P(i,t),a.cache&&(e.virtual.cache[s]=i),i}function d(t,s,a){const{slidesPerGroup:r,centeredSlides:n,slidesPerView:l,loop:d,initialSlide:c}=e.params;if(s&&!d&&c>0)return;const{addSlidesBefore:p,addSlidesAfter:u,slidesPerViewAutoSlideSize:m}=e.params.virtual,{from:h,to:f,slides:v,slidesGrid:w,offset:b}=e.virtual;e.params.cssMode||e.updateActiveIndex();const y=void 0===a?e.activeIndex||0:a;let E,x,S,T;if(E=e.rtlTranslate?"right":e.isHorizontal()?"left":"top","auto"===l)if(m){let t=e.size;t||(t=e.isHorizontal()?e.el.getBoundingClientRect().width:e.el.getBoundingClientRect().height),x=Math.max(1,Math.ceil(t/m))}else x=1;else x=l;n?(S=Math.floor(x/2)+r+u,T=Math.floor(x/2)+r+p):(S=x+(r-1)+u,T=(d?x:r)+p);let M=y-T,C=y+S;d||(M=Math.max(M,0),C=Math.min(C,v.length-1));let P=(e.slidesGrid[M]||0)-(e.slidesGrid[0]||0);function L(){e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),i("virtualUpdate")}if(d&&y>=T?(M-=T,n||(P+=e.slidesGrid[0])):d&&y{t.style[E]=P-Math.abs(e.cssOverflowAdjustment())+"px"}),e.updateProgress(),void i("virtualUpdate");if(e.params.virtual.renderExternal)return e.params.virtual.renderExternal.call(e,{offset:P,from:M,to:C,slides:function(){const e=[];for(let t=M;t<=C;t+=1)e.push(v[t]);return e}()}),void(e.params.virtual.renderExternalUpdate?L():i("virtualUpdate"));const I=[],z=[],A=e=>{let t=e;return e<0?t=v.length+e:t>=v.length&&(t-=v.length),t};if(t)e.slides.filter(t=>t.matches(`.${e.params.slideClass}, swiper-slide`)).forEach(e=>{e.remove()});else for(let t=h;t<=f;t+=1)if(tC){const s=A(t);e.slides.filter(t=>t.matches(`.${e.params.slideClass}[data-swiper-slide-index="${s}"], swiper-slide[data-swiper-slide-index="${s}"]`)).forEach(e=>{e.remove()})}const $=d?-v.length:0,k=d?2*v.length:v.length;for(let e=$;e=M&&e<=C){const s=A(e);void 0===f||t?z.push(s):(e>f&&z.push(s),e{e.slidesEl.append(o(v[t],t))}),d)for(let t=I.length-1;t>=0;t-=1){const s=I[t];e.slidesEl.prepend(o(v[s],s))}else I.sort((e,t)=>t-e),I.forEach(t=>{e.slidesEl.prepend(o(v[t],t))});g(e.slidesEl,".swiper-slide, swiper-slide").forEach(t=>{t.style[E]=P-Math.abs(e.cssOverflowAdjustment())+"px"}),L()}s("beforeInit",()=>{if(!e.params.virtual.enabled)return;let t;if(void 0===e.passedParams.virtual.slides){const s=[...e.slidesEl.children].filter(t=>t.matches(`.${e.params.slideClass}, swiper-slide`));s&&s.length&&(e.virtual.slides=[...s],t=!0,s.forEach((t,s)=>{t.setAttribute("data-swiper-slide-index",s),e.virtual.cache[s]=t,t.remove()}))}t||(e.virtual.slides=e.params.virtual.slides),e.classNames.push(`${e.params.containerModifierClass}virtual`),e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0,d(!1,!0)}),s("setTranslate",()=>{e.params.virtual.enabled&&(e.params.cssMode&&!e._immediateVirtual?(clearTimeout(r),r=setTimeout(()=>{d()},100)):d())}),s("init update resize",()=>{e.params.virtual.enabled&&e.params.cssMode&&m(e.wrapperEl,"--swiper-virtual-size",`${e.virtualSize}px`)}),Object.assign(e.virtual,{appendSlide:function(t){if("object"==typeof t&&"length"in t)for(let s=0;s{const a=t[e],r=a.getAttribute("data-swiper-slide-index");r&&a.setAttribute("data-swiper-slide-index",parseInt(r,10)+i),s[parseInt(e,10)+i]=a}),e.virtual.cache=s}d(!0),e.slideTo(a,0)},removeSlide:function(t){if(null==t)return;let s=e.activeIndex;if(Array.isArray(t))for(let a=t.length-1;a>=0;a-=1)e.params.virtual.cache&&(delete e.virtual.cache[t[a]],Object.keys(e.virtual.cache).forEach(s=>{s>t&&(e.virtual.cache[s-1]=e.virtual.cache[s],e.virtual.cache[s-1].setAttribute("data-swiper-slide-index",s-1),delete e.virtual.cache[s])})),e.virtual.slides.splice(t[a],1),t[a]{s>t&&(e.virtual.cache[s-1]=e.virtual.cache[s],e.virtual.cache[s-1].setAttribute("data-swiper-slide-index",s-1),delete e.virtual.cache[s])})),e.virtual.slides.splice(t,1),t0&&0===x(e.el,`.${e.params.slideActiveClass}`).length)return;const a=e.el,i=a.clientWidth,r=a.clientHeight,n=l.innerWidth,o=l.innerHeight,d=b(a);s&&(d.left-=a.scrollLeft);const c=[[d.left,d.top],[d.left+i,d.top],[d.left,d.top+r],[d.left+i,d.top+r]];for(let e=0;e=0&&s[0]<=n&&s[1]>=0&&s[1]<=o){if(0===s[0]&&0===s[1])continue;t=!0}}if(!t)return}const f=e.params.keyboard.speed;e.isHorizontal()?((d||c||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&e.slideNext(f),((d||p)&&!s||(c||u)&&s)&&e.slidePrev(f)):((d||c||m||h)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(c||h)&&e.slideNext(f),(d||m)&&e.slidePrev(f)),i("keyPress",r)}function d(){e.keyboard.enabled||(n.addEventListener("keydown",o),e.keyboard.enabled=!0)}function c(){e.keyboard.enabled&&(n.removeEventListener("keydown",o),e.keyboard.enabled=!1)}e.keyboard={enabled:!1},t({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0,speed:void 0}}),s("init",()=>{e.params.keyboard.enabled&&d()}),s("destroy",()=>{e.keyboard.enabled&&c()}),Object.assign(e.keyboard,{enable:d,disable:c})},function({swiper:e,extendParams:t,on:s,emit:a}){const i=r();let n;t({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),e.mousewheel={enabled:!1};let d,c=o();const p=[];function u(){e.enabled&&(e.mouseEntered=!0)}function m(){e.enabled&&(e.mouseEntered=!1)}function h(t){return!(e.params.mousewheel.thresholdDelta&&t.delta=6&&o()-c<60||(t.direction<0?e.isEnd&&!e.params.loop||e.animating||(e.slideNext(),a("scroll",t.raw)):e.isBeginning&&!e.params.loop||e.animating||(e.slidePrev(),a("scroll",t.raw)),c=(new i.Date).getTime(),!1)))}function f(t){let s=t,i=!0;if(!e.enabled)return;if(t.target.closest(`.${e.params.mousewheel.noMousewheelClass}`))return;const r=e.params.mousewheel;e.params.cssMode&&s.preventDefault();let c=e.el;"container"!==e.params.mousewheel.eventsTarget&&(c=document.querySelector(e.params.mousewheel.eventsTarget));const u=c&&c.contains(s.target);if(!e.mouseEntered&&!u&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let m=0;const f=e.rtlTranslate?-1:1,g=function(e){let t=0,s=0,a=0,i=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),a=10*t,i=10*s,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(a=e.deltaX),e.shiftKey&&!a&&(a=i,i=0),(a||i)&&e.deltaMode&&(1===e.deltaMode?(a*=40,i*=40):(a*=800,i*=800)),a&&!t&&(t=a<1?-1:1),i&&!s&&(s=i<1?-1:1),{spinX:t,spinY:s,pixelX:a,pixelY:i}}(s);if(r.forceToAxis)if(e.isHorizontal()){if(!(Math.abs(g.pixelX)>Math.abs(g.pixelY)))return!0;m=-g.pixelX*f}else{if(!(Math.abs(g.pixelY)>Math.abs(g.pixelX)))return!0;m=-g.pixelY}else m=Math.abs(g.pixelX)>Math.abs(g.pixelY)?-g.pixelX*f:-g.pixelY;if(0===m)return!0;r.invert&&(m=-m);let v=e.getTranslate()+m*r.sensitivity;if(v>=e.minTranslate()&&(v=e.minTranslate()),v<=e.maxTranslate()&&(v=e.maxTranslate()),i=!!e.params.loop||!(v===e.minTranslate()||v===e.maxTranslate()),i&&e.params.nested&&s.stopPropagation(),e.params.freeMode&&e.params.freeMode.enabled){const t={time:o(),delta:Math.abs(m),direction:Math.sign(m)},i=d&&t.time=e.minTranslate()&&(o=e.minTranslate()),o<=e.maxTranslate()&&(o=e.maxTranslate()),e.setTransition(0),e.setTranslate(o),e.updateProgress(),e.updateActiveIndex(),e.updateSlidesClasses(),(!c&&e.isBeginning||!u&&e.isEnd)&&e.updateSlidesClasses(),e.params.loop&&e.loopFix({direction:t.direction<0?"next":"prev",byMousewheel:!0}),e.params.freeMode.sticky){clearTimeout(n),n=void 0,p.length>=15&&p.shift();const s=p.length?p[p.length-1]:void 0,a=p[0];if(p.push(t),s&&(t.delta>s.delta||t.direction!==s.direction))p.splice(0);else if(p.length>=15&&t.time-a.time<500&&a.delta-t.delta>=1&&t.delta<=6){const s=m>0?.8:.2;d=t,p.splice(0),n=l(()=>{!e.destroyed&&e.params&&e.slideToClosest(e.params.speed,!0,void 0,s)},0)}n||(n=l(()=>{if(e.destroyed||!e.params)return;d=t,p.splice(0),e.slideToClosest(e.params.speed,!0,void 0,.5)},500))}if(i||a("scroll",s),e.params.autoplay&&e.params.autoplay.disableOnInteraction&&e.autoplay.stop(),r.releaseOnEdges&&(o===e.minTranslate()||o===e.maxTranslate()))return!0}}else{const s={time:o(),delta:Math.abs(m),direction:Math.sign(m),raw:t};p.length>=2&&p.shift();const a=p.length?p[p.length-1]:void 0;if(p.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&h(s):h(s),function(t){const s=e.params.mousewheel;if(t.direction<0){if(e.isEnd&&!e.params.loop&&s.releaseOnEdges)return!0}else if(e.isBeginning&&!e.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function g(t){let s=e.el;"container"!==e.params.mousewheel.eventsTarget&&(s=document.querySelector(e.params.mousewheel.eventsTarget)),s[t]("mouseenter",u),s[t]("mouseleave",m),s[t]("wheel",f)}function v(){return e.params.cssMode?(e.wrapperEl.removeEventListener("wheel",f),!0):!e.mousewheel.enabled&&(g("addEventListener"),e.mousewheel.enabled=!0,!0)}function w(){return e.params.cssMode?(e.wrapperEl.addEventListener(event,f),!0):!!e.mousewheel.enabled&&(g("removeEventListener"),e.mousewheel.enabled=!1,!0)}s("init",()=>{!e.params.mousewheel.enabled&&e.params.cssMode&&w(),e.params.mousewheel.enabled&&v()}),s("destroy",()=>{e.params.cssMode&&v(),e.mousewheel.enabled&&w()}),Object.assign(e.mousewheel,{enable:v,disable:w})},function({swiper:e,extendParams:t,on:s,emit:a}){function i(t){let s;return t&&"string"==typeof t&&e.isElement&&(s=e.el.querySelector(t)||e.hostEl.querySelector(t),s)?s:(t&&("string"==typeof t&&(s=[...document.querySelectorAll(t)]),e.params.uniqueNavElements&&"string"==typeof t&&s&&s.length>1&&1===e.el.querySelectorAll(t).length?s=e.el.querySelector(t):s&&1===s.length&&(s=s[0])),t&&!s?t:s)}function r(t,s){const a=e.params.navigation;(t=M(t)).forEach(t=>{t&&(t.classList[s?"add":"remove"](...a.disabledClass.split(" ")),"BUTTON"===t.tagName&&(t.disabled=s),e.params.watchOverflow&&e.enabled&&t.classList[e.isLocked?"add":"remove"](a.lockClass))})}function n(){const{nextEl:t,prevEl:s}=e.navigation;if(e.params.loop)return r(s,!1),void r(t,!1);r(s,e.isBeginning&&!e.params.rewind),r(t,e.isEnd&&!e.params.rewind)}function l(t){t.preventDefault(),(!e.isBeginning||e.params.loop||e.params.rewind)&&(e.slidePrev(),a("navigationPrev"))}function o(t){t.preventDefault(),(!e.isEnd||e.params.loop||e.params.rewind)&&(e.slideNext(),a("navigationNext"))}function d(){const t=e.params.navigation;if(e.params.navigation=le(e,e.originalParams.navigation,e.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!t.nextEl&&!t.prevEl)return;let s=i(t.nextEl),a=i(t.prevEl);Object.assign(e.navigation,{nextEl:s,prevEl:a}),s=M(s),a=M(a);const r=(s,a)=>{if(s){if(t.addIcons&&s.matches(".swiper-button-next,.swiper-button-prev")&&!s.querySelector("svg")){const e=document.createElement("div");P(e,oe),s.appendChild(e.querySelector("svg")),e.remove()}s.addEventListener("click","next"===a?o:l)}!e.enabled&&s&&s.classList.add(...t.lockClass.split(" "))};s.forEach(e=>r(e,"next")),a.forEach(e=>r(e,"prev"))}function c(){let{nextEl:t,prevEl:s}=e.navigation;t=M(t),s=M(s);const a=(t,s)=>{t.removeEventListener("click","next"===s?o:l),t.classList.remove(...e.params.navigation.disabledClass.split(" "))};t.forEach(e=>a(e,"next")),s.forEach(e=>a(e,"prev"))}t({navigation:{nextEl:null,prevEl:null,addIcons:!0,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),e.navigation={nextEl:null,prevEl:null,arrowSvg:oe},s("init",()=>{!1===e.params.navigation.enabled?p():(d(),n())}),s("toEdge fromEdge lock unlock",()=>{n()}),s("destroy",()=>{c()}),s("enable disable",()=>{let{nextEl:t,prevEl:s}=e.navigation;t=M(t),s=M(s),e.enabled?n():[...t,...s].filter(e=>!!e).forEach(t=>t.classList.add(e.params.navigation.lockClass))}),s("click",(t,s)=>{let{nextEl:i,prevEl:r}=e.navigation;i=M(i),r=M(r);const n=s.target;let l=r.includes(n)||i.includes(n);if(e.isElement&&!l){const e=s.path||s.composedPath&&s.composedPath();e&&(l=e.find(e=>i.includes(e)||r.includes(e)))}if(e.params.navigation.hideOnClick&&!l){if(e.pagination&&e.params.pagination&&e.params.pagination.clickable&&(e.pagination.el===n||e.pagination.el.contains(n)))return;let t;i.length?t=i[0].classList.contains(e.params.navigation.hiddenClass):r.length&&(t=r[0].classList.contains(e.params.navigation.hiddenClass)),a(!0===t?"navigationShow":"navigationHide"),[...i,...r].filter(e=>!!e).forEach(t=>t.classList.toggle(e.params.navigation.hiddenClass))}});const p=()=>{e.el.classList.add(...e.params.navigation.navigationDisabledClass.split(" ")),c()};Object.assign(e.navigation,{enable:()=>{e.el.classList.remove(...e.params.navigation.navigationDisabledClass.split(" ")),d(),n()},disable:p,update:n,init:d,destroy:c})},function({swiper:e,extendParams:t,on:s,emit:a}){const i="swiper-pagination";let r;t({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${i}-bullet`,bulletActiveClass:`${i}-bullet-active`,modifierClass:`${i}-`,currentClass:`${i}-current`,totalClass:`${i}-total`,hiddenClass:`${i}-hidden`,progressbarFillClass:`${i}-progressbar-fill`,progressbarOppositeClass:`${i}-progressbar-opposite`,clickableClass:`${i}-clickable`,lockClass:`${i}-lock`,horizontalClass:`${i}-horizontal`,verticalClass:`${i}-vertical`,paginationDisabledClass:`${i}-disabled`}}),e.pagination={el:null,bullets:[]};let n=0;function l(){return!e.params.pagination.el||!e.pagination.el||Array.isArray(e.pagination.el)&&0===e.pagination.el.length}function o(t,s){const{bulletActiveClass:a}=e.params.pagination;t&&(t=t[("prev"===s?"previous":"next")+"ElementSibling"])&&(t.classList.add(`${a}-${s}`),(t=t[("prev"===s?"previous":"next")+"ElementSibling"])&&t.classList.add(`${a}-${s}-${s}`))}function d(t){const s=t.target.closest(de(e.params.pagination.bulletClass));if(!s)return;t.preventDefault();const a=E(s)*e.params.slidesPerGroup;if(e.params.loop){if(e.realIndex===a)return;const t=(i=e.realIndex,r=a,n=e.slides.length,(r%=n)===1+(i%=n)?"next":r===i-1?"previous":void 0);"next"===t?e.slideNext():"previous"===t?e.slidePrev():e.slideToLoop(a)}else e.slideTo(a);var i,r,n}function c(){const t=e.rtl,s=e.params.pagination;if(l())return;let i,d,c=e.pagination.el;c=M(c);const p=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,u=e.params.loop?Math.ceil(p/e.params.slidesPerGroup):e.snapGrid.length;if(e.params.loop?(d=e.previousRealIndex||0,i=e.params.slidesPerGroup>1?Math.floor(e.realIndex/e.params.slidesPerGroup):e.realIndex):void 0!==e.snapIndex?(i=e.snapIndex,d=e.previousSnapIndex):(d=e.previousIndex||0,i=e.activeIndex||0),"bullets"===s.type&&e.pagination.bullets&&e.pagination.bullets.length>0){const a=e.pagination.bullets;let l,p,u;if(s.dynamicBullets&&(r=T(a[0],e.isHorizontal()?"width":"height",!0),c.forEach(t=>{t.style[e.isHorizontal()?"width":"height"]=r*(s.dynamicMainBullets+4)+"px"}),s.dynamicMainBullets>1&&void 0!==d&&(n+=i-(d||0),n>s.dynamicMainBullets-1?n=s.dynamicMainBullets-1:n<0&&(n=0)),l=Math.max(i-n,0),p=l+(Math.min(a.length,s.dynamicMainBullets)-1),u=(p+l)/2),a.forEach(e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map(e=>`${s.bulletActiveClass}${e}`)].map(e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e).flat();e.classList.remove(...t)}),c.length>1)a.forEach(t=>{const a=E(t);a===i?t.classList.add(...s.bulletActiveClass.split(" ")):e.isElement&&t.setAttribute("part","bullet"),s.dynamicBullets&&(a>=l&&a<=p&&t.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),a===l&&o(t,"prev"),a===p&&o(t,"next"))});else{const t=a[i];if(t&&t.classList.add(...s.bulletActiveClass.split(" ")),e.isElement&&a.forEach((e,t)=>{e.setAttribute("part",t===i?"bullet-active":"bullet")}),s.dynamicBullets){const e=a[l],t=a[p];for(let e=l;e<=p;e+=1)a[e]&&a[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));o(e,"prev"),o(t,"next")}}if(s.dynamicBullets){const i=Math.min(a.length,s.dynamicMainBullets+4),n=(r*i-r)/2-u*r,l=t?"right":"left";a.forEach(t=>{t.style[e.isHorizontal()?l:"top"]=`${n}px`})}}c.forEach((t,r)=>{if("fraction"===s.type&&(t.querySelectorAll(de(s.currentClass)).forEach(e=>{e.textContent=s.formatFractionCurrent(i+1)}),t.querySelectorAll(de(s.totalClass)).forEach(e=>{e.textContent=s.formatFractionTotal(u)})),"progressbar"===s.type){let a;a=s.progressbarOpposite?e.isHorizontal()?"vertical":"horizontal":e.isHorizontal()?"horizontal":"vertical";const r=(i+1)/u;let n=1,l=1;"horizontal"===a?n=r:l=r,t.querySelectorAll(de(s.progressbarFillClass)).forEach(t=>{t.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,t.style.transitionDuration=`${e.params.speed}ms`})}"custom"===s.type&&s.renderCustom?(P(t,s.renderCustom(e,i+1,u)),0===r&&a("paginationRender",t)):(0===r&&a("paginationRender",t),a("paginationUpdate",t)),e.params.watchOverflow&&e.enabled&&t.classList[e.isLocked?"add":"remove"](s.lockClass)})}function p(){const t=e.params.pagination;if(l())return;const s=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.grid&&e.params.grid.rows>1?e.slides.length/Math.ceil(e.params.grid.rows):e.slides.length;let i=e.pagination.el;i=M(i);let r="";if("bullets"===t.type){let a=e.params.loop?Math.ceil(s/e.params.slidesPerGroup):e.snapGrid.length;e.params.freeMode&&e.params.freeMode.enabled&&a>s&&(a=s);for(let s=0;s`}"fraction"===t.type&&(r=t.renderFraction?t.renderFraction.call(e,t.currentClass,t.totalClass):` / `),"progressbar"===t.type&&(r=t.renderProgressbar?t.renderProgressbar.call(e,t.progressbarFillClass):``),e.pagination.bullets=[],i.forEach(s=>{"custom"!==t.type&&P(s,r||""),"bullets"===t.type&&e.pagination.bullets.push(...s.querySelectorAll(de(t.bulletClass)))}),"custom"!==t.type&&a("paginationRender",i[0])}function u(){e.params.pagination=le(e,e.originalParams.pagination,e.params.pagination,{el:"swiper-pagination"});const t=e.params.pagination;if(!t.el)return;let s;"string"==typeof t.el&&e.isElement&&(s=e.el.querySelector(t.el)),s||"string"!=typeof t.el||(s=[...document.querySelectorAll(t.el)]),s||(s=t.el),s&&0!==s.length&&(e.params.uniqueNavElements&&"string"==typeof t.el&&Array.isArray(s)&&s.length>1&&(s=[...e.el.querySelectorAll(t.el)],s.length>1&&(s=s.find(t=>x(t,".swiper")[0]===e.el))),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(e.pagination,{el:s}),s=M(s),s.forEach(s=>{"bullets"===t.type&&t.clickable&&s.classList.add(...(t.clickableClass||"").split(" ")),s.classList.add(t.modifierClass+t.type),s.classList.add(e.isHorizontal()?t.horizontalClass:t.verticalClass),"bullets"===t.type&&t.dynamicBullets&&(s.classList.add(`${t.modifierClass}${t.type}-dynamic`),n=0,t.dynamicMainBullets<1&&(t.dynamicMainBullets=1)),"progressbar"===t.type&&t.progressbarOpposite&&s.classList.add(t.progressbarOppositeClass),t.clickable&&s.addEventListener("click",d),e.enabled||s.classList.add(t.lockClass)}))}function m(){const t=e.params.pagination;if(l())return;let s=e.pagination.el;s&&(s=M(s),s.forEach(s=>{s.classList.remove(t.hiddenClass),s.classList.remove(t.modifierClass+t.type),s.classList.remove(e.isHorizontal()?t.horizontalClass:t.verticalClass),t.clickable&&(s.classList.remove(...(t.clickableClass||"").split(" ")),s.removeEventListener("click",d))})),e.pagination.bullets&&e.pagination.bullets.forEach(e=>e.classList.remove(...t.bulletActiveClass.split(" ")))}s("changeDirection",()=>{if(!e.pagination||!e.pagination.el)return;const t=e.params.pagination;let{el:s}=e.pagination;s=M(s),s.forEach(s=>{s.classList.remove(t.horizontalClass,t.verticalClass),s.classList.add(e.isHorizontal()?t.horizontalClass:t.verticalClass)})}),s("init",()=>{!1===e.params.pagination.enabled?h():(u(),p(),c())}),s("activeIndexChange",()=>{void 0===e.snapIndex&&c()}),s("snapIndexChange",()=>{c()}),s("snapGridLengthChange",()=>{p(),c()}),s("destroy",()=>{m()}),s("enable disable",()=>{let{el:t}=e.pagination;t&&(t=M(t),t.forEach(t=>t.classList[e.enabled?"remove":"add"](e.params.pagination.lockClass)))}),s("lock unlock",()=>{c()}),s("click",(t,s)=>{const i=s.target,r=M(e.pagination.el);if(e.params.pagination.el&&e.params.pagination.hideOnClick&&r&&r.length>0&&!i.classList.contains(e.params.pagination.bulletClass)){if(e.navigation&&(e.navigation.nextEl&&i===e.navigation.nextEl||e.navigation.prevEl&&i===e.navigation.prevEl))return;const t=r[0].classList.contains(e.params.pagination.hiddenClass);a(!0===t?"paginationShow":"paginationHide"),r.forEach(t=>t.classList.toggle(e.params.pagination.hiddenClass))}});const h=()=>{e.el.classList.add(e.params.pagination.paginationDisabledClass);let{el:t}=e.pagination;t&&(t=M(t),t.forEach(t=>t.classList.add(e.params.pagination.paginationDisabledClass))),m()};Object.assign(e.pagination,{enable:()=>{e.el.classList.remove(e.params.pagination.paginationDisabledClass);let{el:t}=e.pagination;t&&(t=M(t),t.forEach(t=>t.classList.remove(e.params.pagination.paginationDisabledClass))),u(),p(),c()},disable:h,render:p,update:c,init:u,destroy:m})},function({swiper:e,extendParams:t,on:s,emit:i}){const r=a();let o,d,c,p,u=!1,m=null,h=null;function f(){if(!e.params.scrollbar.el||!e.scrollbar.el)return;const{scrollbar:t,rtlTranslate:s}=e,{dragEl:a,el:i}=t,r=e.params.scrollbar,n=e.params.loop?e.progressLoop:e.progress;let l=d,o=(c-d)*n;s?(o=-o,o>0?(l=d-o,o=0):-o+d>c&&(l=c+o)):o<0?(l=d+o,o=0):o+d>c&&(l=c-o),e.isHorizontal()?(a.style.transform=`translate3d(${o}px, 0, 0)`,a.style.width=`${l}px`):(a.style.transform=`translate3d(0px, ${o}px, 0)`,a.style.height=`${l}px`),r.hide&&(clearTimeout(m),i.style.opacity=1,m=setTimeout(()=>{i.style.opacity=0,i.style.transitionDuration="400ms"},1e3))}function g(){if(!e.params.scrollbar.el||!e.scrollbar.el)return;const{scrollbar:t}=e,{dragEl:s,el:a}=t;s.style.width="",s.style.height="",c=e.isHorizontal()?a.offsetWidth:a.offsetHeight,p=e.size/(e.virtualSize+e.params.slidesOffsetBefore-(e.params.centeredSlides?e.snapGrid[0]:0)),d="auto"===e.params.scrollbar.dragSize?c*p:parseInt(e.params.scrollbar.dragSize,10),e.isHorizontal()?s.style.width=`${d}px`:s.style.height=`${d}px`,a.style.display=p>=1?"none":"",e.params.scrollbar.hide&&(a.style.opacity=0),e.params.watchOverflow&&e.enabled&&t.el.classList[e.isLocked?"add":"remove"](e.params.scrollbar.lockClass)}function v(t){return e.isHorizontal()?t.clientX:t.clientY}function y(t){const{scrollbar:s,rtlTranslate:a}=e,{el:i}=s;let r;r=(v(t)-b(i)[e.isHorizontal()?"left":"top"]-(null!==o?o:d/2))/(c-d),r=Math.max(Math.min(r,1),0),a&&(r=1-r);const n=e.minTranslate()+(e.maxTranslate()-e.minTranslate())*r;e.updateProgress(n),e.setTranslate(n),e.updateActiveIndex(),e.updateSlidesClasses()}function E(t){const s=e.params.scrollbar,{scrollbar:a,wrapperEl:r}=e,{el:n,dragEl:l}=a;u=!0,o=t.target===l?v(t)-t.target.getBoundingClientRect()[e.isHorizontal()?"left":"top"]:null,t.preventDefault(),t.stopPropagation(),r.style.transitionDuration="100ms",l.style.transitionDuration="100ms",y(t),clearTimeout(h),n.style.transitionDuration="0ms",s.hide&&(n.style.opacity=1),e.params.cssMode&&(e.wrapperEl.style["scroll-snap-type"]="none"),i("scrollbarDragStart",t)}function x(t){const{scrollbar:s,wrapperEl:a}=e,{el:r,dragEl:n}=s;u&&(t.preventDefault&&t.cancelable?t.preventDefault():t.returnValue=!1,y(t),a.style.transitionDuration="0ms",r.style.transitionDuration="0ms",n.style.transitionDuration="0ms",i("scrollbarDragMove",t))}function S(t){const s=e.params.scrollbar,{scrollbar:a,wrapperEl:r}=e,{el:n}=a;u&&(u=!1,e.params.cssMode&&(e.wrapperEl.style["scroll-snap-type"]="",r.style.transitionDuration=""),s.hide&&(clearTimeout(h),h=l(()=>{n.style.opacity=0,n.style.transitionDuration="400ms"},1e3)),i("scrollbarDragEnd",t),s.snapOnRelease&&e.slideToClosest())}function T(t){const{scrollbar:s,params:a}=e,i=s.el;if(!i)return;const n=i,l=!!a.passiveListeners&&{passive:!1,capture:!1},o=!!a.passiveListeners&&{passive:!0,capture:!1};if(!n)return;const d="on"===t?"addEventListener":"removeEventListener";n[d]("pointerdown",E,l),r[d]("pointermove",x,l),r[d]("pointerup",S,o)}function C(){const{scrollbar:t,el:s}=e;e.params.scrollbar=le(e,e.originalParams.scrollbar,e.params.scrollbar,{el:"swiper-scrollbar"});const a=e.params.scrollbar;if(!a.el)return;let i,l;if("string"==typeof a.el&&e.isElement&&(i=e.el.querySelector(a.el)),i||"string"!=typeof a.el)i||(i=a.el);else if(i=r.querySelectorAll(a.el),!i.length)return;e.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.querySelectorAll(a.el).length&&(i=s.querySelector(a.el)),i.length>0&&(i=i[0]),i.classList.add(e.isHorizontal()?a.horizontalClass:a.verticalClass),i&&(l=i.querySelector(de(e.params.scrollbar.dragClass)),l||(l=w("div",e.params.scrollbar.dragClass),i.append(l))),Object.assign(t,{el:i,dragEl:l}),a.draggable&&e.params.scrollbar.el&&e.scrollbar.el&&T("on"),i&&i.classList[e.enabled?"remove":"add"](...n(e.params.scrollbar.lockClass))}function P(){const t=e.params.scrollbar,s=e.scrollbar.el;s&&s.classList.remove(...n(e.isHorizontal()?t.horizontalClass:t.verticalClass)),e.params.scrollbar.el&&e.scrollbar.el&&T("off")}t({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),e.scrollbar={el:null,dragEl:null},s("changeDirection",()=>{if(!e.scrollbar||!e.scrollbar.el)return;const t=e.params.scrollbar;let{el:s}=e.scrollbar;s=M(s),s.forEach(s=>{s.classList.remove(t.horizontalClass,t.verticalClass),s.classList.add(e.isHorizontal()?t.horizontalClass:t.verticalClass)})}),s("init",()=>{!1===e.params.scrollbar.enabled?L():(C(),g(),f())}),s("update resize observerUpdate lock unlock changeDirection",()=>{g()}),s("setTranslate",()=>{f()}),s("setTransition",(t,s)=>{!function(t){e.params.scrollbar.el&&e.scrollbar.el&&(e.scrollbar.dragEl.style.transitionDuration=`${t}ms`)}(s)}),s("enable disable",()=>{const{el:t}=e.scrollbar;t&&t.classList[e.enabled?"remove":"add"](...n(e.params.scrollbar.lockClass))}),s("destroy",()=>{P()});const L=()=>{e.el.classList.add(...n(e.params.scrollbar.scrollbarDisabledClass)),e.scrollbar.el&&e.scrollbar.el.classList.add(...n(e.params.scrollbar.scrollbarDisabledClass)),P()};Object.assign(e.scrollbar,{enable:()=>{e.el.classList.remove(...n(e.params.scrollbar.scrollbarDisabledClass)),e.scrollbar.el&&e.scrollbar.el.classList.remove(...n(e.params.scrollbar.scrollbarDisabledClass)),C(),g(),f()},disable:L,updateSize:g,setTranslate:f,init:C,destroy:P})},function({swiper:e,extendParams:t,on:s}){t({parallax:{enabled:!1}});const a="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",i=(t,s)=>{const{rtl:a}=e,i=a?-1:1,r=t.getAttribute("data-swiper-parallax")||"0";let n=t.getAttribute("data-swiper-parallax-x"),l=t.getAttribute("data-swiper-parallax-y");const o=t.getAttribute("data-swiper-parallax-scale"),d=t.getAttribute("data-swiper-parallax-opacity"),c=t.getAttribute("data-swiper-parallax-rotate");if(n||l?(n=n||"0",l=l||"0"):e.isHorizontal()?(n=r,l="0"):(l=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*s*i+"%":n*s*i+"px",l=l.indexOf("%")>=0?parseInt(l,10)*s+"%":l*s+"px",null!=d){const e=d-(d-1)*(1-Math.abs(s));t.style.opacity=e}let p=`translate3d(${n}, ${l}, 0px)`;if(null!=o){p+=` scale(${o-(o-1)*(1-Math.abs(s))})`}if(c&&null!=c){p+=` rotate(${c*s*-1}deg)`}t.style.transform=p},r=()=>{const{el:t,slides:s,progress:r,snapGrid:n,isElement:l}=e,o=g(t,a);e.isElement&&o.push(...g(e.hostEl,a)),o.forEach(e=>{i(e,r)}),s.forEach((t,s)=>{let l=t.progress;e.params.slidesPerGroup>1&&"auto"!==e.params.slidesPerView&&(l+=Math.ceil(s/2)-r*(n.length-1)),l=Math.min(Math.max(l,-1),1),t.querySelectorAll(`${a}, [data-swiper-parallax-rotate]`).forEach(e=>{i(e,l)})})};s("beforeInit",()=>{e.params.parallax.enabled&&(e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0)}),s("init",()=>{e.params.parallax.enabled&&r()}),s("setTranslate",()=>{e.params.parallax.enabled&&r()}),s("setTransition",(t,s)=>{e.params.parallax.enabled&&((t=e.params.speed)=>{const{el:s,hostEl:i}=e,r=[...s.querySelectorAll(a)];e.isElement&&r.push(...i.querySelectorAll(a)),r.forEach(e=>{let s=parseInt(e.getAttribute("data-swiper-parallax-duration"),10)||t;0===t&&(s=0),e.style.transitionDuration=`${s}ms`})})(s)})},function({swiper:e,extendParams:t,on:s,emit:a}){const i=r();t({zoom:{enabled:!1,limitToOriginalSize:!1,maxRatio:3,minRatio:1,panOnMouseMove:!1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),e.zoom={enabled:!1};let n,l,o=1,c=!1,p=!1,u={x:0,y:0};const m=[],h={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},f={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},v={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let w,y=1;function E(){if(m.length<2)return 1;const e=m[0].pageX,t=m[0].pageY,s=m[1].pageX,a=m[1].pageY;return Math.sqrt((s-e)**2+(a-t)**2)}function S(){const t=e.params.zoom,s=h.imageWrapEl.getAttribute("data-swiper-zoom")||t.maxRatio;if(t.limitToOriginalSize&&h.imageEl&&h.imageEl.naturalWidth){const e=h.imageEl.naturalWidth/h.imageEl.offsetWidth;return Math.min(e,s)}return s}function T(t){const s=e.isElement?"swiper-slide":`.${e.params.slideClass}`;return!!t.target.matches(s)||e.slides.filter(e=>e.contains(t.target)).length>0}function M(t){const s=`.${e.params.zoom.containerClass}`;return!!t.target.matches(s)||[...e.hostEl.querySelectorAll(s)].filter(e=>e.contains(t.target)).length>0}function C(t){if("mouse"===t.pointerType&&m.splice(0,m.length),!T(t))return;const s=e.params.zoom;if(n=!1,l=!1,m.push(t),!(m.length<2)){if(n=!0,h.scaleStart=E(),!h.slideEl){h.slideEl=t.target.closest(`.${e.params.slideClass}, swiper-slide`),h.slideEl||(h.slideEl=e.slides[e.activeIndex]);let a=h.slideEl.querySelector(`.${s.containerClass}`);if(a&&(a=a.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),h.imageEl=a,h.imageWrapEl=a?x(h.imageEl,`.${s.containerClass}`)[0]:void 0,!h.imageWrapEl)return void(h.imageEl=void 0);h.maxRatio=S()}if(h.imageEl){const[e,t]=function(){if(m.length<2)return{x:null,y:null};const e=h.imageEl.getBoundingClientRect();return[(m[0].pageX+(m[1].pageX-m[0].pageX)/2-e.x-i.scrollX)/o,(m[0].pageY+(m[1].pageY-m[0].pageY)/2-e.y-i.scrollY)/o]}();h.originX=e,h.originY=t,h.imageEl.style.transitionDuration="0ms"}c=!0}}function P(t){if(!T(t))return;const s=e.params.zoom,a=e.zoom,i=m.findIndex(e=>e.pointerId===t.pointerId);i>=0&&(m[i]=t),m.length<2||(l=!0,h.scaleMove=E(),h.imageEl&&(a.scale=h.scaleMove/h.scaleStart*o,a.scale>h.maxRatio&&(a.scale=h.maxRatio-1+(a.scale-h.maxRatio+1)**.5),a.scalee.pointerId===t.pointerId);i>=0&&m.splice(i,1),n&&l&&(n=!1,l=!1,h.imageEl&&(a.scale=Math.max(Math.min(a.scale,h.maxRatio),s.minRatio),h.imageEl.style.transitionDuration=`${e.params.speed}ms`,h.imageEl.style.transform=`translate3d(0,0,0) scale(${a.scale})`,o=a.scale,c=!1,a.scale>1&&h.slideEl?h.slideEl.classList.add(`${s.zoomedSlideClass}`):a.scale<=1&&h.slideEl&&h.slideEl.classList.remove(`${s.zoomedSlideClass}`),1===a.scale&&(h.originX=0,h.originY=0,h.slideEl=void 0)))}function I(){e.touchEventsData.preventTouchMoveFromPointerMove=!1}function z(t){const s="mouse"===t.pointerType&&e.params.zoom.panOnMouseMove;if(!T(t)||!M(t))return;const a=e.zoom;if(!h.imageEl)return;if(!f.isTouched||!h.slideEl)return void(s&&$(t));if(s)return void $(t);f.isMoved||(f.width=h.imageEl.offsetWidth||h.imageEl.clientWidth,f.height=h.imageEl.offsetHeight||h.imageEl.clientHeight,f.startX=d(h.imageWrapEl,"x")||0,f.startY=d(h.imageWrapEl,"y")||0,h.slideWidth=h.slideEl.offsetWidth,h.slideHeight=h.slideEl.offsetHeight,h.imageWrapEl.style.transitionDuration="0ms");const i=f.width*a.scale,r=f.height*a.scale;f.minX=Math.min(h.slideWidth/2-i/2,0),f.maxX=-f.minX,f.minY=Math.min(h.slideHeight/2-r/2,0),f.maxY=-f.minY,f.touchesCurrent.x=m.length>0?m[0].pageX:t.pageX,f.touchesCurrent.y=m.length>0?m[0].pageY:t.pageY;if(Math.max(Math.abs(f.touchesCurrent.x-f.touchesStart.x),Math.abs(f.touchesCurrent.y-f.touchesStart.y))>5&&(e.allowClick=!1),!f.isMoved&&!c){if(e.isHorizontal()&&(Math.floor(f.minX)===Math.floor(f.startX)&&f.touchesCurrent.xf.touchesStart.x))return f.isTouched=!1,void I();if(!e.isHorizontal()&&(Math.floor(f.minY)===Math.floor(f.startY)&&f.touchesCurrent.yf.touchesStart.y))return f.isTouched=!1,void I()}t.cancelable&&t.preventDefault(),t.stopPropagation(),clearTimeout(w),e.touchEventsData.preventTouchMoveFromPointerMove=!0,w=setTimeout(()=>{e.destroyed||I()}),f.isMoved=!0;const n=(a.scale-o)/(h.maxRatio-e.params.zoom.minRatio),{originX:l,originY:p}=h;f.currentX=f.touchesCurrent.x-f.touchesStart.x+f.startX+n*(f.width-2*l),f.currentY=f.touchesCurrent.y-f.touchesStart.y+f.startY+n*(f.height-2*p),f.currentXf.maxX&&(f.currentX=f.maxX-1+(f.currentX-f.maxX+1)**.8),f.currentYf.maxY&&(f.currentY=f.maxY-1+(f.currentY-f.maxY+1)**.8),v.prevPositionX||(v.prevPositionX=f.touchesCurrent.x),v.prevPositionY||(v.prevPositionY=f.touchesCurrent.y),v.prevTime||(v.prevTime=Date.now()),v.x=(f.touchesCurrent.x-v.prevPositionX)/(Date.now()-v.prevTime)/2,v.y=(f.touchesCurrent.y-v.prevPositionY)/(Date.now()-v.prevTime)/2,Math.abs(f.touchesCurrent.x-v.prevPositionX)<2&&(v.x=0),Math.abs(f.touchesCurrent.y-v.prevPositionY)<2&&(v.y=0),v.prevPositionX=f.touchesCurrent.x,v.prevPositionY=f.touchesCurrent.y,v.prevTime=Date.now(),h.imageWrapEl.style.transform=`translate3d(${f.currentX}px, ${f.currentY}px,0)`}function A(){const t=e.zoom;h.slideEl&&e.activeIndex!==e.slides.indexOf(h.slideEl)&&(h.imageEl&&(h.imageEl.style.transform="translate3d(0,0,0) scale(1)"),h.imageWrapEl&&(h.imageWrapEl.style.transform="translate3d(0,0,0)"),h.slideEl.classList.remove(`${e.params.zoom.zoomedSlideClass}`),t.scale=1,o=1,h.slideEl=void 0,h.imageEl=void 0,h.imageWrapEl=void 0,h.originX=0,h.originY=0)}function $(e){if(o<=1||!h.imageWrapEl)return;if(!T(e)||!M(e))return;const t=i.getComputedStyle(h.imageWrapEl).transform,s=new i.DOMMatrix(t);if(!p)return p=!0,u.x=e.clientX,u.y=e.clientY,f.startX=s.e,f.startY=s.f,f.width=h.imageEl.offsetWidth||h.imageEl.clientWidth,f.height=h.imageEl.offsetHeight||h.imageEl.clientHeight,h.slideWidth=h.slideEl.offsetWidth,void(h.slideHeight=h.slideEl.offsetHeight);const a=-3*(e.clientX-u.x),r=-3*(e.clientY-u.y),n=f.width*o,l=f.height*o,d=h.slideWidth,c=h.slideHeight,m=Math.min(d/2-n/2,0),g=-m,v=Math.min(c/2-l/2,0),w=-v,b=Math.max(Math.min(f.startX+a,g),m),y=Math.max(Math.min(f.startY+r,w),v);h.imageWrapEl.style.transitionDuration="0ms",h.imageWrapEl.style.transform=`translate3d(${b}px, ${y}px, 0)`,u.x=e.clientX,u.y=e.clientY,f.startX=b,f.startY=y,f.currentX=b,f.currentY=y}function k(t){const s=e.zoom,a=e.params.zoom;if(!h.slideEl){t&&t.target&&(h.slideEl=t.target.closest(`.${e.params.slideClass}, swiper-slide`)),h.slideEl||(e.params.virtual&&e.params.virtual.enabled&&e.virtual?h.slideEl=g(e.slidesEl,`.${e.params.slideActiveClass}`)[0]:h.slideEl=e.slides[e.activeIndex]);let s=h.slideEl.querySelector(`.${a.containerClass}`);s&&(s=s.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),h.imageEl=s,h.imageWrapEl=s?x(h.imageEl,`.${a.containerClass}`)[0]:void 0}if(!h.imageEl||!h.imageWrapEl)return;let r,n,l,d,c,p,u,m,v,w,y,E,T,M,C,P,L,I;h.maxRatio=S(),e.params.cssMode&&(e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.touchAction="none"),h.slideEl.classList.add(`${a.zoomedSlideClass}`),void 0===f.touchesStart.x&&t?(r=t.pageX,n=t.pageY):(r=f.touchesStart.x,n=f.touchesStart.y);const z=o,A="number"==typeof t?t:null;1===o&&A&&(r=void 0,n=void 0,f.touchesStart.x=void 0,f.touchesStart.y=void 0);const $=S();s.scale=A||$,o=A||$,!t||1===o&&A?(u=0,m=0):(L=h.slideEl.offsetWidth,I=h.slideEl.offsetHeight,l=b(h.slideEl).left+i.scrollX,d=b(h.slideEl).top+i.scrollY,c=l+L/2-r,p=d+I/2-n,v=h.imageEl.offsetWidth||h.imageEl.clientWidth,w=h.imageEl.offsetHeight||h.imageEl.clientHeight,y=v*s.scale,E=w*s.scale,T=Math.min(L/2-y/2,0),M=Math.min(I/2-E/2,0),C=-T,P=-M,z>0&&A&&"number"==typeof f.currentX&&"number"==typeof f.currentY?(u=f.currentX*s.scale/z,m=f.currentY*s.scale/z):(u=c*s.scale,m=p*s.scale),uC&&(u=C),mP&&(m=P)),A&&1===s.scale&&(h.originX=0,h.originY=0),f.currentX=u,f.currentY=m,h.imageWrapEl.style.transitionDuration="300ms",h.imageWrapEl.style.transform=`translate3d(${u}px, ${m}px,0)`,h.imageEl.style.transitionDuration="300ms",h.imageEl.style.transform=`translate3d(0,0,0) scale(${s.scale})`}function O(){const t=e.zoom,s=e.params.zoom;if(!h.slideEl){e.params.virtual&&e.params.virtual.enabled&&e.virtual?h.slideEl=g(e.slidesEl,`.${e.params.slideActiveClass}`)[0]:h.slideEl=e.slides[e.activeIndex];let t=h.slideEl.querySelector(`.${s.containerClass}`);t&&(t=t.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),h.imageEl=t,h.imageWrapEl=t?x(h.imageEl,`.${s.containerClass}`)[0]:void 0}h.imageEl&&h.imageWrapEl&&(h.maxRatio=S(),e.params.cssMode&&(e.wrapperEl.style.overflow="",e.wrapperEl.style.touchAction=""),t.scale=1,o=1,f.currentX=void 0,f.currentY=void 0,f.touchesStart.x=void 0,f.touchesStart.y=void 0,h.imageWrapEl.style.transitionDuration="300ms",h.imageWrapEl.style.transform="translate3d(0,0,0)",h.imageEl.style.transitionDuration="300ms",h.imageEl.style.transform="translate3d(0,0,0) scale(1)",h.slideEl.classList.remove(`${s.zoomedSlideClass}`),h.slideEl=void 0,h.originX=0,h.originY=0,e.params.zoom.panOnMouseMove&&(u={x:0,y:0},p&&(p=!1,f.startX=0,f.startY=0)))}function D(t){const s=e.zoom;s.scale&&1!==s.scale?O():k(t)}function G(){return{passiveListener:!!e.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!e.params.passiveListeners||{passive:!1,capture:!0}}}function X(){const t=e.zoom;if(t.enabled)return;t.enabled=!0;const{passiveListener:s,activeListenerWithCapture:a}=G();e.wrapperEl.addEventListener("pointerdown",C,s),e.wrapperEl.addEventListener("pointermove",P,a),["pointerup","pointercancel","pointerout"].forEach(t=>{e.wrapperEl.addEventListener(t,L,s)}),e.wrapperEl.addEventListener("pointermove",z,a)}function B(){const t=e.zoom;if(!t.enabled)return;t.enabled=!1;const{passiveListener:s,activeListenerWithCapture:a}=G();e.wrapperEl.removeEventListener("pointerdown",C,s),e.wrapperEl.removeEventListener("pointermove",P,a),["pointerup","pointercancel","pointerout"].forEach(t=>{e.wrapperEl.removeEventListener(t,L,s)}),e.wrapperEl.removeEventListener("pointermove",z,a)}Object.defineProperty(e.zoom,"scale",{get:()=>y,set(e){if(y!==e){const t=h.imageEl,s=h.slideEl;a("zoomChange",e,t,s)}y=e}}),s("init",()=>{e.params.zoom.enabled&&X()}),s("destroy",()=>{B()}),s("touchStart",(t,s)=>{e.zoom.enabled&&function(t){const s=e.device;if(!h.imageEl)return;if(f.isTouched)return;s.android&&t.cancelable&&t.preventDefault(),f.isTouched=!0;const a=m.length>0?m[0]:t;f.touchesStart.x=a.pageX,f.touchesStart.y=a.pageY}(s)}),s("touchEnd",(t,s)=>{e.zoom.enabled&&function(){const t=e.zoom;if(m.length=0,!h.imageEl)return;if(!f.isTouched||!f.isMoved)return f.isTouched=!1,void(f.isMoved=!1);f.isTouched=!1,f.isMoved=!1;let s=300,a=300;const i=v.x*s,r=f.currentX+i,n=v.y*a,l=f.currentY+n;0!==v.x&&(s=Math.abs((r-f.currentX)/v.x)),0!==v.y&&(a=Math.abs((l-f.currentY)/v.y));const o=Math.max(s,a);f.currentX=r,f.currentY=l;const d=f.width*t.scale,c=f.height*t.scale;f.minX=Math.min(h.slideWidth/2-d/2,0),f.maxX=-f.minX,f.minY=Math.min(h.slideHeight/2-c/2,0),f.maxY=-f.minY,f.currentX=Math.max(Math.min(f.currentX,f.maxX),f.minX),f.currentY=Math.max(Math.min(f.currentY,f.maxY),f.minY),h.imageWrapEl.style.transitionDuration=`${o}ms`,h.imageWrapEl.style.transform=`translate3d(${f.currentX}px, ${f.currentY}px,0)`}()}),s("doubleTap",(t,s)=>{!e.animating&&e.params.zoom.enabled&&e.zoom.enabled&&e.params.zoom.toggle&&D(s)}),s("transitionEnd",()=>{e.zoom.enabled&&e.params.zoom.enabled&&A()}),s("slideChange",()=>{e.zoom.enabled&&e.params.zoom.enabled&&e.params.cssMode&&A()}),Object.assign(e.zoom,{enable:X,disable:B,in:k,out:O,toggle:D})},function({swiper:e,extendParams:t,on:s}){function a(e,t){const s=function(){let e,t,s;return(a,i)=>{for(t=-1,e=a.length;e-t>1;)s=e+t>>1,a[s]<=i?t=s:e=s;return e}}();let a,i;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(i=s(this.x,e),a=i-1,(e-this.x[a])*(this.y[i]-this.y[a])/(this.x[i]-this.x[a])+this.y[a]):0},this}function i(){e.controller.control&&e.controller.spline&&(e.controller.spline=void 0,delete e.controller.spline)}t({controller:{control:void 0,inverse:!1,by:"slide"}}),e.controller={control:void 0},s("beforeInit",()=>{if("undefined"!=typeof window&&("string"==typeof e.params.controller.control||e.params.controller.control instanceof HTMLElement)){return void("string"==typeof e.params.controller.control?[...document.querySelectorAll(e.params.controller.control)]:[e.params.controller.control]).forEach(t=>{if(e.controller.control||(e.controller.control=[]),t&&t.swiper)e.controller.control.push(t.swiper);else if(t){const s=`${e.params.eventsPrefix}init`,a=i=>{e.controller.control.push(i.detail[0]),e.update(),t.removeEventListener(s,a)};t.addEventListener(s,a)}})}e.controller.control=e.params.controller.control}),s("update",()=>{i()}),s("resize",()=>{i()}),s("observerUpdate",()=>{i()}),s("setTranslate",(t,s,a)=>{e.controller.control&&!e.controller.control.destroyed&&e.controller.setTranslate(s,a)}),s("setTransition",(t,s,a)=>{e.controller.control&&!e.controller.control.destroyed&&e.controller.setTransition(s,a)}),Object.assign(e.controller,{setTranslate:function(t,s){const i=e.controller.control;let r,n;const l=e.constructor;function o(t){if(t.destroyed)return;const s=e.rtlTranslate?-e.translate:e.translate;"slide"===e.params.controller.by&&(!function(t){e.controller.spline=e.params.loop?new a(e.slidesGrid,t.slidesGrid):new a(e.snapGrid,t.snapGrid)}(t),n=-e.controller.spline.interpolate(-s)),n&&"container"!==e.params.controller.by||(r=(t.maxTranslate()-t.minTranslate())/(e.maxTranslate()-e.minTranslate()),!Number.isNaN(r)&&Number.isFinite(r)||(r=1),n=(s-e.minTranslate())*r+t.minTranslate()),e.params.controller.inverse&&(n=t.maxTranslate()-n),t.updateProgress(n),t.setTranslate(n,e),t.updateActiveIndex(),t.updateSlidesClasses()}if(Array.isArray(i))for(let e=0;e{s.updateAutoHeight()}),S(s.wrapperEl,()=>{i&&s.transitionEnd()})))}if(Array.isArray(i))for(r=0;r{e.setAttribute("tabIndex","0")})}function c(e){(e=M(e)).forEach(e=>{e.setAttribute("tabIndex","-1")})}function p(e,t){(e=M(e)).forEach(e=>{e.setAttribute("role",t)})}function u(e,t){(e=M(e)).forEach(e=>{e.setAttribute("aria-roledescription",t)})}function m(e,t){(e=M(e)).forEach(e=>{e.setAttribute("aria-label",t)})}function h(e){(e=M(e)).forEach(e=>{e.setAttribute("aria-disabled",!0)})}function f(e){(e=M(e)).forEach(e=>{e.setAttribute("aria-disabled",!1)})}function g(t){if(13!==t.keyCode&&32!==t.keyCode)return;const s=e.params.a11y,a=t.target;if(!e.pagination||!e.pagination.el||a!==e.pagination.el&&!e.pagination.el.contains(t.target)||t.target.matches(de(e.params.pagination.bulletClass))){if(e.navigation&&e.navigation.prevEl&&e.navigation.nextEl){const t=M(e.navigation.prevEl);M(e.navigation.nextEl).includes(a)&&(e.isEnd&&!e.params.loop||e.slideNext(),e.isEnd?o(s.lastSlideMessage):o(s.nextSlideMessage)),t.includes(a)&&(e.isBeginning&&!e.params.loop||e.slidePrev(),e.isBeginning?o(s.firstSlideMessage):o(s.prevSlideMessage))}e.pagination&&a.matches(de(e.params.pagination.bulletClass))&&a.click()}}function v(){return e.pagination&&e.pagination.bullets&&e.pagination.bullets.length}function b(){return v()&&e.params.pagination.clickable}const y=(e,t,s)=>{d(e),"BUTTON"!==e.tagName&&(p(e,"button"),e.addEventListener("keydown",g)),m(e,s),function(e,t){(e=M(e)).forEach(e=>{e.setAttribute("aria-controls",t)})}(e,t)},x=t=>{r&&r!==t.target&&!r.contains(t.target)&&(i=!0),e.a11y.clicked=!0},S=()=>{i=!1,requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.destroyed||(e.a11y.clicked=!1)})})},T=e=>{l=(new Date).getTime()},C=t=>{if(e.a11y.clicked||!e.params.a11y.scrollOnFocus)return;if((new Date).getTime()-l<100)return;const s=t.target.closest(`.${e.params.slideClass}, swiper-slide`);if(!s||!e.slides.includes(s))return;r=s;const a=e.virtual&&e.params.virtual.enabled,n=(a?parseInt(s.getAttribute("data-swiper-slide-index"),10):e.slides.indexOf(s))===e.activeIndex,o=e.params.watchSlidesProgress&&e.visibleSlides&&e.visibleSlides.includes(s);n||o||t.sourceCapabilities&&t.sourceCapabilities.firesTouchEvents||(e.isHorizontal()?e.el.scrollLeft=0:e.el.scrollTop=0,requestAnimationFrame(()=>{i||(e.params.loop?e.slideToLoop(e.getSlideIndexWhenGrid(parseInt(s.getAttribute("data-swiper-slide-index"))),0):a?e.slideTo(e.getSlideIndexWhenGrid(parseInt(s.getAttribute("data-swiper-slide-index"),10)),0):e.slideTo(e.getSlideIndexWhenGrid(e.slides.indexOf(s)),0),i=!1)}))},L=()=>{const t=e.params.a11y;t.itemRoleDescriptionMessage&&u(e.slides,t.itemRoleDescriptionMessage),t.slideRole&&p(e.slides,t.slideRole);const s=e.slides.length;t.slideLabelMessage&&e.slides.forEach((a,i)=>{const r=e.params.loop?parseInt(a.getAttribute("data-swiper-slide-index"),10):i;m(a,t.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,s))})},I=()=>{const t=e.params.a11y;e.el.append(n);const s=e.el;t.containerRoleDescriptionMessage&&u(s,t.containerRoleDescriptionMessage),t.containerMessage&&m(s,t.containerMessage),t.containerRole&&p(s,t.containerRole);const i=e.wrapperEl,r=t.id||i.getAttribute("id")||`swiper-wrapper-${function(e=16){return"x".repeat(e).replace(/x/g,()=>Math.round(16*Math.random()).toString(16))}(16)}`;var l;if(l=r,M(i).forEach(e=>{e.setAttribute("id",l)}),t.wrapperLiveRegion){!function(e,t){(e=M(e)).forEach(e=>{e.setAttribute("aria-live",t)})}(i,e.params.autoplay&&e.params.autoplay.enabled?"off":"polite")}L();let{nextEl:o,prevEl:d}=e.navigation?e.navigation:{};if(o=M(o),d=M(d),o&&o.forEach(e=>y(e,r,t.nextSlideMessage)),d&&d.forEach(e=>y(e,r,t.prevSlideMessage)),b()){M(e.pagination.el).forEach(e=>{e.addEventListener("keydown",g)})}a().addEventListener("visibilitychange",T),e.el.addEventListener("focus",C,!0),e.el.addEventListener("pointerdown",x,!0),e.el.addEventListener("pointerup",S,!0)};s("beforeInit",()=>{n=w("span",e.params.a11y.notificationClass),n.setAttribute("aria-live","assertive"),n.setAttribute("aria-atomic","true")}),s("afterInit",()=>{e.params.a11y.enabled&&I()}),s("slidesLengthChange snapGridLengthChange slidesGridLengthChange",()=>{e.params.a11y.enabled&&L()}),s("fromEdge toEdge afterInit lock unlock",()=>{e.params.a11y.enabled&&function(){if(e.params.loop||e.params.rewind||!e.navigation)return;const{nextEl:t,prevEl:s}=e.navigation;s&&(e.isBeginning?(h(s),c(s)):(f(s),d(s))),t&&(e.isEnd?(h(t),c(t)):(f(t),d(t)))}()}),s("paginationUpdate",()=>{e.params.a11y.enabled&&function(){const t=e.params.a11y;v()&&e.pagination.bullets.forEach(s=>{e.params.pagination.clickable&&(d(s),e.params.pagination.renderBullet||(p(s,"button"),m(s,t.paginationBulletMessage.replace(/\{\{index\}\}/,E(s)+1)))),s.matches(de(e.params.pagination.bulletActiveClass))?s.setAttribute("aria-current","true"):s.removeAttribute("aria-current")})}()}),s("destroy",()=>{e.params.a11y.enabled&&function(){n&&n.remove();let{nextEl:t,prevEl:s}=e.navigation?e.navigation:{};t=M(t),s=M(s),t&&t.forEach(e=>e.removeEventListener("keydown",g)),s&&s.forEach(e=>e.removeEventListener("keydown",g)),b()&&M(e.pagination.el).forEach(e=>{e.removeEventListener("keydown",g)});a().removeEventListener("visibilitychange",T),e.el&&"string"!=typeof e.el&&(e.el.removeEventListener("focus",C,!0),e.el.removeEventListener("pointerdown",x,!0),e.el.removeEventListener("pointerup",S,!0))}()})},function({swiper:e,extendParams:t,on:s}){t({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let a=!1,i={};const n=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),l=e=>{const t=r();let s;s=e?new URL(e):t.location;const a=s.pathname.slice(1).split("/").filter(e=>""!==e),i=a.length;return{key:a[i-2],value:a[i-1]}},o=(t,s)=>{const i=r();if(!a||!e.params.history.enabled)return;let l;l=e.params.url?new URL(e.params.url):i.location;const o=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${s}"]`):e.slides[s];let d=n(o.getAttribute("data-history"));if(e.params.history.root.length>0){let s=e.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${t?`${t}/`:""}${d}`}else l.pathname.includes(t)||(d=`${t?`${t}/`:""}${d}`);e.params.history.keepQuery&&(d+=l.search);const c=i.history.state;c&&c.value===d||(e.params.history.replaceState?i.history.replaceState({value:d},null,d):i.history.pushState({value:d},null,d))},d=(t,s,a)=>{if(s)for(let i=0,r=e.slides.length;i{i=l(e.params.url),d(e.params.speed,i.value,!1)};s("init",()=>{e.params.history.enabled&&(()=>{const t=r();if(e.params.history){if(!t.history||!t.history.pushState)return e.params.history.enabled=!1,void(e.params.hashNavigation.enabled=!0);a=!0,i=l(e.params.url),i.key||i.value?(d(0,i.value,e.params.runCallbacksOnInit),e.params.history.replaceState||t.addEventListener("popstate",c)):e.params.history.replaceState||t.addEventListener("popstate",c)}})()}),s("destroy",()=>{e.params.history.enabled&&(()=>{const t=r();e.params.history.replaceState||t.removeEventListener("popstate",c)})()}),s("transitionEnd _freeModeNoMomentumRelease",()=>{a&&o(e.params.history.key,e.activeIndex)}),s("slideChange",()=>{a&&e.params.cssMode&&o(e.params.history.key,e.activeIndex)})},function({swiper:e,extendParams:t,emit:s,on:i}){let n=!1;const l=a(),o=r();t({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(t,s){if(e.virtual&&e.params.virtual.enabled){const t=e.slides.find(e=>e.getAttribute("data-hash")===s);if(!t)return 0;return parseInt(t.getAttribute("data-swiper-slide-index"),10)}return e.getSlideIndex(g(e.slidesEl,`.${e.params.slideClass}[data-hash="${s}"], swiper-slide[data-hash="${s}"]`)[0])}}});const d=()=>{s("hashChange");const t=l.location.hash.replace("#",""),a=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex];if(t!==(a?a.getAttribute("data-hash"):"")){const s=e.params.hashNavigation.getSlideIndex(e,t);if(void 0===s||Number.isNaN(s))return;e.slideTo(s)}},c=()=>{if(!n||!e.params.hashNavigation.enabled)return;const t=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex],a=t?t.getAttribute("data-hash")||t.getAttribute("data-history"):"";e.params.hashNavigation.replaceState&&o.history&&o.history.replaceState?(o.history.replaceState(null,null,`#${a}`||""),s("hashSet")):(l.location.hash=a||"",s("hashSet"))};i("init",()=>{e.params.hashNavigation.enabled&&(()=>{if(!e.params.hashNavigation.enabled||e.params.history&&e.params.history.enabled)return;n=!0;const t=l.location.hash.replace("#","");if(t){const s=0,a=e.params.hashNavigation.getSlideIndex(e,t);e.slideTo(a||0,s,e.params.runCallbacksOnInit,!0)}e.params.hashNavigation.watchState&&o.addEventListener("hashchange",d)})()}),i("destroy",()=>{e.params.hashNavigation.enabled&&e.params.hashNavigation.watchState&&o.removeEventListener("hashchange",d)}),i("transitionEnd _freeModeNoMomentumRelease",()=>{n&&c()}),i("slideChange",()=>{n&&e.params.cssMode&&c()})},function({swiper:e,extendParams:t,on:s,emit:i,params:r}){let n,l;e.autoplay={running:!1,paused:!1,timeLeft:0},t({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let o,d,c,p,u,m,h,f=r&&r.autoplay?r.autoplay.delay:3e3,g=r&&r.autoplay?r.autoplay.delay:3e3,v=(new Date).getTime();function w(t){e&&!e.destroyed&&e.wrapperEl&&t.target===e.wrapperEl&&(e.wrapperEl.removeEventListener("transitionend",w),h||t.detail&&t.detail.bySwiperTouchMove||M())}const b=()=>{if(e.destroyed||!e.autoplay.running)return;e.autoplay.paused?d=!0:d&&(g=o,d=!1);const t=e.autoplay.paused?o:v+g-(new Date).getTime();e.autoplay.timeLeft=t,i("autoplayTimeLeft",t,t/f),l=requestAnimationFrame(()=>{b()})},y=()=>{let t=e.params.autoplay.delay;const s=(()=>{let t;if(t=e.virtual&&e.params.virtual.enabled?e.slides.find(e=>e.classList.contains("swiper-slide-active")):e.slides[e.activeIndex],!t)return;return parseInt(t.getAttribute("data-swiper-autoplay"),10)})();return!Number.isNaN(s)&&s>0&&(t=s),t},E=t=>{if(e.destroyed||!e.autoplay.running)return;cancelAnimationFrame(l),b();let s=t;void 0===s&&(s=y(),f=s,g=s),o=s;const a=e.params.speed,r=()=>{e&&!e.destroyed&&(e.params.autoplay.reverseDirection?!e.isBeginning||e.params.loop||e.params.rewind?(e.slidePrev(a,!0,!0),i("autoplay")):e.params.autoplay.stopOnLastSlide||(e.slideTo(e.slides.length-1,a,!0,!0),i("autoplay")):!e.isEnd||e.params.loop||e.params.rewind?(e.slideNext(a,!0,!0),i("autoplay")):e.params.autoplay.stopOnLastSlide||(e.slideTo(0,a,!0,!0),i("autoplay")),e.params.cssMode&&(v=(new Date).getTime(),requestAnimationFrame(()=>{E()})))};return s>0?(clearTimeout(n),n=setTimeout(()=>{r()},s)):requestAnimationFrame(()=>{r()}),s},x=()=>{v=(new Date).getTime(),e.autoplay.running=!0,E(),i("autoplayStart")},S=()=>{e.autoplay.running=!1,clearTimeout(n),cancelAnimationFrame(l),i("autoplayStop")},T=(t,s)=>{if(e.destroyed||!e.autoplay.running)return;clearTimeout(n),t||(m=!0);const a=()=>{i("autoplayPause"),e.params.autoplay.waitForTransition?e.wrapperEl.addEventListener("transitionend",w):M()};if(e.autoplay.paused=!0,s)return void a();const r=o||e.params.autoplay.delay;o=r-((new Date).getTime()-v),e.isEnd&&o<0&&!e.params.loop||(o<0&&(o=0),a())},M=()=>{e.isEnd&&o<0&&!e.params.loop||e.destroyed||!e.autoplay.running||(v=(new Date).getTime(),m?(m=!1,E(o)):E(),e.autoplay.paused=!1,i("autoplayResume"))},C=()=>{if(e.destroyed||!e.autoplay.running)return;const t=a();"hidden"===t.visibilityState&&(m=!0,T(!0)),"visible"===t.visibilityState&&M()},P=t=>{"mouse"===t.pointerType&&(m=!0,h=!0,e.animating||e.autoplay.paused||T(!0))},L=t=>{"mouse"===t.pointerType&&(h=!1,e.autoplay.paused&&M())};s("init",()=>{e.params.autoplay.enabled&&(e.params.autoplay.pauseOnMouseEnter&&(e.el.addEventListener("pointerenter",P),e.el.addEventListener("pointerleave",L)),a().addEventListener("visibilitychange",C),x())}),s("destroy",()=>{e.el&&"string"!=typeof e.el&&(e.el.removeEventListener("pointerenter",P),e.el.removeEventListener("pointerleave",L)),a().removeEventListener("visibilitychange",C),e.autoplay.running&&S()}),s("_freeModeStaticRelease",()=>{(p||m)&&M()}),s("_freeModeNoMomentumRelease",()=>{e.params.autoplay.disableOnInteraction?S():T(!0,!0)}),s("beforeTransitionStart",(t,s,a)=>{!e.destroyed&&e.autoplay.running&&(a||!e.params.autoplay.disableOnInteraction?T(!0,!0):S())}),s("sliderFirstMove",()=>{!e.destroyed&&e.autoplay.running&&(e.params.autoplay.disableOnInteraction?S():(c=!0,p=!1,m=!1,u=setTimeout(()=>{m=!0,p=!0,T(!0)},200)))}),s("touchEnd",()=>{if(!e.destroyed&&e.autoplay.running&&c){if(clearTimeout(u),clearTimeout(n),e.params.autoplay.disableOnInteraction)return p=!1,void(c=!1);p&&e.params.cssMode&&M(),p=!1,c=!1}}),s("slideChange",()=>{!e.destroyed&&e.autoplay.running&&e.autoplay.paused&&(o=y(),f=y())}),Object.assign(e.autoplay,{start:x,stop:S,pause:T,resume:M})},function({swiper:e,extendParams:t,on:s}){t({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let i=!1,r=!1;function n(){const t=e.thumbs.swiper;return!(!t||t.destroyed)&&(t.params.virtual&&t.params.virtual.enabled)}function l(){const t=e.thumbs.swiper;if(!t||t.destroyed)return;const s=t.clickedIndex,a=t.clickedSlide;if(a&&a.classList.contains(e.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;i=t.params.loop?parseInt(t.clickedSlide.getAttribute("data-swiper-slide-index"),10):s,e.params.loop?e.slideToLoop(i):e.slideTo(i)}function o(){const{thumbs:t}=e.params;if(i)return!1;i=!0;const s=e.constructor;if(t.swiper instanceof s){if(t.swiper.destroyed)return i=!1,!1;e.thumbs.swiper=t.swiper,Object.assign(e.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(e.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),e.thumbs.swiper.update()}else if(c(t.swiper)){const a=Object.assign({},t.swiper);Object.assign(a,{watchSlidesProgress:!0,slideToClickedSlide:!1}),e.thumbs.swiper=new s(a),r=!0}return e.thumbs.swiper.el.classList.add(e.params.thumbs.thumbsContainerClass),e.thumbs.swiper.on("tap",l),n()&&e.thumbs.swiper.on("virtualUpdate",()=>{d(!1,{autoScroll:!1})}),!0}function d(t,s){const a=e.thumbs.swiper;if(!a||a.destroyed)return;let i=1;const r=e.params.thumbs.slideThumbActiveClass;if(e.params.slidesPerView>1&&!e.params.centeredSlides&&(i=e.params.slidesPerView),e.params.thumbs.multipleActiveThumbs||(i=1),i=Math.floor(i),a.slides.forEach(e=>e.classList.remove(r)),a.params.loop||n())for(let t=0;t{e.classList.add(r)});else for(let t=0;tt.getAttribute("data-swiper-slide-index")===`${e.realIndex}`);l=s.slides.indexOf(t),o=e.activeIndex>e.previousIndex?"next":"prev"}else l=e.realIndex,o=l>e.previousIndex?"next":"prev";r&&(l+="next"===o?i:-1*i),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(l)<0&&(s.params.centeredSlides?l=l>n?l-Math.floor(a/2)+1:l+Math.floor(a/2)-1:l>n&&s.params.slidesPerGroup,s.slideTo(l,t))}}(t?0:void 0)}e.thumbs={swiper:null},s("beforeInit",()=>{const{thumbs:t}=e.params;if(t&&t.swiper)if("string"==typeof t.swiper||t.swiper instanceof HTMLElement){const s=a(),i=()=>{const a="string"==typeof t.swiper?s.querySelector(t.swiper):t.swiper;if(a&&a.swiper)t.swiper=a.swiper,o(),d(!0);else if(a){const s=`${e.params.eventsPrefix}init`,i=r=>{t.swiper=r.detail[0],a.removeEventListener(s,i),o(),d(!0),t.swiper.update(),e.update()};a.addEventListener(s,i)}return a},r=()=>{if(e.destroyed)return;i()||requestAnimationFrame(r)};requestAnimationFrame(r)}else o(),d(!0)}),s("slideChange update resize observerUpdate",()=>{d()}),s("setTransition",(t,s)=>{const a=e.thumbs.swiper;a&&!a.destroyed&&a.setTransition(s)}),s("beforeDestroy",()=>{const t=e.thumbs.swiper;t&&!t.destroyed&&r&&t.destroy()}),Object.assign(e.thumbs,{init:o,update:d})},function({swiper:e,extendParams:t,emit:s,once:a}){t({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(e,{freeMode:{onTouchStart:function(){if(e.params.cssMode)return;const t=e.getTranslate();e.setTranslate(t),e.setTransition(0),e.touchEventsData.velocities.length=0,e.freeMode.onTouchEnd({currentPos:e.rtl?e.translate:-e.translate})},onTouchMove:function(){if(e.params.cssMode)return;const{touchEventsData:t,touches:s}=e;0===t.velocities.length&&t.velocities.push({position:s[e.isHorizontal()?"startX":"startY"],time:t.touchStartTime}),t.velocities.push({position:s[e.isHorizontal()?"currentX":"currentY"],time:o()})},onTouchEnd:function({currentPos:t}){if(e.params.cssMode)return;const{params:i,wrapperEl:r,rtlTranslate:n,snapGrid:l,touchEventsData:d}=e,c=o()-d.touchStartTime;if(t<-e.minTranslate())e.slideTo(e.activeIndex);else if(t>-e.maxTranslate())e.slides.length1){const t=d.velocities.pop(),s=d.velocities.pop(),a=t.position-s.position,r=t.time-s.time;e.velocity=a/r,e.velocity/=2,Math.abs(e.velocity)150||o()-t.time>300)&&(e.velocity=0)}else e.velocity=0;e.velocity*=i.freeMode.momentumVelocityRatio,d.velocities.length=0;let t=1e3*i.freeMode.momentumRatio;const c=e.velocity*t;let p=e.translate+c;n&&(p=-p);let u,m=!1;const h=20*Math.abs(e.velocity)*i.freeMode.momentumBounceRatio;let f;if(pe.minTranslate())i.freeMode.momentumBounce?(p-e.minTranslate()>h&&(p=e.minTranslate()+h),u=e.minTranslate(),m=!0,d.allowMomentumBounce=!0):p=e.minTranslate(),i.loop&&i.centeredSlides&&(f=!0);else if(i.freeMode.sticky){let t;for(let e=0;e-p){t=e;break}p=Math.abs(l[t]-p){e.loopFix()}),0!==e.velocity){if(t=n?Math.abs((-p-e.translate)/e.velocity):Math.abs((p-e.translate)/e.velocity),i.freeMode.sticky){const s=Math.abs((n?-p:p)-e.translate),a=e.slidesSizesGrid[e.activeIndex];t=s{e&&!e.destroyed&&d.allowMomentumBounce&&(s("momentumBounce"),e.setTransition(i.speed),setTimeout(()=>{e.setTranslate(u),S(r,()=>{e&&!e.destroyed&&e.transitionEnd()})},0))})):e.velocity?(s("_freeModeNoMomentumRelease"),e.updateProgress(p),e.setTransition(t),e.setTranslate(p),e.transitionStart(!0,e.swipeDirection),e.animating||(e.animating=!0,S(r,()=>{e&&!e.destroyed&&e.transitionEnd()}))):e.updateProgress(p),e.updateActiveIndex(),e.updateSlidesClasses()}else{if(i.freeMode.sticky)return void e.slideToClosest();i.freeMode&&s("_freeModeNoMomentumRelease")}(!i.freeMode.momentum||c>=i.longSwipesMs)&&(s("_freeModeStaticRelease"),e.updateProgress(),e.updateActiveIndex(),e.updateSlidesClasses())}}}})},function({swiper:e,extendParams:t,on:s}){let a,i,r,n;t({grid:{rows:1,fill:"column"}});const l=()=>{let t=e.params.spaceBetween;return"string"==typeof t&&t.indexOf("%")>=0?t=parseFloat(t.replace("%",""))/100*e.size:"string"==typeof t&&(t=parseFloat(t)),t};s("init",()=>{n=e.params.grid&&e.params.grid.rows>1}),s("update",()=>{const{params:t,el:s}=e,a=t.grid&&t.grid.rows>1;n&&!a?(s.classList.remove(`${t.containerModifierClass}grid`,`${t.containerModifierClass}grid-column`),r=1,e.emitContainerClasses()):!n&&a&&(s.classList.add(`${t.containerModifierClass}grid`),"column"===t.grid.fill&&s.classList.add(`${t.containerModifierClass}grid-column`),e.emitContainerClasses()),n=a}),e.grid={initSlides:t=>{const{slidesPerView:s}=e.params,{rows:n,fill:l}=e.params.grid,o=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:t.length;r=Math.floor(o/n),a=Math.floor(o/n)===o/n?o:Math.ceil(o/n)*n,"auto"!==s&&"row"===l&&(a=Math.max(a,s*n)),i=a/n},unsetSlides:()=>{e.slides&&e.slides.forEach(t=>{t.swiperSlideGridSet&&(t.style.height="",t.style[e.getDirectionLabel("margin-top")]="")})},updateSlide:(t,s,n)=>{const{slidesPerGroup:o}=e.params,d=l(),{rows:c,fill:p}=e.params.grid,u=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:n.length;let m,h,f;if("row"===p&&o>1){const e=Math.floor(t/(o*c)),i=t-c*o*e,r=0===e?o:Math.min(Math.ceil((u-e*c*o)/c),o);f=Math.floor(i/r),h=i-f*r+e*o,m=h+f*a/c,s.style.order=m}else"column"===p?(h=Math.floor(t/c),f=t-h*c,(h>r||h===r&&f===c-1)&&(f+=1,f>=c&&(f=0,h+=1))):(f=Math.floor(t/i),h=t-f*i);s.row=f,s.column=h,s.style.height=`calc((100% - ${(c-1)*d}px) / ${c})`,s.style[e.getDirectionLabel("margin-top")]=0!==f?d&&`${d}px`:"",s.swiperSlideGridSet=!0},updateWrapperSize:(t,s)=>{const{centeredSlides:i,roundLengths:r}=e.params,n=l(),{rows:o}=e.params.grid;if(e.virtualSize=(t+n)*a,e.virtualSize=Math.ceil(e.virtualSize/o)-n,e.params.cssMode||(e.wrapperEl.style[e.getDirectionLabel("width")]=`${e.virtualSize+n}px`),i){const t=[];for(let a=0;a{const{slides:t}=e;e.params.fadeEffect;for(let s=0;s{const s=e.slides.map(e=>f(e));s.forEach(e=>{e.style.transitionDuration=`${t}ms`}),ve({swiper:e,duration:t,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!e.params.cssMode})})},function({swiper:e,extendParams:t,on:s}){t({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const a=(e,t,s)=>{let a=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=w("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(a)),i||(i=w("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(i)),a&&(a.style.opacity=Math.max(-t,0)),i&&(i.style.opacity=Math.max(t,0))};fe({effect:"cube",swiper:e,on:s,setTranslate:()=>{const{el:t,wrapperEl:s,slides:i,width:r,height:n,rtlTranslate:l,size:o,browser:d}=e,c=C(e),p=e.params.cubeEffect,u=e.isHorizontal(),m=e.virtual&&e.params.virtual.enabled;let h,f=0;p.shadow&&(u?(h=e.wrapperEl.querySelector(".swiper-cube-shadow"),h||(h=w("div","swiper-cube-shadow"),e.wrapperEl.append(h)),h.style.height=`${r}px`):(h=t.querySelector(".swiper-cube-shadow"),h||(h=w("div","swiper-cube-shadow"),t.append(h))));for(let e=0;e-1&&(f=90*s+90*d,l&&(f=90*-s-90*d)),t.style.transform=w,p.slideShadows&&a(t,d,u)}if(s.style.transformOrigin=`50% 50% -${o/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${o/2}px`,p.shadow)if(u)h.style.transform=`translate3d(0px, ${r/2+p.shadowOffset}px, ${-r/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${p.shadowScale})`;else{const e=Math.abs(f)-90*Math.floor(Math.abs(f)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=p.shadowScale,a=p.shadowScale/t,i=p.shadowOffset;h.style.transform=`scale3d(${s}, 1, ${a}) translate3d(0px, ${n/2+i}px, ${-n/2/a}px) rotateX(-89.99deg)`}const g=(d.isSafari||d.isWebView)&&d.needPerspectiveFix?-o/2:0;s.style.transform=`translate3d(0px,0,${g}px) rotateX(${c(e.isHorizontal()?0:f)}deg) rotateY(${c(e.isHorizontal()?-f:0)}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${g}px`)},setTransition:t=>{const{el:s,slides:a}=e;if(a.forEach(e=>{e.style.transitionDuration=`${t}ms`,e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(e=>{e.style.transitionDuration=`${t}ms`})}),e.params.cubeEffect.shadow&&!e.isHorizontal()){const e=s.querySelector(".swiper-cube-shadow");e&&(e.style.transitionDuration=`${t}ms`)}},recreateShadows:()=>{const t=e.isHorizontal();e.slides.forEach(e=>{const s=Math.max(Math.min(e.progress,1),-1);a(e,s,t)})},getEffectParams:()=>e.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function({swiper:e,extendParams:t,on:s}){t({flipEffect:{slideShadows:!0,limitRotation:!0}});const a=(t,s)=>{let a=e.isHorizontal()?t.querySelector(".swiper-slide-shadow-left"):t.querySelector(".swiper-slide-shadow-top"),i=e.isHorizontal()?t.querySelector(".swiper-slide-shadow-right"):t.querySelector(".swiper-slide-shadow-bottom");a||(a=we("flip",t,e.isHorizontal()?"left":"top")),i||(i=we("flip",t,e.isHorizontal()?"right":"bottom")),a&&(a.style.opacity=Math.max(-s,0)),i&&(i.style.opacity=Math.max(s,0))};fe({effect:"flip",swiper:e,on:s,setTranslate:()=>{const{slides:t,rtlTranslate:s}=e,i=e.params.flipEffect,r=C(e);for(let n=0;n{const s=e.slides.map(e=>f(e));s.forEach(e=>{e.style.transitionDuration=`${t}ms`,e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(e=>{e.style.transitionDuration=`${t}ms`})}),ve({swiper:e,duration:t,transformElements:s})},recreateShadows:()=>{e.params.flipEffect,e.slides.forEach(t=>{let s=t.progress;e.params.flipEffect.limitRotation&&(s=Math.max(Math.min(t.progress,1),-1)),a(t,s)})},getEffectParams:()=>e.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!e.params.cssMode})})},function({swiper:e,extendParams:t,on:s}){t({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}}),fe({effect:"coverflow",swiper:e,on:s,setTranslate:()=>{const{width:t,height:s,slides:a,slidesSizesGrid:i}=e,r=e.params.coverflowEffect,n=e.isHorizontal(),l=e.translate,o=n?t/2-l:s/2-l,d=n?r.rotate:-r.rotate,c=r.depth,p=C(e);for(let e=0,t=a.length;e0?u:0),s&&(s.style.opacity=-u>0?-u:0)}}},setTransition:t=>{e.slides.map(e=>f(e)).forEach(e=>{e.style.transitionDuration=`${t}ms`,e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(e=>{e.style.transitionDuration=`${t}ms`})})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function({swiper:e,extendParams:t,on:s}){t({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const a=e=>"string"==typeof e?e:`${e}px`;fe({effect:"creative",swiper:e,on:s,setTranslate:()=>{const{slides:t,wrapperEl:s,slidesSizesGrid:i}=e,r=e.params.creativeEffect,{progressMultiplier:n}=r,l=e.params.centeredSlides,o=C(e);if(l){const t=i[0]/2-e.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${t}px))`}for(let s=0;s0&&(g=r.prev,f=!0),m.forEach((e,t)=>{m[t]=`calc(${e}px + (${a(g.translate[t])} * ${Math.abs(c*n)}))`}),h.forEach((e,t)=>{let s=g.rotate[t]*Math.abs(c*n);h[t]=s}),i.style.zIndex=-Math.abs(Math.round(d))+t.length;const v=m.join(", "),w=`rotateX(${o(h[0])}deg) rotateY(${o(h[1])}deg) rotateZ(${o(h[2])}deg)`,b=p<0?`scale(${1+(1-g.scale)*p*n})`:`scale(${1-(1-g.scale)*p*n})`,y=p<0?1+(1-g.opacity)*p*n:1-(1-g.opacity)*p*n,E=`translate3d(${v}) ${w} ${b}`;if(f&&g.shadow||!f){let e=i.querySelector(".swiper-slide-shadow");if(!e&&g.shadow&&(e=we("creative",i)),e){const t=r.shadowPerProgress?c*(1/r.limitProgress):c;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const x=ge(0,i);x.style.transform=E,x.style.opacity=y,g.origin&&(x.style.transformOrigin=g.origin)}},setTransition:t=>{const s=e.slides.map(e=>f(e));s.forEach(e=>{e.style.transitionDuration=`${t}ms`,e.querySelectorAll(".swiper-slide-shadow").forEach(e=>{e.style.transitionDuration=`${t}ms`})}),ve({swiper:e,duration:t,transformElements:s,allSlides:!0})},perspective:()=>e.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!e.params.cssMode})})},function({swiper:e,extendParams:t,on:s}){t({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),fe({effect:"cards",swiper:e,on:s,setTranslate:()=>{const{slides:t,activeIndex:s,rtlTranslate:a}=e,i=e.params.cardsEffect,{startTranslate:r,isTouched:n}=e.touchEventsData,l=a?-e.translate:e.translate;for(let o=0;o0&&p<1&&(n||e.params.cssMode)&&l-1&&(n||e.params.cssMode)&&l>r;if(y||E){const t=(1-Math.abs((Math.abs(p)-.5)/.5))**.5;v+=-28*p*t,g+=-.5*t,w+=96*t,h=(i.rotate||e.isHorizontal()?-25:0)*t*Math.abs(p)+"%"}if(m=p<0?`calc(${m}px ${a?"-":"+"} (${w*Math.abs(p)}%))`:p>0?`calc(${m}px ${a?"-":"+"} (-${w*Math.abs(p)}%))`:`${m}px`,!e.isHorizontal()){const e=h;h=m,m=e}const x=p<0?""+(1+(1-g)*p):""+(1-(1-g)*p),S=`\n translate3d(${m}, ${h}, ${f}px)\n rotateZ(${i.rotate?a?-v:v:0}deg)\n scale(${x})\n `;if(i.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=we("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(p)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(c))+t.length;ge(0,d).style.transform=S}},setTransition:t=>{const s=e.slides.map(e=>f(e));s.forEach(e=>{e.style.transitionDuration=`${t}ms`,e.querySelectorAll(".swiper-slide-shadow").forEach(e=>{e.style.transitionDuration=`${t}ms`})}),ve({swiper:e,duration:t,transformElements:s})},perspective:()=>!0,overwriteParams:()=>({_loopSwapReset:!1,watchSlidesProgress:!0,loopAdditionalSlides:e.params.cardsEffect.rotate?3:2,centeredSlides:!0,virtualTranslate:!e.params.cssMode})})}];return ne.use(be),ne}(); +//# sourceMappingURL=swiper-bundle.min.js.map \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper-bundle.min.js.map b/vendor/javascript/swiper/swiper-bundle.min.js.map new file mode 100644 index 0000000..8ea334c --- /dev/null +++ b/vendor/javascript/swiper/swiper-bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-bundle.js.js","names":["Swiper","isObject$1","obj","constructor","Object","extend$1","target","src","noExtend","keys","filter","key","indexOf","forEach","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","classesToTokens","classes","trim","split","c","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject","o","prototype","call","slice","isNode","node","HTMLElement","nodeType","extend","args","to","i","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","undefined","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","showWarning","text","console","warn","err","tag","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","getRotateFix","v","abs","browser","need3dFix","setInnerHTML","html","trustedTypes","innerHTML","createPolicy","createHTML","s","support","deviceCached","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","unshift","toggleSlideClasses$1","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","lazyPreloaderManaged","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","swiperSize","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slidesPerViewAutoSlideSize","roundLengths","floor","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","isFractionalSlidesPerView","shouldSnapToSlideEdge","snapToSlideEdge","lastAllowedSnapIndex","minVisibleSlides","accumulatedSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","find","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","bothDirections","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","isFreeMode","freeMode","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","getSlideIndexWhenGrid","slideSelector","isGrid","getSlideIndex","loopCreate","loopAddBlankSlides","slideBlankClass","recalcSlides","clearBlankSlides","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","append","byMousewheel","loopedSlides","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isInitialOverflow","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","isChild","slot","elementsQueue","elementToCheck","elementIsChildOfSlot","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","_loopSwapReset","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpointContainer","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","createElementIfNotDefined","checkProps","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","arrowSvg","classesToSelector","appendSlide","appendElement","tempDOM","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","force","beforeInit","forceActiveIndex","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesPerViewNumeric","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","disableOnInteraction","stop","releaseScroll","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","addIcons","tempEl","appendChild","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","targetIsButton","pagination","clickable","isHidden","toggle","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","moveDirection","total","firstIndex","midIndex","classesToRemove","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","zoom","limitToOriginalSize","maxRatio","panOnMouseMove","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","isPanningWithMouse","mousePanStart","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","naturalWidth","imageMaxRatio","eventWithinSlide","eventWithinZoomContainer","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","isMousePan","onMouseMove","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","DOMMatrix","f","newX","newY","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","prevScale","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","defineProperty","get","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","containerRole","itemRoleDescriptionMessage","slideRole","scrollOnFocus","wrapperLiveRegion","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","onVisibilityChange","handleFocus","isActive","sourceCapabilities","firesTouchEvents","repeat","round","random","getRandomNumber","live","addElLive","updateNavigation","updatePagination","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","getTotalDelay","totalDelay","currentSlideDelay","getSlideDelay","run","delayForce","proceed","start","pause","reset","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","isVirtualEnabled","thumbsSwiper","onThumbClick","thumbsParams","SwiperClass","thumbsSwiperParams","autoScroll","thumbsToActivate","thumbActiveClass","slideSpeed","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","r","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateFix","rotateY","rotateX","zIndex","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper-bundle.min.mjs b/vendor/javascript/swiper/swiper-bundle.min.mjs new file mode 100644 index 0000000..2e3724a --- /dev/null +++ b/vendor/javascript/swiper/swiper-bundle.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +import{S as Swiper}from"./shared/swiper-core.min.mjs";import Virtual from"./modules/virtual.min.mjs";import Keyboard from"./modules/keyboard.min.mjs";import Mousewheel from"./modules/mousewheel.min.mjs";import Navigation from"./modules/navigation.min.mjs";import Pagination from"./modules/pagination.min.mjs";import Scrollbar from"./modules/scrollbar.min.mjs";import Parallax from"./modules/parallax.min.mjs";import Zoom from"./modules/zoom.min.mjs";import Controller from"./modules/controller.min.mjs";import A11y from"./modules/a11y.min.mjs";import History from"./modules/history.min.mjs";import HashNavigation from"./modules/hash-navigation.min.mjs";import Autoplay from"./modules/autoplay.min.mjs";import Thumb from"./modules/thumbs.min.mjs";import freeMode from"./modules/free-mode.min.mjs";import Grid from"./modules/grid.min.mjs";import Manipulation from"./modules/manipulation.min.mjs";import EffectFade from"./modules/effect-fade.min.mjs";import EffectCube from"./modules/effect-cube.min.mjs";import EffectFlip from"./modules/effect-flip.min.mjs";import EffectCoverflow from"./modules/effect-coverflow.min.mjs";import EffectCreative from"./modules/effect-creative.min.mjs";import EffectCards from"./modules/effect-cards.min.mjs";const modules=[Virtual,Keyboard,Mousewheel,Navigation,Pagination,Scrollbar,Parallax,Zoom,Controller,A11y,History,HashNavigation,Autoplay,Thumb,freeMode,Grid,Manipulation,EffectFade,EffectCube,EffectFlip,EffectCoverflow,EffectCreative,EffectCards];Swiper.use(modules);export{Swiper,Swiper as default}; +//# sourceMappingURL=swiper-bundle.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper-bundle.min.mjs.map b/vendor/javascript/swiper/swiper-bundle.min.mjs.map new file mode 100644 index 0000000..00ccec7 --- /dev/null +++ b/vendor/javascript/swiper/swiper-bundle.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-bundle.mjs.mjs","names":["Swiper","Virtual","Keyboard","Mousewheel","Navigation","Pagination","Scrollbar","Parallax","Zoom","Controller","A11y","History","HashNavigation","Autoplay","Thumb","freeMode","Grid","Manipulation","EffectFade","EffectCube","EffectFlip","EffectCoverflow","EffectCreative","EffectCards","modules","use"],"sources":["0"],"mappings":";;;;;;;;;;;;YAYcA,WAAc,sCACrBC,YAAa,mCACbC,aAAc,oCACdC,eAAgB,sCAChBC,eAAgB,sCAChBC,eAAgB,sCAChBC,cAAe,qCACfC,aAAc,oCACdC,SAAU,gCACVC,eAAgB,sCAChBC,SAAU,gCACVC,YAAa,mCACbC,mBAAoB,2CACpBC,aAAc,oCACdC,UAAW,kCACXC,aAAc,qCACdC,SAAU,gCACVC,iBAAkB,wCAClBC,eAAgB,uCAChBC,eAAgB,uCAChBC,eAAgB,uCAChBC,oBAAqB,4CACrBC,mBAAoB,2CACpBC,gBAAiB,iCAGxB,MAAMC,QAAU,CAACvB,QAASC,SAAUC,WAAYC,WAAYC,WAAYC,UAAWC,SAAUC,KAAMC,WAAYC,KAAMC,QAASC,eAAgBC,SAAUC,MAAOC,SAAUC,KAAMC,aAAcC,WAAYC,WAAYC,WAAYC,gBAAiBC,eAAgBC,aAClQvB,OAAOyB,IAAID,gBAEFxB,OAAQA"} \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper-bundle.mjs b/vendor/javascript/swiper/swiper-bundle.mjs new file mode 100644 index 0000000..859261d --- /dev/null +++ b/vendor/javascript/swiper/swiper-bundle.mjs @@ -0,0 +1,42 @@ +/** + * Swiper 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +import { S as Swiper } from './shared/swiper-core.mjs'; +import Virtual from './modules/virtual.mjs'; +import Keyboard from './modules/keyboard.mjs'; +import Mousewheel from './modules/mousewheel.mjs'; +import Navigation from './modules/navigation.mjs'; +import Pagination from './modules/pagination.mjs'; +import Scrollbar from './modules/scrollbar.mjs'; +import Parallax from './modules/parallax.mjs'; +import Zoom from './modules/zoom.mjs'; +import Controller from './modules/controller.mjs'; +import A11y from './modules/a11y.mjs'; +import History from './modules/history.mjs'; +import HashNavigation from './modules/hash-navigation.mjs'; +import Autoplay from './modules/autoplay.mjs'; +import Thumb from './modules/thumbs.mjs'; +import freeMode from './modules/free-mode.mjs'; +import Grid from './modules/grid.mjs'; +import Manipulation from './modules/manipulation.mjs'; +import EffectFade from './modules/effect-fade.mjs'; +import EffectCube from './modules/effect-cube.mjs'; +import EffectFlip from './modules/effect-flip.mjs'; +import EffectCoverflow from './modules/effect-coverflow.mjs'; +import EffectCreative from './modules/effect-creative.mjs'; +import EffectCards from './modules/effect-cards.mjs'; + +// Swiper Class +const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; +Swiper.use(modules); + +export { Swiper, Swiper as default }; diff --git a/vendor/javascript/swiper/swiper-effect-utils.d.ts b/vendor/javascript/swiper/swiper-effect-utils.d.ts new file mode 100644 index 0000000..f43b577 --- /dev/null +++ b/vendor/javascript/swiper/swiper-effect-utils.d.ts @@ -0,0 +1,28 @@ +import type { Swiper, SwiperOptions } from './types/index.d.ts'; + +declare const createShadow: (suffix: string, slideEl: HTMLElement, side?: string) => HTMLElement; + +declare const effectInit: (params: { + effect: string; + swiper: Swiper; + on: () => void; + setTranslate: () => void; + setTransition: (duration: number) => void; + overwriteParams?: () => SwiperOptions; + perspective?: () => boolean; + recreateShadows?: () => void; + getEffectParams?: () => { slideShadows?: boolean }; +}) => void; + +declare const effectTarget: (effectParams: any, slideEl: HTMLElement) => void; + +declare const effectVirtualTransitionEnd: (params: { + swiper: Swiper; + duration: number; + transformElements: HTMLElement[]; + allSlides?: boolean; +}) => void; + +declare const getSlideTransformEl: (slideEl: HTMLElement) => HTMLElement; + +export { createShadow, effectInit, effectTarget, effectVirtualTransitionEnd, getSlideTransformEl }; diff --git a/vendor/javascript/swiper/swiper-effect-utils.min.mjs b/vendor/javascript/swiper/swiper-effect-utils.min.mjs new file mode 100644 index 0000000..6fd6644 --- /dev/null +++ b/vendor/javascript/swiper/swiper-effect-utils.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +export{c as createShadow}from"./shared/create-shadow.min.mjs";export{e as effectInit}from"./shared/effect-init.min.mjs";export{e as effectTarget}from"./shared/effect-target.min.mjs";export{e as effectVirtualTransitionEnd}from"./shared/effect-virtual-transition-end.min.mjs";export{a as getRotateFix,g as getSlideTransformEl}from"./shared/utils.min.mjs"; +//# sourceMappingURL=swiper-effect-utils.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper-effect-utils.min.mjs.map b/vendor/javascript/swiper/swiper-effect-utils.min.mjs.map new file mode 100644 index 0000000..fbb4170 --- /dev/null +++ b/vendor/javascript/swiper/swiper-effect-utils.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-effect-utils.mjs.mjs","names":["c","e","a","g"],"sources":["0"],"mappings":";;;;;;;;;;;;OAYSA,sBAAyB,wCACzBC,oBAAuB,sCACvBA,sBAAyB,wCACzBA,oCAAuC,wDACvCC,kBAAmBC,6BAAgC"} \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper-effect-utils.mjs b/vendor/javascript/swiper/swiper-effect-utils.mjs new file mode 100644 index 0000000..54fc34e --- /dev/null +++ b/vendor/javascript/swiper/swiper-effect-utils.mjs @@ -0,0 +1,17 @@ +/** + * Swiper 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +export { c as createShadow } from './shared/create-shadow.mjs'; +export { e as effectInit } from './shared/effect-init.mjs'; +export { e as effectTarget } from './shared/effect-target.mjs'; +export { e as effectVirtualTransitionEnd } from './shared/effect-virtual-transition-end.mjs'; +export { a as getRotateFix, g as getSlideTransformEl } from './shared/utils.mjs'; diff --git a/vendor/javascript/swiper/swiper-element-bundle.js b/vendor/javascript/swiper/swiper-element-bundle.js new file mode 100644 index 0000000..22a14c2 --- /dev/null +++ b/vendor/javascript/swiper/swiper-element-bundle.js @@ -0,0 +1,10395 @@ +/** + * Swiper Custom Element 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +(function () { + 'use strict'; + + /** + * SSR Window 5.0.1 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2025, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: June 27, 2025 + */ + /* eslint-disable no-param-reassign */ + function isObject$2(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$2(target = {}, src = {}) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$2(src[key]) && isObject$2(target[key]) && Object.keys(src[key]).length > 0) { + extend$2(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$2(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$2(win, ssrWindow); + return win; + } + + function classesToTokens(classes = '') { + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay = 0) { + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis = 'x') { + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject$1(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend$1(...args) { + const to = Object(args[0]); + for (let i = 1; i < args.length; i += 1) { + const nextSource = args[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => key !== '__proto__' && key !== 'constructor' && key !== 'prototype'); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll({ + swiper, + targetPosition, + side + }) { + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; + } + function elementChildren(element, selector = '') { + const window = getWindow(); + const children = [...element.children]; + if (window.HTMLSlotElement && element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); + } + function elementIsChildOfSlot(el, slot) { + // Breadth-first search through all parent's children and assigned elements + const elementsQueue = [slot]; + while (elementsQueue.length > 0) { + const elementToCheck = elementsQueue.shift(); + if (el === elementToCheck) { + return true; + } + elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : [])); + } + } + function elementIsChildOf(el, parent) { + const window = getWindow(); + let isChild = parent.contains(el); + if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) { + const children = [...parent.assignedElements()]; + isChild = children.includes(el); + if (!isChild) { + isChild = elementIsChildOfSlot(el, parent); + } + } + return isChild; + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes = []) { + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + function makeElementsArray(el) { + return (Array.isArray(el) ? el : [el]).filter(e => !!e); + } + function getRotateFix(swiper) { + return v => { + if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) { + return v + 0.001; + } + return v; + }; + } + function setInnerHTML(el, html = '') { + if (typeof trustedTypes !== 'undefined') { + el.innerHTML = trustedTypes.createPolicy('html', { + createHTML: s => s + }).createHTML(html); + } else { + el.innerHTML = html; + } + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice({ + userAgent + } = {}) { + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad)(?!\1).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides = {}) { + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize({ + swiper, + on, + emit + }) { + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(({ + contentBoxSize, + contentRect, + target + }) => { + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer({ + swiper, + extendParams, + on, + emit + }) { + const observers = []; + const window = getWindow(); + const attach = (target, options = {}) => { + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler(...args) { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit(...args) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + const swiperSize = swiper.size - offsetBefore - offsetAfter; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween - offsetBefore - offsetAfter; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + + // set cssMode offsets + if (params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-slides-offset-before', `${offsetBefore}px`); + setCSSProperty(wrapperEl, '--swiper-slides-offset-after', `${offsetAfter}px`); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + const slide = slides[i]; + if (slide) { + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + } + + if (isVirtual && params.slidesPerView === 'auto') { + if (params.virtual.slidesPerViewAutoSlideSize) { + slideSize = params.virtual.slidesPerViewAutoSlideSize; + } + if (slideSize && slide) { + if (params.roundLengths) slideSize = Math.floor(slideSize); + slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } else if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slide.style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slide) { + slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slide) { + slide.swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + // Check if snapToSlideEdge should be applied + const isFractionalSlidesPerView = params.slidesPerView !== 'auto' && params.slidesPerView % 1 !== 0; + const shouldSnapToSlideEdge = params.snapToSlideEdge && !params.loop && (params.slidesPerView === 'auto' || isFractionalSlidesPerView); + + // Calculate the last allowed snap index when snapToSlideEdge is enabled + // This ensures minimum slides are visible at the end + let lastAllowedSnapIndex = snapGrid.length; + if (shouldSnapToSlideEdge) { + let minVisibleSlides; + if (params.slidesPerView === 'auto') { + // For 'auto' mode, calculate how many slides fit based on actual sizes + minVisibleSlides = 1; + let accumulatedSize = 0; + for (let i = slidesSizesGrid.length - 1; i >= 0; i -= 1) { + accumulatedSize += slidesSizesGrid[i] + (i < slidesSizesGrid.length - 1 ? spaceBetween : 0); + if (accumulatedSize <= swiperSize) { + minVisibleSlides = slidesSizesGrid.length - i; + } else { + break; + } + } + } else { + minVisibleSlides = Math.floor(params.slidesPerView); + } + lastAllowedSnapIndex = Math.max(slidesLength - minVisibleSlides, 0); + } + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (shouldSnapToSlideEdge) { + // When snapToSlideEdge is enabled, only keep snaps up to lastAllowedSnapIndex + if (i <= lastAllowedSnapIndex) { + newSlidesGrid.push(slidesGridItem); + } + } else if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + // When snapToSlideEdge is disabled, keep snaps that fit within scrollable area + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + // Only add edge-aligned snap if snapToSlideEdge is not enabled + if (!shouldSnapToSlideEdge) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesProgress(translate = this && this.translate || 0) { + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.find(slideEl => slideEl.column === activeIndex); + nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1); + prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1); + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove(); + } + }); + } + } + // Skip removal if managed by React/Vue component + if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled) { + if (params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else { + realIndex = activeIndex; + } + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex); + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') { + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) { + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit({ + swiper, + runCallbacks, + direction, + step + }) { + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + } else if (runCallbacks && activeIndex !== previousIndex) { + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks = true, direction) { + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks = true, direction) { + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index = 0, speed, runCallbacks = true, internal, initial) { + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // initial virtual + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + const isInitialVirtual = isVirtual && initial; + // Update Index + if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + const browser = getBrowser(); + const isSafari = browser.isSafari; + if (isVirtual && !initial && isSafari && swiper.isElement) { + swiper.virtual.update(false, false, slideIndex); + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index = 0, speed, runCallbacks = true, internal) { + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides, + slidesOffsetBefore, + slidesOffsetAfter + } = swiper.params; + const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (bothDirections && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (bothDirections) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && bothDirections && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = bothDirections ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks = true, internal) { + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks = true, internal) { + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + const isFreeMode = params.freeMode && params.freeMode.enabled; + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks = true, internal) { + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks = true, internal, threshold = 0.5) { + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.getSlideIndexWhenGrid(swiper.clickedIndex); + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + const isGrid = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + swiper.slideToLoop(realIndex); + } else if (slideToIndex > (isGrid ? (swiper.slides.length - slidesPerView) / 2 - (swiper.params.grid.rows - 1) : swiper.slides.length - slidesPerView)) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex, initial) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const clearBlankSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideBlankClass}`); + slides.forEach(el => { + el.remove(); + }); + if (slides.length > 0) { + swiper.recalcSlides(); + swiper.updateSlides(); + } + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (params.loopAddBlankSlides && (params.slidesPerGroup > 1 || gridEnabled)) { + clearBlankSlides(); + } + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + const bothDirections = params.centeredSlides || !!params.slidesOffsetBefore || !!params.slidesOffsetAfter; + swiper.loopFix({ + slideRealIndex, + direction: bothDirections ? undefined : 'next', + initial + }); + } + + function loopFix({ + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + initial, + byController, + byMousewheel + } = {}) { + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides, + slidesOffsetBefore, + slidesOffsetAfter, + initialSlide + } = params; + const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!bothDirections && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (bothDirections && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (bothDirections && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = bothDirections ? Math.max(slidesPerGroup, Math.ceil(slidesPerView / 2)) : slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !bothDirections; + let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass))); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (bothDirections && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + if (isInitialOverflow) { + slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1); + } + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) { + if (appendSlidesIndexes.includes(activeSlideIndex)) { + appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1); + } + if (prependSlidesIndexes.includes(activeSlideIndex)) { + prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1); + } + } + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base = this) { + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId); + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) { + return; + } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) { + return; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') { + document.activeElement.blur(); + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId); + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + const document = getDocument(); + + // Get breakpoint for window/container width and update parameters + const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container'; + const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase); + const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend$1(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base = 'window', containerEl) { + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + snapToSlideEdge: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj = {}) { + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend$1(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend$1(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend$1(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor(...args) { + let el; + let params; + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend$1({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend$1({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + params.modules.forEach(mod => { + if (typeof mod === 'function' && swiper.modules.indexOf(mod) < 0) { + swiper.modules.push(mod); + } + }); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend$1({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend$1({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend$1({}, swiper.params); + swiper.passedParams = extend$1({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)); + } + getSlideIndexWhenGrid(index) { + if (this.grid && this.params.grid && this.params.grid.rows > 1) { + if (this.params.grid.fill === 'column') { + index = Math.floor(index / this.params.grid.rows); + } else if (this.params.grid.fill === 'row') { + index = index % Math.ceil(this.slides.length / this.params.grid.rows); + } + } + return index; + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view = 'current', exact = false) { + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate = true) { + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(undefined, true); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance = true, cleanStyles = true) { + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend$1(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + function Virtual({ + swiper, + extendParams, + on, + emit + }) { + extendParams({ + virtual: { + enabled: false, + slides: [], + cache: true, + slidesPerViewAutoSlideSize: 320, + renderSlide: null, + renderExternal: null, + renderExternalUpdate: true, + addSlidesBefore: 0, + addSlidesAfter: 0 + } + }); + let cssModeTimeout; + const document = getDocument(); + swiper.virtual = { + cache: {}, + from: undefined, + to: undefined, + slides: [], + offset: 0, + slidesGrid: [] + }; + const tempDOM = document.createElement('div'); + function renderSlide(slide, index) { + const params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + // eslint-disable-next-line + let slideEl; + if (params.renderSlide) { + slideEl = params.renderSlide.call(swiper, slide, index); + if (typeof slideEl === 'string') { + setInnerHTML(tempDOM, slideEl); + slideEl = tempDOM.children[0]; + } + } else if (swiper.isElement) { + slideEl = createElement('swiper-slide'); + } else { + slideEl = createElement('div', swiper.params.slideClass); + } + slideEl.setAttribute('data-swiper-slide-index', index); + if (!params.renderSlide) { + setInnerHTML(slideEl, slide); + } + if (params.cache) { + swiper.virtual.cache[index] = slideEl; + } + return slideEl; + } + function update(force, beforeInit, forceActiveIndex) { + const { + slidesPerGroup, + centeredSlides, + slidesPerView, + loop: isLoop, + initialSlide + } = swiper.params; + if (beforeInit && !isLoop && initialSlide > 0) { + return; + } + const { + addSlidesBefore, + addSlidesAfter, + slidesPerViewAutoSlideSize + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + const activeIndex = typeof forceActiveIndex === 'undefined' ? swiper.activeIndex || 0 : forceActiveIndex; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesPerViewNumeric; + if (slidesPerView === 'auto') { + if (slidesPerViewAutoSlideSize) { + let swiperSize = swiper.size; + if (!swiperSize) { + swiperSize = swiper.isHorizontal() ? swiper.el.getBoundingClientRect().width : swiper.el.getBoundingClientRect().height; + } + slidesPerViewNumeric = Math.max(1, Math.ceil(swiperSize / slidesPerViewAutoSlideSize)); + } else { + slidesPerViewNumeric = 1; + } + } else { + slidesPerViewNumeric = slidesPerView; + } + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerViewNumeric / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerViewNumeric / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerViewNumeric + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = (isLoop ? slidesPerViewNumeric : slidesPerGroup) + addSlidesBefore; + } + let from = activeIndex - slidesBefore; + let to = activeIndex + slidesAfter; + if (!isLoop) { + from = Math.max(from, 0); + to = Math.min(to, slides.length - 1); + } + let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + if (isLoop && activeIndex >= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(false, true); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); + } + + /* eslint-disable consistent-return */ + function Keyboard({ + swiper, + extendParams, + on, + emit + }) { + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true, + speed: undefined + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && (document.activeElement.isContentEditable || document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea'))) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + const speed = swiper.params.keyboard.speed; + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(speed); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(speed); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(speed); + if (isPageUp || isArrowUp) swiper.slidePrev(speed); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); + } + + /* eslint-disable consistent-return */ + function Mousewheel({ + swiper, + extendParams, + on, + emit + }) { + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + if (swiper.destroyed || !swiper.params) return; + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + if (swiper.destroyed || !swiper.params) return; + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplay.disableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); + } + + function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; + } + + const arrowSvg = ``; + function Navigation({ + swiper, + extendParams, + on, + emit + }) { + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + addIcons: true, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null, + arrowSvg + }; + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } else if (res && res.length === 1) { + res = res[0]; + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + if (params.addIcons && el.matches('.swiper-button-next,.swiper-button-prev') && !el.querySelector('svg')) { + const tempEl = document.createElement('div'); + setInnerHTML(tempEl, arrowSvg); + el.appendChild(tempEl.querySelector('svg')); + tempEl.remove(); + } + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); + if (swiper.isElement && !targetIsButton) { + const path = e.path || e.composedPath && e.composedPath(); + if (path) { + targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl)); + } + } + if (swiper.params.navigation.hideOnClick && !targetIsButton) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); + } + + function classesToSelector(classes = '') { + // Escape all CSS selector special characters + return `.${classes.trim().replace(/([\.:!+\/()[\]#>~*^$|=,'"@{}\\])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; + } + + function Pagination({ + swiper, + extendParams, + on, + emit + }) { + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function getMoveDirection(prevIndex, nextIndex, length) { + prevIndex = prevIndex % length; + nextIndex = nextIndex % length; + if (nextIndex === prevIndex + 1) { + return 'next'; + } else if (nextIndex === prevIndex - 1) { + return 'previous'; + } + return; + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length); + if (moveDirection === 'next') { + swiper.slideNext(); + } else if (moveDirection === 'previous') { + swiper.slidePrev(); + } else { + swiper.slideToLoop(index); + } + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + setInnerHTML(subEl, params.renderCustom(swiper, current + 1, total)); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + setInnerHTML(subEl, paginationHTML || ''); + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.find(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + }); + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); + } + + function Scrollbar({ + swiper, + extendParams, + on, + emit + }) { + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('changeDirection', () => { + if (!swiper.scrollbar || !swiper.scrollbar.el) return; + const params = swiper.params.scrollbar; + let { + el + } = swiper.scrollbar; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock changeDirection', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); + } + + function Parallax({ + swiper, + extendParams, + on + }) { + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = (duration = swiper.params.speed) => { + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); + } + + function Zoom({ + swiper, + extendParams, + on, + emit + }) { + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + limitToOriginalSize: false, + maxRatio: 3, + minRatio: 1, + panOnMouseMove: false, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let isPanningWithMouse = false; + let mousePanStart = { + x: 0, + y: 0 + }; + const mousePanSensitivity = -3; // Negative to invert pan direction + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getMaxRatio() { + const params = swiper.params.zoom; + const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { + const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; + return Math.min(imageMaxRatio, maxRatio); + } + return maxRatio; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = getMaxRatio(); + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + let allowTouchMoveTimeout; + function allowTouchMove() { + swiper.touchEventsData.preventTouchMoveFromPointerMove = false; + } + function preventTouchMove() { + clearTimeout(allowTouchMoveTimeout); + swiper.touchEventsData.preventTouchMoveFromPointerMove = true; + allowTouchMoveTimeout = setTimeout(() => { + if (swiper.destroyed) return; + allowTouchMove(); + }); + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + const isMouseEvent = e.pointerType === 'mouse'; + const isMousePan = isMouseEvent && swiper.params.zoom.panOnMouseMove; + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) { + return; + } + const zoom = swiper.zoom; + if (!gesture.imageEl) { + return; + } + if (!image.isTouched || !gesture.slideEl) { + if (isMousePan) onMouseMove(e); + return; + } + if (isMousePan) { + onMouseMove(e); + return; + } + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + 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)) { + image.isTouched = false; + allowTouchMove(); + return; + } + 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)) { + image.isTouched = false; + allowTouchMove(); + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + preventTouchMove(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + evCache.length = 0; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function onMouseMove(e) { + // Only pan if zoomed in and mouse panning is enabled + if (currentScale <= 1 || !gesture.imageWrapEl) return; + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return; + const currentTransform = window.getComputedStyle(gesture.imageWrapEl).transform; + const matrix = new window.DOMMatrix(currentTransform); + if (!isPanningWithMouse) { + isPanningWithMouse = true; + mousePanStart.x = e.clientX; + mousePanStart.y = e.clientY; + image.startX = matrix.e; + image.startY = matrix.f; + image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + return; + } + const deltaX = (e.clientX - mousePanStart.x) * mousePanSensitivity; + const deltaY = (e.clientY - mousePanStart.y) * mousePanSensitivity; + const scaledWidth = image.width * currentScale; + const scaledHeight = image.height * currentScale; + const slideWidth = gesture.slideWidth; + const slideHeight = gesture.slideHeight; + const minX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + const maxX = -minX; + const minY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + const maxY = -minY; + const newX = Math.max(Math.min(image.startX + deltaX, maxX), minX); + const newY = Math.max(Math.min(image.startY + deltaY, maxY), minY); + gesture.imageWrapEl.style.transitionDuration = '0ms'; + gesture.imageWrapEl.style.transform = `translate3d(${newX}px, ${newY}px, 0)`; + mousePanStart.x = e.clientX; + mousePanStart.y = e.clientY; + image.startX = newX; + image.startY = newY; + image.currentX = newX; + image.currentY = newY; + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + gesture.maxRatio = getMaxRatio(); + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const prevScale = currentScale; + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + image.touchesStart.x = undefined; + image.touchesStart.y = undefined; + } + const maxRatio = getMaxRatio(); + zoom.scale = forceZoomRatio || maxRatio; + currentScale = forceZoomRatio || maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + if (prevScale > 0 && forceZoomRatio && typeof image.currentX === 'number' && typeof image.currentY === 'number') { + translateX = image.currentX * zoom.scale / prevScale; + translateY = image.currentY * zoom.scale / prevScale; + } else { + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + } + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + image.currentX = translateX; + image.currentY = translateY; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + gesture.maxRatio = getMaxRatio(); + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + image.currentX = undefined; + image.currentY = undefined; + image.touchesStart.x = undefined; + image.touchesStart.y = undefined; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + if (swiper.params.zoom.panOnMouseMove) { + mousePanStart = { + x: 0, + y: 0 + }; + if (isPanningWithMouse) { + isPanningWithMouse = false; + image.startX = 0; + image.startY = 0; + } + } + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); + } + + /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ + function Controller({ + swiper, + extendParams, + on + }) { + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control]; + controlElements.forEach(controlElement => { + if (!swiper.controller.control) swiper.controller.control = []; + if (controlElement && controlElement.swiper) { + swiper.controller.control.push(controlElement.swiper); + } else if (controlElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onControllerSwiper = e => { + swiper.controller.control.push(e.detail[0]); + swiper.update(); + controlElement.removeEventListener(eventName, onControllerSwiper); + }; + controlElement.addEventListener(eventName, onControllerSwiper); + } + }); + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); + } + + function A11y({ + swiper, + extendParams, + on + }) { + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + containerRole: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null, + scrollOnFocus: true, + wrapperLiveRegion: true + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + let preventFocusHandler; + let focusTargetSlideEl; + let visibilityChangedTimestamp = new Date().getTime(); + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + setInnerHTML(notification, message); + } + function getRandomNumber(size = 16) { + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { + const prevEls = makeElementsArray(swiper.navigation.prevEl); + const nextEls = makeElementsArray(swiper.navigation.nextEl); + if (nextEls.includes(targetEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (prevEls.includes(targetEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = e => { + if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) { + preventFocusHandler = true; + } + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + preventFocusHandler = false; + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const onVisibilityChange = e => { + visibilityChangedTimestamp = new Date().getTime(); + }; + const handleFocus = e => { + if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; + if (new Date().getTime() - visibilityChangedTimestamp < 100) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + focusTargetSlideEl = slideEl; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + const isActive = (isVirtual ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : swiper.slides.indexOf(slideEl)) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + requestAnimationFrame(() => { + if (preventFocusHandler) return; + if (swiper.params.loop) { + swiper.slideToLoop(swiper.getSlideIndexWhenGrid(parseInt(slideEl.getAttribute('data-swiper-slide-index'))), 0); + } else if (isVirtual) { + swiper.slideTo(swiper.getSlideIndexWhenGrid(parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10)), 0); + } else { + swiper.slideTo(swiper.getSlideIndexWhenGrid(swiper.slides.indexOf(slideEl)), 0); + } + preventFocusHandler = false; + }); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + if (params.containerRole) { + addElRole(containerEl, params.containerRole); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + addElId(wrapperEl, wrapperId); + if (params.wrapperLiveRegion) { + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElLive(wrapperEl, live); + } + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + // Tab focus + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); + } + + function History({ + swiper, + extendParams, + on + }) { + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + } + + function HashNavigation({ + swiper, + extendParams, + emit, + on + }) { + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.find(slideEl => slideEl.getAttribute('data-hash') === hash); + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); + } + + /* eslint no-underscore-dangle: "off" */ + /* eslint no-use-before-define: "off" */ + function Autoplay({ + swiper, + extendParams, + on, + emit, + params + }) { + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active')); + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const getTotalDelay = () => { + let totalDelay = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0) { + totalDelay = currentSlideDelay; + } + return totalDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = delayForce; + if (typeof delay === 'undefined') { + delay = getTotalDelay(); + autoplayDelayTotal = delay; + autoplayDelayCurrent = delay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + } + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + autoplayTimeLeft = getTotalDelay(); + autoplayDelayTotal = getTotalDelay(); + } + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); + } + + function Thumb({ + swiper, + extendParams, + on + }) { + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function isVirtualEnabled() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return false; + return thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled; + } + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + if (thumbsParams.swiper.destroyed) { + initialized = false; + return false; + } + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject$1(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + if (isVirtualEnabled()) { + swiper.thumbs.swiper.on('virtualUpdate', () => { + update(false, { + autoScroll: false + }); + }); + } + return true; + } + function update(initial, p) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || isVirtualEnabled()) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + if (p?.autoScroll ?? true) { + autoScroll(initial ? 0 : undefined); + } + } + function autoScroll(slideSpeed) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`); + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, slideSpeed); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener(eventName, onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener(eventName, onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); + } + + function freeMode({ + swiper, + extendParams, + emit, + once + }) { + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd({ + currentPos + }) { + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); + } + + function Grid({ + swiper, + extendParams, + on + }) { + extendParams({ + grid: { + rows: 1, + fill: 'column' + } + }); + let slidesNumberEvenToRows; + let slidesPerRow; + let numFullColumns; + let wasMultiRow; + const getSpaceBetween = () => { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; + } + + function appendSlide(slides) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + const appendElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + setInnerHTML(tempDOM, slideEl); + slidesEl.append(tempDOM.children[0]); + setInnerHTML(tempDOM, ''); + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + } + + function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + setInnerHTML(tempDOM, slideEl); + slidesEl.prepend(tempDOM.children[0]); + setInnerHTML(tempDOM, ''); + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); + } + + function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); + } + + function Manipulation({ + swiper + }) { + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); + } + + function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate _virtualUpdated', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); + } + + function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; + } + + function effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides + }) { + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.find(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode); + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } + } + + function EffectFade({ + swiper, + extendParams, + on + }) { + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCube({ + swiper, + extendParams, + on + }) { + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const r = getRotateFix(swiper); + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); + } + + function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; + } + + function EffectFlip({ + swiper, + extendParams, + on + }) { + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + const rotateFix = getRotateFix(swiper); + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCoverflow({ + swiper, + extendParams, + on + }) { + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + const r = getRotateFix(swiper); + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); + } + + function EffectCreative({ + swiper, + extendParams, + on + }) { + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + const rotateFix = getRotateFix(swiper); + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCards({ + swiper, + extendParams, + on + }) { + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${(params.rotate || swiper.isHorizontal() ? -25 : 0) * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + _loopSwapReset: false, + watchSlidesProgress: true, + loopAdditionalSlides: swiper.params.cardsEffect.rotate ? 3 : 2, + centeredSlides: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + /** + * Swiper 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + + + // Swiper Class + const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; + Swiper.use(modules); + + /* underscore in name -> watch for changes */ + const paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_snapToSlideEdge', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', + // modules + 'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; + } + function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); + } + function needsNavigation(params = {}) { + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; + } + function needsPagination(params = {}) { + return params.pagination && typeof params.pagination.el === 'undefined'; + } + function needsScrollbar(params = {}) { + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; + } + function attrToProp(attrName = '') { + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); + } + + function updateSwiper({ + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + }) { + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && !passedParams.thumbs.swiper.destroyed && currentParams.thumbs && (!currentParams.thumbs.swiper || currentParams.thumbs.swiper.destroyed)) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + setInnerHTML(nextEl, swiper.navigation.arrowSvg); + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + setInnerHTML(prevEl, swiper.navigation.arrowSvg); + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); + } + + const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; + }; + const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; + function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.find(mParam => attr.name.startsWith(`${mParam}-`)); + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') { + passedParams[parentObjName] = {}; + } + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + if (passedParams[parentObjName] === false) { + passedParams[parentObjName] = { + enabled: false + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; + } + + /** + * Swiper Custom Element 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + + + /* eslint-disable spaced-comment */ + + const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;height:100%;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;padding:0;position:relative;width:100%;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:initial;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}.swiper-css-mode.swiper-horizontal ::slotted(swiper-slide):last-child{margin-inline-end:var(--swiper-slides-offset-after)}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}.swiper-css-mode.swiper-vertical ::slotted(swiper-slide):last-child{margin-block-end:var(--swiper-slides-offset-after)}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper:after{content:"";left:0;pointer-events:none;position:absolute;top:0}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{align-items:center;color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;display:flex;height:var(--swiper-navigation-size);justify-content:center;position:absolute;width:var(--swiper-navigation-size);z-index:10}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{height:100%;object-fit:contain;transform-origin:center;width:100%;fill:currentColor;pointer-events:none}.swiper-button-lock{display:none}.swiper-button-next,.swiper-button-prev{margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto}.swiper-button-prev .swiper-navigation-icon{transform:rotate(180deg)}.swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.swiper-horizontal .swiper-button-next,.swiper-horizontal .swiper-button-prev,.swiper-horizontal~.swiper-button-next,.swiper-horizontal~.swiper-button-prev{margin-left:0;margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.swiper-horizontal .swiper-button-prev,.swiper-horizontal.swiper-rtl .swiper-button-next,.swiper-horizontal.swiper-rtl~.swiper-button-next,.swiper-horizontal~.swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto}.swiper-horizontal .swiper-button-next,.swiper-horizontal.swiper-rtl .swiper-button-prev,.swiper-horizontal.swiper-rtl~.swiper-button-prev,.swiper-horizontal~.swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.swiper-horizontal .swiper-button-prev .swiper-navigation-icon,.swiper-horizontal.swiper-rtl .swiper-button-next .swiper-navigation-icon,.swiper-horizontal.swiper-rtl~.swiper-button-next .swiper-navigation-icon,.swiper-horizontal~.swiper-button-prev .swiper-navigation-icon{transform:rotate(180deg)}.swiper-horizontal.swiper-rtl .swiper-button-prev .swiper-navigation-icon,.swiper-horizontal.swiper-rtl~.swiper-button-prev .swiper-navigation-icon{transform:rotate(0deg)}.swiper-vertical .swiper-button-next,.swiper-vertical .swiper-button-prev,.swiper-vertical~.swiper-button-next,.swiper-vertical~.swiper-button-prev{left:var(--swiper-navigation-top-offset,50%);margin-left:calc(0px - var(--swiper-navigation-size)/2);margin-top:0;right:auto}.swiper-vertical .swiper-button-prev,.swiper-vertical~.swiper-button-prev{bottom:auto;top:var(--swiper-navigation-sides-offset,4px)}.swiper-vertical .swiper-button-prev .swiper-navigation-icon,.swiper-vertical~.swiper-button-prev .swiper-navigation-icon{transform:rotate(-90deg)}.swiper-vertical .swiper-button-next,.swiper-vertical~.swiper-button-next{bottom:var(--swiper-navigation-sides-offset,4px);top:auto}.swiper-vertical .swiper-button-next .swiper-navigation-icon,.swiper-vertical~.swiper-button-next .swiper-navigation-icon{transform:rotate(90deg)}.swiper-pagination{position:absolute;text-align:center;transform:translateZ(0);transition:opacity .3s;z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{position:relative;transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);display:inline-block;height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px))}button.swiper-pagination-bullet{appearance:none;border:none;box-shadow:none;margin:0;padding:0}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translate3d(0,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{display:block;margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,left .2s}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,#00000040);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));height:100%;left:0;position:absolute;top:0;transform:scale(0);transform-origin:left top;width:100%}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0;width:100%}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{height:100%;left:0;top:0;width:var(--swiper-pagination-progressbar-size,4px)}.swiper-pagination-lock{display:none}.swiper-scrollbar{background:var(--swiper-scrollbar-bg-color,#0000001a);border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{bottom:var(--swiper-scrollbar-bottom,4px);height:var(--swiper-scrollbar-size,4px);left:var(--swiper-scrollbar-sides-offset,1%);position:absolute;top:var(--swiper-scrollbar-top,auto);width:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);z-index:50}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{height:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);left:var(--swiper-scrollbar-left,auto);position:absolute;right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);width:var(--swiper-scrollbar-size,4px);z-index:50}.swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,#00000080);border-radius:var(--swiper-scrollbar-border-radius,10px);height:100%;left:0;position:relative;top:0;width:100%}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{left:0;opacity:0;pointer-events:none;position:absolute;top:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{margin:0 auto;transition-timing-function:ease-out}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-direction:column;flex-wrap:wrap}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){backface-visibility:hidden;height:100%;pointer-events:none;transform-origin:0 0;visibility:hidden;width:100%;z-index:1}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{bottom:0;height:100%;left:0;opacity:.6;position:absolute;width:100%;z-index:0}.swiper-cube .swiper-cube-shadow:before{background:#000;bottom:0;content:"";filter:blur(50px);left:0;position:absolute;right:0;top:0}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){backface-visibility:hidden;pointer-events:none;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){backface-visibility:hidden;overflow:hidden;transform-origin:center bottom}`; + const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}::slotted(.swiper-slide-shadow){background:#00000026}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(270deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(90deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(0deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(180deg,#00000080,#0000)}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid #0000;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){backface-visibility:hidden;z-index:0}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){backface-visibility:hidden;z-index:0}::slotted(.swiper-zoom-container){align-items:center;display:flex;height:100%;justify-content:center;text-align:center;width:100%}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-height:100%;max-width:100%;object-fit:contain}`; + + class DummyHTMLElement {} + const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; + const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } + }; + class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + setInnerHTML(el, ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
+
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `); + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + if (this.swiper && this.swiper.initialized) return; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: (name, ...args) => { + if (name === 'observerUpdate') { + this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.swiper && this.swiper.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!(this.swiper && this.swiper.initialized)) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } + } + paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!(this.swiper && this.swiper.initialized)) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); + }); + class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + if (this.swiperLoopMoveDOM) { + return; + } + this.initialize(); + } + } + + // eslint-disable-next-line + const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); + }; + if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; + } + + register(); + +})(); diff --git a/vendor/javascript/swiper/swiper-element-bundle.min.js b/vendor/javascript/swiper/swiper-element-bundle.min.js new file mode 100644 index 0000000..7374173 --- /dev/null +++ b/vendor/javascript/swiper/swiper-element-bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +!function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s={},i={}){const r=["__proto__","constructor","prototype"];Object.keys(i).filter(e=>r.indexOf(e)<0).forEach(r=>{void 0===s[r]?s[r]=i[r]:e(i[r])&&e(s[r])&&Object.keys(i[r]).length>0&&t(s[r],i[r])})}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const r={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function a(){const e="undefined"!=typeof window?window:{};return t(e,r),e}function n(e=""){return e.trim().split(" ").filter(e=>!!e.trim())}function l(e,t=0){return setTimeout(e,t)}function o(){return Date.now()}function d(e,t="x"){const s=a();let i,r,n;const l=function(e){const t=a();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(r=l.transform||l.webkitTransform,r.split(",").length>6&&(r=r.split(", ").map(e=>e.replace(",",".")).join(", ")),n=new s.WebKitCSSMatrix("none"===r?"":r)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=n.toString().split(",")),"x"===t&&(r=s.WebKitCSSMatrix?n.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(r=s.WebKitCSSMatrix?n.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),r||0}function p(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function u(...e){const t=Object(e[0]);for(let s=1;s"__proto__"!==e&&"constructor"!==e&&"prototype"!==e);for(let s=0,r=e.length;sr?"next":"prev",p=(e,t)=>"next"===d&&e>=t||"prev"===d&&e<=t,c=()=>{n=(new Date).getTime(),null===l&&(l=n);const a=Math.max(Math.min((n-l)/o,1),0),d=.5-Math.cos(a*Math.PI)/2;let u=r+d*(t-r);if(p(u,t)&&(u=t),e.wrapperEl.scrollTo({[s]:u}),p(u,t))return e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.scrollSnapType="",setTimeout(()=>{e.wrapperEl.style.overflow="",e.wrapperEl.scrollTo({[s]:u})}),void i.cancelAnimationFrame(e.cssModeFrameID);e.cssModeFrameID=i.requestAnimationFrame(c)};c()}function f(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function g(e,t=""){const s=a(),i=[...e.children];return s.HTMLSlotElement&&e instanceof HTMLSlotElement&&i.push(...e.assignedElements()),t?i.filter(e=>e.matches(t)):i}function w(e){try{return void console.warn(e)}catch(e){}}function v(e,t=[]){const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:n(t)),s}function b(e){const t=a(),s=i(),r=e.getBoundingClientRect(),n=s.body,l=e.clientTop||n.clientTop||0,o=e.clientLeft||n.clientLeft||0,d=e===t?t.scrollY:e.scrollTop,p=e===t?t.scrollX:e.scrollLeft;return{top:r.top+d-l,left:r.left+p-o}}function y(e,t){return a().getComputedStyle(e,null).getPropertyValue(t)}function x(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function E(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}function S(e,t){t&&e.addEventListener("transitionend",function s(i){i.target===e&&(t.call(e,i),e.removeEventListener("transitionend",s))})}function T(e,t,s){const i=a();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function M(e){return(Array.isArray(e)?e:[e]).filter(e=>!!e)}function C(e){return t=>Math.abs(t)>0&&e.browser&&e.browser.need3dFix&&Math.abs(t)%90==0?t+.001:t}function P(e,t=""){"undefined"!=typeof trustedTypes?e.innerHTML=trustedTypes.createPolicy("html",{createHTML:e=>e}).createHTML(t):e.innerHTML=t}let z,L,k;function A(){return z||(z=function(){const e=a(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),z}function I(e={}){return L||(L=function({userAgent:e}={}){const t=A(),s=a(),i=s.navigator.platform,r=e||s.navigator.userAgent,n={ios:!1,android:!1},l=s.screen.width,o=s.screen.height,d=r.match(/(Android);?[\s\/]+([\d.]+)?/);let p=r.match(/(iPad)(?!\1).*OS\s([\d_]+)/);const c=r.match(/(iPod)(.*OS\s([\d_]+))?/),u=!p&&r.match(/(iPhone\sOS|iOS)\s([\d_]+)/),m="Win32"===i;let h="MacIntel"===i;return!p&&h&&t.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${o}`)>=0&&(p=r.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),h=!1),d&&!m&&(n.os="android",n.android=!0),(p||u||c)&&(n.os="ios",n.ios=!0),n}(e)),L}function $(){return k||(k=function(){const e=a(),t=I();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map(e=>Number(e));s=e<16||16===e&&i<2}}const r=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),n=i();return{isSafari:s||n,needPerspectiveFix:s,need3dFix:n||r&&t.ios,isWebView:r}}()),k}var O={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach(e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)}),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(...s){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy,t.apply(i,s)}return r.__emitterProxy=t,i.on(e,r,s)},onAny(e,t){const s=this;if(!s.eventsListeners||s.destroyed)return s;if("function"!=typeof e)return s;const i=t?"unshift":"push";return s.eventsAnyListeners.indexOf(e)<0&&s.eventsAnyListeners[i](e),s},offAny(e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsAnyListeners)return t;const s=t.eventsAnyListeners.indexOf(e);return s>=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach(e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)})}),s):s},emit(...e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsListeners)return t;let s,i,r;"string"==typeof e[0]||Array.isArray(e[0])?(s=e[0],i=e.slice(1,e.length),r=t):(s=e[0].events,i=e[0].data,r=e[0].context||t),i.unshift(r);return(Array.isArray(s)?s:s.split(" ")).forEach(e=>{t.eventsAnyListeners&&t.eventsAnyListeners.length&&t.eventsAnyListeners.forEach(t=>{t.apply(r,[e,...i])}),t.eventsListeners&&t.eventsListeners[e]&&t.eventsListeners[e].forEach(e=>{e.apply(r,i)})}),t}};const D=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const _=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const G=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame(()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&!t.lazyPreloaderManaged&&t.remove())})),t&&!t.lazyPreloaderManaged&&t.remove()}},B=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},R=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,a=[s-t];return a.push(...Array.from({length:t}).map((e,t)=>s+i+t)),void e.slides.forEach((t,s)=>{a.includes(t.column)&&B(e,s)})}const a=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=a+t;i+=1){const t=(i%s+s)%s;(ta)&&B(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(a+t,s-1);i+=1)i!==r&&(i>a||i=0?E=parseFloat(E.replace("%",""))/100*x:"string"==typeof E&&(E=parseFloat(E)),e.virtualSize=-E-f-w,d.forEach(e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""}),s.centeredSlides&&s.cssMode&&(m(i,"--swiper-centered-offset-before",""),m(i,"--swiper-centered-offset-after","")),s.cssMode&&(m(i,"--swiper-slides-offset-before",`${f}px`),m(i,"--swiper-slides-offset-after",`${w}px`));const P=s.grid&&s.grid.rows>1&&e.grid;let z;P?e.grid.initSlides(d):e.grid&&e.grid.unsetSlides();const L="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter(e=>void 0!==s.breakpoints[e].slidesPerView).length>0;for(let i=0;i=0&&(t+=h[s]+(s1&&(i||c.push(e.virtualSize-x))}if(l&&s.loop){const t=h[0]+E;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==d.length-1).forEach(e=>{e.style[t]=`${E}px`})}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;h.forEach(t=>{e+=t+(E||0)}),e-=E;const t=e>x?e-x:0;c=c.map(e=>e<=0?-f:e>t?t+w:e)}if(s.centerInsufficientSlides){let e=0;if(h.forEach(t=>{e+=t+(E||0)}),e-=E,e{c[s]=e-t}),u.forEach((e,s)=>{u[s]=e+t})}}if(Object.assign(e,{slides:d,snapGrid:c,slidesGrid:u,slidesSizesGrid:h}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){m(i,"--swiper-centered-offset-before",-c[0]+"px"),m(i,"--swiper-centered-offset-after",e.size/2-h[h.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map(e=>e+t),e.slidesGrid=e.slidesGrid.map(e=>e+s)}if(p!==o&&e.emit("slidesLengthChange"),c.length!==v&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),u.length!==b&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(l||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);p<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,a=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach(e=>{s.push(e)});else for(r=0;rt.slides.length&&!i)break;s.push(n(e))}else s.push(n(t.activeIndex));for(r=0;ra?e:a}(a||0===a)&&(t.wrapperEl.style.height=`${a}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],f=u>=0&&u1&&m<=t.size||u<=0&&m>=t.size;f&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e)),D(o,f,s.slideVisibleClass),D(o,h,s.slideFullyVisibleClass),o.progress=r?-p:p,o.originalProgress=r?-c:c}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:a,isEnd:n,progressLoop:l}=t;const o=a,d=n;if(0===i)r=0,a=!0,n=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;a=s||r<=0,n=l||r>=1,s&&(r=0),l&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],a=t.slidesGrid[i],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=r?(o-r)/n:(o+n-a)/n,l>1&&(l-=1)}Object.assign(t,{progress:r,progressLoop:l,isBeginning:a,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),a&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!a||d&&!n)&&t.emit("fromEdge"),t.emit("progress",r)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,a=e.virtual&&s.virtual.enabled,n=e.grid&&s.grid&&s.grid.rows>1,l=e=>g(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,p;if(a)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${r}"]`);else n?(o=t.find(e=>e.column===r),p=t.find(e=>e.column===r+1),d=t.find(e=>e.column===r-1)):o=t[r];o&&(n||(p=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!p&&(p=t[0]),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach(e=>{_(e,e===o,s.slideActiveClass),_(e,e===p,s.slideNextClass),_(e,e===d,s.slidePrevClass)}),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:a,realIndex:n,snapIndex:l}=t;let o,d=e;const p=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let r;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}(t)),i.indexOf(s)>=0)o=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/r.slidesPerGroup)}if(o>=i.length&&(o=i.length-1),d===a&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===a&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=p(d));const c=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled)u=r.loop?p(d):d;else if(c){const e=t.slides.find(e=>e.column===d);let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:u,previousIndex:a,activeIndex:d}),t.initialized&&R(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach(e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)});let a,n=!1;if(r)for(let e=0;eo?o:i&&ea?"next":r=o.length&&(w=o.length-1);const v=-o[w];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(a.initialized&&n!==c){if(!a.allowSlideNext&&(u?v>a.translate&&v>a.minTranslate():va.translate&&v>a.maxTranslate()&&(c||0)!==n)return!1}let b;n!==(p||0)&&s&&a.emit("beforeSlideChangeStart"),a.updateProgress(v),b=n>c?"next":n0?(a._cssModeVirtualInitialSet=!0,requestAnimationFrame(()=>{m[e?"scrollLeft":"scrollTop"]=s})):m[e?"scrollLeft":"scrollTop"]=s,y&&requestAnimationFrame(()=>{a.wrapperEl.style.scrollSnapType="",a._immediateVirtual=!1});else{if(!a.support.smoothScroll)return h({swiper:a,targetPosition:s,side:e?"left":"top"}),!0;m.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}const x=$().isSafari;return y&&!r&&x&&a.isElement&&a.virtual.update(!1,!1,n),a.setTransition(t),a.setTranslate(v),a.updateActiveIndex(n),a.updateSlidesClasses(),a.emit("beforeTransitionStart",t,i),a.transitionStart(s,b),0===t?a.transitionEnd(s,b):a.animating||(a.animating=!0,a.onSlideToWrapperTransitionEnd||(a.onSlideToWrapperTransitionEnd=function(e){a&&!a.destroyed&&e.target===this&&(a.wrapperEl.removeEventListener("transitionend",a.onSlideToWrapperTransitionEnd),a.onSlideToWrapperTransitionEnd=null,delete a.onSlideToWrapperTransitionEnd,a.transitionEnd(s,b))}),a.wrapperEl.addEventListener("transitionend",a.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e=0,t,s=!0,i){if("string"==typeof e){e=parseInt(e,10)}const r=this;if(r.destroyed)return;void 0===t&&(t=r.params.speed);const a=r.grid&&r.params.grid&&r.params.grid.rows>1;let n=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)n+=r.virtual.slidesBefore;else{let e;if(a){const t=n*r.params.grid.rows;e=r.slides.find(e=>1*e.getAttribute("data-swiper-slide-index")===t).column}else e=r.getSlideIndexByData(n);const t=a?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s,slidesOffsetBefore:l,slidesOffsetAfter:o}=r.params,d=s||!!l||!!o;let p=r.params.slidesPerView;"auto"===p?p=r.slidesPerViewDynamic():(p=Math.ceil(parseFloat(r.params.slidesPerView,10)),d&&p%2==0&&(p+=1));let c=t-e1*t.getAttribute("data-swiper-slide-index")===e).column}else n=r.getSlideIndexByData(n)}return requestAnimationFrame(()=>{r.slideTo(n,t,s,i)}),r},slideNext:function(e,t=!0,s){const i=this,{enabled:r,params:a,animating:n}=i;if(!r||i.destroyed)return i;void 0===e&&(e=i.params.speed);let l=a.slidesPerGroup;"auto"===a.slidesPerView&&1===a.slidesPerGroup&&a.slidesPerGroupAuto&&(l=Math.max(i.slidesPerViewDynamic("current",!0),1));const o=i.activeIndex{i.slideTo(i.activeIndex+o,e,t,s)}),!0}return a.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+o,e,t,s)},slidePrev:function(e,t=!0,s){const i=this,{params:r,snapGrid:a,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=i;if(!o||i.destroyed)return i;void 0===e&&(e=i.params.speed);const p=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!p&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function c(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=c(l?i.translate:-i.translate),m=a.map(e=>c(e)),h=r.freeMode&&r.freeMode.enabled;let f=a[m.indexOf(u)-1];if(void 0===f&&(r.cssMode||h)){let e;a.forEach((t,s)=>{u>=t&&(e=s)}),void 0!==e&&(f=h?a[e]:a[e>0?e-1:e])}let g=0;if(void 0!==f&&(g=n.indexOf(f),g<0&&(g=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(g=g-i.slidesPerViewDynamic("previous",!0)+1,g=Math.max(g,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame(()=>{i.slideTo(g,e,t,s)}),!0):i.slideTo(g,e,t,s)},slideReset:function(e,t=!0,s){const i=this;if(!i.destroyed)return void 0===e&&(e=i.params.speed),i.slideTo(i.activeIndex,e,t,s)},slideToClosest:function(e,t=!0,s,i=.5){const r=this;if(r.destroyed)return;void 0===e&&(e=r.params.speed);let a=r.activeIndex;const n=Math.min(r.params.slidesPerGroupSkip,a),l=n+Math.floor((a-n)/r.params.slidesPerGroup),o=r.rtlTranslate?r.translate:-r.translate;if(o>=r.snapGrid[l]){const e=r.snapGrid[l];o-e>(r.snapGrid[l+1]-e)*i&&(a+=r.params.slidesPerGroup)}else{const e=r.snapGrid[l-1];o-e<=(r.snapGrid[l]-e)*i&&(a-=r.params.slidesPerGroup)}return a=Math.max(a,0),a=Math.min(a,r.slidesGrid.length-1),r.slideTo(a,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,a=e.getSlideIndexWhenGrid(e.clickedIndex);const n=e.isElement?"swiper-slide":`.${t.slideClass}`,o=e.grid&&e.params.grid&&e.params.grid.rows>1;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?e.slideToLoop(r):a>(o?(e.slides.length-i)/2-(e.params.grid.rows-1):e.slides.length-i)?(e.loopFix(),a=e.getSlideIndex(g(s,`${n}[data-swiper-slide-index="${r}"]`)[0]),l(()=>{e.slideTo(a)})):e.slideTo(a)}else e.slideTo(a)}};var V={loopCreate:function(e,t){const s=this,{params:i,slidesEl:r}=s;if(!i.loop||s.virtual&&s.params.virtual.enabled)return;const a=()=>{g(r,`.${i.slideClass}, swiper-slide`).forEach((e,t)=>{e.setAttribute("data-swiper-slide-index",t)})},n=s.grid&&i.grid&&i.grid.rows>1;i.loopAddBlankSlides&&(i.slidesPerGroup>1||n)&&(()=>{const e=g(r,`.${i.slideBlankClass}`);e.forEach(e=>{e.remove()}),e.length>0&&(s.recalcSlides(),s.updateSlides())})();const l=i.slidesPerGroup*(n?i.grid.rows:1),o=s.slides.length%l!==0,d=n&&s.slides.length%i.grid.rows!==0,p=e=>{for(let t=0;t1;d.lengthe.classList.contains(m.slideActiveClass))):z=r;const L="next"===s||!s,k="prev"===s||!s;let A=0,I=0;const $=(S?d[r].column:r)+(b&&void 0===i?-y/2+.5:0);if($=0;t-=1)d[t].column===e&&T.push(t)}else T.push(C-t-1)}}else if($+y>C-E){I=Math.max($-(C-2*E),x),P&&(I=Math.max(I,y-C+v+1));for(let e=0;e{e.column===t&&M.push(s)}):M.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame(()=>{o.__preventObserver__=!1}),"cards"===o.params.effect&&d.length{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1}),L&&M.forEach(e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1}),o.recalcSlides(),"auto"===m.slidesPerView?o.updateSlides():S&&(T.length>0&&k||M.length>0&&L)&&o.slides.forEach((e,t)=>{o.grid.updateSlide(t,e,o.slides)}),m.watchSlidesProgress&&o.updateSlidesOffset(),t)if(T.length>0&&k){if(void 0===e){const e=o.slidesGrid[z],t=o.slidesGrid[z+A]-e;l?o.setTranslate(o.translate-t):(o.slideTo(z+Math.ceil(A),0,!1,!0),i&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(i){const e=S?T.length/m.grid.rows:T.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(M.length>0&&L)if(void 0===e){const e=o.slidesGrid[z],t=o.slidesGrid[z-I]-e;l?o.setTranslate(o.translate-t):(o.slideTo(z-I,0,!1,!0),i&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=S?M.length/m.grid.rows:M.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=p,o.allowSlideNext=c,o.controller&&o.controller.control&&!n){const a={slideRealIndex:e,direction:s,setTranslate:i,activeSlideIndex:r,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach(e=>{!e.destroyed&&e.params.loop&&e.loopFix({...a,slideTo:e.params.slidesPerView===m.slidesPerView&&t})}):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...a,slideTo:o.controller.control.params.slidesPerView===m.slidesPerView&&t})}o.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||!s||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach(e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e}),e.slides.forEach(e=>{e.removeAttribute("data-swiper-slide-index")}),i.forEach(e=>{s.append(e)}),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function q(e,t,s){const i=a(),{params:r}=e,n=r.edgeSwipeDetection,l=r.edgeSwipeThreshold;return!n||!(s<=l||s>=i.innerWidth-l)||"prevent"===n&&(t.preventDefault(),!0)}function F(e){const t=this,s=i();let r=e;r.originalEvent&&(r=r.originalEvent);const n=t.touchEventsData;if("pointerdown"===r.type){if(null!==n.pointerId&&n.pointerId!==r.pointerId)return;n.pointerId=r.pointerId}else"touchstart"===r.type&&1===r.targetTouches.length&&(n.touchId=r.targetTouches[0].identifier);if("touchstart"===r.type)return void q(t,r,r.targetTouches[0].pageX);const{params:l,touches:d,enabled:p}=t;if(!p)return;if(!l.simulateTouch&&"mouse"===r.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let c=r.target;if("wrapper"===l.touchEventsTarget&&!function(e,t){const s=a();let i=t.contains(e);!i&&s.HTMLSlotElement&&t instanceof HTMLSlotElement&&(i=[...t.assignedElements()].includes(e),i||(i=function(e,t){const s=[t];for(;s.length>0;){const t=s.shift();if(e===t)return!0;s.push(...t.children,...t.shadowRoot?t.shadowRoot.children:[],...t.assignedElements?t.assignedElements():[])}}(e,t)));return i}(c,t.wrapperEl))return;if("which"in r&&3===r.which)return;if("button"in r&&r.button>0)return;if(n.isTouched&&n.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,m=r.composedPath?r.composedPath():r.path;u&&r.target&&r.target.shadowRoot&&m&&(c=m[0]);const h=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!r.target||!r.target.shadowRoot);if(l.noSwiping&&(f?function(e,t=this){return function t(s){if(!s||s===i()||s===a())return null;s.assignedSlot&&(s=s.assignedSlot);const r=s.closest(e);return r||s.getRootNode?r||t(s.getRootNode().host):null}(t)}(h,c):c.closest(h)))return void(t.allowClick=!0);if(l.swipeHandler&&!c.closest(l.swipeHandler))return;d.currentX=r.pageX,d.currentY=r.pageY;const g=d.currentX,w=d.currentY;if(!q(t,r,g))return;Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=g,d.startY=w,n.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1);let v=!0;c.matches(n.focusableElements)&&(v=!1,"SELECT"===c.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==c&&("mouse"===r.pointerType||"mouse"!==r.pointerType&&!c.matches(n.focusableElements))&&s.activeElement.blur();const b=v&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||c.isContentEditable||r.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",r)}function j(e){const t=i(),s=this,r=s.touchEventsData,{params:a,touches:n,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!a.simulateTouch&&"mouse"===e.pointerType)return;let p,c=e;if(c.originalEvent&&(c=c.originalEvent),"pointermove"===c.type){if(null!==r.touchId)return;if(c.pointerId!==r.pointerId)return}if("touchmove"===c.type){if(p=[...c.changedTouches].find(e=>e.identifier===r.touchId),!p||p.identifier!==r.touchId)return}else p=c;if(!r.isTouched)return void(r.startMoving&&r.isScrolling&&s.emit("touchMoveOpposite",c));const u=p.pageX,m=p.pageY;if(c.preventedByNestedSwiper)return n.startX=u,void(n.startY=m);if(!s.allowTouchMove)return c.target.matches(r.focusableElements)||(s.allowClick=!1),void(r.isTouched&&(Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m}),r.touchStartTime=o()));if(a.touchReleaseOnEdges&&!a.loop)if(s.isVertical()){if(mn.startY&&s.translate>=s.minTranslate())return r.isTouched=!1,void(r.isMoved=!1)}else{if(l&&(u>n.startX&&-s.translate<=s.maxTranslate()||u=s.minTranslate()))return;if(!l&&(un.startX&&s.translate>=s.minTranslate()))return}if(t.activeElement&&t.activeElement.matches(r.focusableElements)&&t.activeElement!==c.target&&"mouse"!==c.pointerType&&t.activeElement.blur(),t.activeElement&&c.target===t.activeElement&&c.target.matches(r.focusableElements))return r.isMoved=!0,void(s.allowClick=!1);r.allowTouchCallbacks&&s.emit("touchMove",c),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=u,n.currentY=m;const h=n.currentX-n.startX,f=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(h**2+f**2)=25&&(e=180*Math.atan2(Math.abs(f),Math.abs(h))/Math.PI,r.isScrolling=s.isHorizontal()?e>a.touchAngle:90-e>a.touchAngle)}if(r.isScrolling&&s.emit("touchMoveOpposite",c),void 0===r.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(r.startMoving=!0)),r.isScrolling||"touchmove"===c.type&&r.preventTouchMoveFromPointerMove)return void(r.isTouched=!1);if(!r.startMoving)return;s.allowClick=!1,!a.cssMode&&c.cancelable&&c.preventDefault(),a.touchMoveStopPropagation&&!a.nested&&c.stopPropagation();let g=s.isHorizontal()?h:f,w=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;a.oneWayMovement&&(g=Math.abs(g)*(l?1:-1),w=Math.abs(w)*(l?1:-1)),n.diff=g,g*=a.touchRatio,l&&(g=-g,w=-w);const v=s.touchesDirection;s.swipeDirection=g>0?"prev":"next",s.touchesDirection=w>0?"prev":"next";const b=s.params.loop&&!a.cssMode,y="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!r.isMoved){if(b&&y&&s.loopFix({direction:s.swipeDirection}),r.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}r.allowMomentumBounce=!1,!a.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",c)}if((new Date).getTime(),!1!==a._loopSwapReset&&r.isMoved&&r.allowThresholdMove&&v!==s.touchesDirection&&b&&y&&Math.abs(g)>=1)return Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m,startTranslate:r.currentTranslate}),r.loopSwapReset=!0,void(r.startTranslate=r.currentTranslate);s.emit("sliderMove",c),r.isMoved=!0,r.currentTranslate=g+r.startTranslate;let x=!0,E=a.resistanceRatio;if(a.touchReleaseOnEdges&&(E=0),g>0?(b&&y&&r.allowThresholdMove&&r.currentTranslate>(a.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]-("auto"!==a.slidesPerView&&s.slides.length-a.slidesPerView>=2?s.slidesSizesGrid[s.activeIndex+1]+s.params.spaceBetween:0)-s.params.spaceBetween:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),r.currentTranslate>s.minTranslate()&&(x=!1,a.resistance&&(r.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+r.startTranslate+g)**E))):g<0&&(b&&y&&r.allowThresholdMove&&r.currentTranslate<(a.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]+s.params.spaceBetween+("auto"!==a.slidesPerView&&s.slides.length-a.slidesPerView>=2?s.slidesSizesGrid[s.slidesSizesGrid.length-1]+s.params.spaceBetween:0):s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===a.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(a.slidesPerView,10)))}),r.currentTranslater.startTranslate&&(r.currentTranslate=r.startTranslate),s.allowSlidePrev||s.allowSlideNext||(r.currentTranslate=r.startTranslate),a.threshold>0){if(!(Math.abs(g)>a.threshold||r.allowThresholdMove))return void(r.currentTranslate=r.startTranslate);if(!r.allowThresholdMove)return r.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,r.currentTranslate=r.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}a.followFinger&&!a.cssMode&&((a.freeMode&&a.freeMode.enabled&&s.freeMode||a.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),a.freeMode&&a.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(r.currentTranslate),s.setTranslate(r.currentTranslate))}function W(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].find(e=>e.identifier===s.touchId),!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:a,touches:n,rtlTranslate:d,slidesGrid:p,enabled:c}=t;if(!c)return;if(!a.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&a.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);a.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),m=u-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=o(),l(()=>{t.destroyed||(t.allowClick=!0)}),!s.isTouched||!s.isMoved||!t.swipeDirection||0===n.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=a.followFinger?d?t.translate:-t.translate:-s.currentTranslate,a.cssMode)return;if(a.freeMode&&a.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const f=h>=-t.maxTranslate()&&!t.params.loop;let g=0,w=t.slidesSizesGrid[0];for(let e=0;e=p[e]&&h=p[e])&&(g=e,w=p[p.length-1]-p[p.length-2])}let v=null,b=null;a.rewind&&(t.isBeginning?b=a.virtual&&a.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(v=0));const y=(h-p[g])/w,x=ga.longSwipesMs){if(!a.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(y>=a.longSwipesRatio?t.slideTo(a.rewind&&t.isEnd?v:g+x):t.slideTo(g)),"prev"===t.swipeDirection&&(y>1-a.longSwipesRatio?t.slideTo(g+x):null!==b&&y<0&&Math.abs(y)>a.longSwipesRatio?t.slideTo(b):t.slideTo(g))}else{if(!a.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(g+x):t.slideTo(g):("next"===t.swipeDirection&&t.slideTo(null!==v?v:g+x),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:g))}}function U(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:a}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout(()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()},500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&a!==e.snapGrid&&e.checkOverflow()}function K(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function Z(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const a=e.maxTranslate()-e.minTranslate();r=0===a?0:(e.translate-e.minTranslate())/a,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function Q(e){const t=this;G(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function J(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const ee=(e,t)=>{const s=i(),{params:r,el:a,wrapperEl:n,device:l}=e,o=!!r.nested,d="on"===t?"addEventListener":"removeEventListener",p=t;a&&"string"!=typeof a&&(s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:o}),a[d]("touchstart",e.onTouchStart,{passive:!1}),a[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(r.preventClicks||r.preventClicksPropagation)&&a[d]("click",e.onClick,!0),r.cssMode&&n[d]("scroll",e.onScroll),r.updateOnWindowResize?e[p](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",U,!0):e[p]("observerUpdate",U,!0),a[d]("load",e.onLoad,{capture:!0}))};const te=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var se={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,snapToSlideEdge:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function ie(e,t){return function(s={}){const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),u(t,s)):u(t,s)):u(t,s)}}const re={eventsEmitter:O,update:X,translate:N,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e=!0,t){const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),H({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e=!0,t){const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),H({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:Y,loop:V,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame(()=>{t.__preventObserver__=!1})},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame(()=>{e.__preventObserver__=!1}))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=F.bind(e),e.onTouchMove=j.bind(e),e.onTouchEnd=W.bind(e),e.onDocumentTouchStart=J.bind(e),t.cssMode&&(e.onScroll=Z.bind(e)),e.onClick=K.bind(e),e.onLoad=Q.bind(e),ee(e,"on")},detachEvents:function(){ee(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:r,el:a}=e,n=r.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const l=i(),o="window"!==r.breakpointsBase&&r.breakpointsBase?"container":r.breakpointsBase,d=["window","container"].includes(r.breakpointsBase)||!r.breakpointsBase?e.el:l.querySelector(r.breakpointsBase),p=e.getBreakpoint(n,o,d);if(!p||e.currentBreakpoint===p)return;const c=(p in n?n[p]:void 0)||e.originalParams,m=te(e,r),h=te(e,c),f=e.params.grabCursor,g=c.grabCursor,w=r.enabled;m&&!h?(a.classList.remove(`${r.containerModifierClass}grid`,`${r.containerModifierClass}grid-column`),e.emitContainerClasses()):!m&&h&&(a.classList.add(`${r.containerModifierClass}grid`),(c.grid.fill&&"column"===c.grid.fill||!c.grid.fill&&"column"===r.grid.fill)&&a.classList.add(`${r.containerModifierClass}grid-column`),e.emitContainerClasses()),f&&!g?e.unsetGrabCursor():!f&&g&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach(t=>{if(void 0===c[t])return;const s=r[t]&&r[t].enabled,i=c[t]&&c[t].enabled;s&&!i&&e[t].disable(),!s&&i&&e[t].enable()});const v=c.direction&&c.direction!==r.direction,b=r.loop&&(c.slidesPerView!==r.slidesPerView||v),y=r.loop;v&&s&&e.changeDirection(),u(e.params,c);const x=e.params.enabled,E=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),w&&!x?e.disable():!w&&x&&e.enable(),e.currentBreakpoint=p,e.emit("_beforeBreakpoint",c),s&&(b?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!y&&E?(e.loopCreate(t),e.updateSlides()):y&&!E&&e.loopDestroy()),e.emit("breakpoint",c)},getBreakpoint:function(e,t="window",s){if(!e||"container"===t&&!s)return;let i=!1;const r=a(),n="window"===t?r.innerHeight:s.clientHeight,l=Object.keys(e).map(e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}});l.sort((e,t)=>parseInt(e.value,10)-parseInt(t.value,10));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:a}=e,n=function(e,t){const s=[];return e.forEach(e=>{"object"==typeof e?Object.keys(e).forEach(i=>{e[i]&&s.push(t+i)}):"string"==typeof e&&s.push(t+e)}),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:a.android},{ios:a.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),r.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},ae={};class ne{constructor(...e){let t,s;1===e.length&&e[0].constructor&&"Object"===Object.prototype.toString.call(e[0]).slice(8,-1)?s=e[0]:[t,s]=e,s||(s={}),s=u({},s),t&&!s.el&&(s.el=t);const r=i();if(s.el&&"string"==typeof s.el&&r.querySelectorAll(s.el).length>1){const e=[];return r.querySelectorAll(s.el).forEach(t=>{const i=u({},s,{el:t});e.push(new ne(i))}),e}const a=this;a.__swiper__=!0,a.support=A(),a.device=I({userAgent:s.userAgent}),a.browser=$(),a.eventsListeners={},a.eventsAnyListeners=[],a.modules=[...a.__modules__],s.modules&&Array.isArray(s.modules)&&s.modules.forEach(e=>{"function"==typeof e&&a.modules.indexOf(e)<0&&a.modules.push(e)});const n={};a.modules.forEach(e=>{e({params:s,swiper:a,extendParams:ie(s,n),on:a.on.bind(a),once:a.once.bind(a),off:a.off.bind(a),emit:a.emit.bind(a)})});const l=u({},se,n);return a.params=u({},l,ae,s),a.originalParams=u({},a.params),a.passedParams=u({},s),a.params&&a.params.on&&Object.keys(a.params.on).forEach(e=>{a.on(e,a.params.on[e])}),a.params&&a.params.onAny&&a.onAny(a.params.onAny),Object.assign(a,{enabled:a.params.enabled,el:t,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===a.params.direction,isVertical:()=>"vertical"===a.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:a.params.allowSlideNext,allowSlidePrev:a.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:a.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:a.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),a.emit("_swiper"),a.params.init&&a.init(),a}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=x(g(t,`.${s.slideClass}, swiper-slide`)[0]);return x(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.find(t=>1*t.getAttribute("data-swiper-slide-index")===e))}getSlideIndexWhenGrid(e){return this.grid&&this.params.grid&&this.params.grid.rows>1&&("column"===this.params.grid.fill?e=Math.floor(e/this.params.grid.rows):"row"===this.params.grid.fill&&(e%=Math.ceil(this.slides.length/this.params.grid.rows))),e}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=g(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter(t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter(e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass)).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach(s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)}),e.emit("_slideClasses",t)}slidesPerViewDynamic(e="current",t=!1){const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:a,size:n,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[l]?Math.ceil(i[l].swiperSlideSize):0;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){r[l]-r[e]{t.complete&&G(e,t)}),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t=!0){const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach(t=>{"vertical"===e?t.style.width="":t.style.height=""}),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return g(s,i())[0]})();return!r&&t.params.createElements&&(r=v("div",t.params.wrapperClass),s.append(r),g(s,`.${t.params.slideClass}`).forEach(e=>{r.append(e)})),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===y(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===y(s,"direction")),wrongRTL:"-webkit-box"===y(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(void 0,!0),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach(e=>{e.complete?G(t,e):e.addEventListener("load",e=>{G(t,e.target)})}),R(t),t.initialized=!0,R(t),t.emit("init"),t.emit("afterInit"),t}destroy(e=!0,t=!0){const s=this,{params:i,el:r,wrapperEl:a,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r&&"string"!=typeof r&&r.removeAttribute("style"),a&&a.removeAttribute("style"),n&&n.length&&n.forEach(e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")})),s.emit("destroy"),Object.keys(s.eventsListeners).forEach(e=>{s.off(e)}),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),function(e){const t=e;Object.keys(t).forEach(e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}})}(s)),s.destroyed=!0),null}static extendDefaults(e){u(ae,e)}static get extendedDefaults(){return ae}static get defaults(){return se}static installModule(e){ne.prototype.__modules__||(ne.prototype.__modules__=[]);const t=ne.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach(e=>ne.installModule(e)),ne):(ne.installModule(e),ne)}}function le(e,t,s,i){return e.params.createElements&&Object.keys(i).forEach(r=>{if(!s[r]&&!0===s.auto){let a=g(e.el,`.${i[r]}`)[0];a||(a=v("div",i[r]),a.className=i[r],e.el.append(a)),s[r]=a,t[r]=a}}),s}Object.keys(re).forEach(e=>{Object.keys(re[e]).forEach(t=>{ne.prototype[t]=re[e][t]})}),ne.use([function({swiper:e,on:t,emit:s}){const i=a();let r=null,n=null;const l=()=>{e&&!e.destroyed&&e.initialized&&(s("beforeResize"),s("resize"))},o=()=>{e&&!e.destroyed&&e.initialized&&s("orientationchange")};t("init",()=>{e.params.resizeObserver&&void 0!==i.ResizeObserver?e&&!e.destroyed&&e.initialized&&(r=new ResizeObserver(t=>{n=i.requestAnimationFrame(()=>{const{width:s,height:i}=e;let r=s,a=i;t.forEach(({contentBoxSize:t,contentRect:s,target:i})=>{i&&i!==e.el||(r=s?s.width:(t[0]||t).inlineSize,a=s?s.height:(t[0]||t).blockSize)}),r===s&&a===i||l()})}),r.observe(e.el)):(i.addEventListener("resize",l),i.addEventListener("orientationchange",o))}),t("destroy",()=>{n&&i.cancelAnimationFrame(n),r&&r.unobserve&&e.el&&(r.unobserve(e.el),r=null),i.removeEventListener("resize",l),i.removeEventListener("orientationchange",o)})},function({swiper:e,extendParams:t,on:s,emit:i}){const r=[],n=a(),l=(t,s={})=>{const a=new(n.MutationObserver||n.WebkitMutationObserver)(t=>{if(e.__preventObserver__)return;if(1===t.length)return void i("observerUpdate",t[0]);const s=function(){i("observerUpdate",t[0])};n.requestAnimationFrame?n.requestAnimationFrame(s):n.setTimeout(s,0)});a.observe(t,{attributes:void 0===s.attributes||s.attributes,childList:e.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),r.push(a)};t({observer:!1,observeParents:!1,observeSlideChildren:!1}),s("init",()=>{if(e.params.observer){if(e.params.observeParents){const t=E(e.hostEl);for(let e=0;e{r.forEach(e=>{e.disconnect()}),r.splice(0,r.length)})}]);const oe='';function de(e=""){return`.${e.trim().replace(/([\.:!+\/()[\]#>~*^$|=,'"@{}\\])/g,"\\$1").replace(/ /g,".")}`}function pe(e){const t=this,{params:s,slidesEl:i}=t;s.loop&&t.loopDestroy();const r=e=>{if("string"==typeof e){const t=document.createElement("div");P(t,e),i.append(t.children[0]),P(t,"")}else i.append(e)};if("object"==typeof e&&"length"in e)for(let t=0;t{if("string"==typeof e){const t=document.createElement("div");P(t,e),r.prepend(t.children[0]),P(t,"")}else r.prepend(e)};if("object"==typeof e&&"length"in e){for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides[t];e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else a.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)}),i("setTranslate _virtualUpdated",()=>{s.params.effect===t&&r()}),i("setTransition",(e,i)=>{s.params.effect===t&&a(i)}),i("transitionEnd",()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.forEach(e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(e=>e.remove())}),o()}}),i("virtualUpdate",()=>{s.params.effect===t&&(s.slides.length||(p=!0),requestAnimationFrame(()=>{p&&s.slides&&s.slides.length&&(r(),p=!1)}))})}function ge(e,t){const s=f(t);return s!==t&&(s.style.backfaceVisibility="hidden",s.style["-webkit-backface-visibility"]="hidden"),s}function we({swiper:e,duration:t,transformElements:s,allSlides:i}){const{activeIndex:r}=e;if(e.params.virtualTranslate&&0!==t){let t,a=!1;t=i?s:s.filter(t=>{const s=t.classList.contains("swiper-slide-transform")?(t=>{if(!t.parentElement)return e.slides.find(e=>e.shadowRoot&&e.shadowRoot===t.parentNode);return t.parentElement})(t):t;return e.getSlideIndex(s)===r}),t.forEach(t=>{S(t,()=>{if(a)return;if(!e||e.destroyed)return;a=!0,e.animating=!1;const t=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});e.wrapperEl.dispatchEvent(t)})})}}function ve(e,t,s){const i=`swiper-slide-shadow${s?`-${s}`:""}${e?` swiper-slide-shadow-${e}`:""}`,r=f(t);let a=r.querySelector(`.${i.split(" ").join(".")}`);return a||(a=v("div",i.split(" ")),r.append(a)),a}const be=[function({swiper:e,extendParams:t,on:s,emit:r}){let a;t({virtual:{enabled:!1,slides:[],cache:!0,slidesPerViewAutoSlideSize:320,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const n=i();e.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const l=n.createElement("div");function o(t,s){const i=e.params.virtual;if(i.cache&&e.virtual.cache[s])return e.virtual.cache[s];let r;return i.renderSlide?(r=i.renderSlide.call(e,t,s),"string"==typeof r&&(P(l,r),r=l.children[0])):r=e.isElement?v("swiper-slide"):v("div",e.params.slideClass),r.setAttribute("data-swiper-slide-index",s),i.renderSlide||P(r,t),i.cache&&(e.virtual.cache[s]=r),r}function d(t,s,i){const{slidesPerGroup:a,centeredSlides:n,slidesPerView:l,loop:d,initialSlide:p}=e.params;if(s&&!d&&p>0)return;const{addSlidesBefore:c,addSlidesAfter:u,slidesPerViewAutoSlideSize:m}=e.params.virtual,{from:h,to:f,slides:w,slidesGrid:v,offset:b}=e.virtual;e.params.cssMode||e.updateActiveIndex();const y=void 0===i?e.activeIndex||0:i;let x,E,S,T;if(x=e.rtlTranslate?"right":e.isHorizontal()?"left":"top","auto"===l)if(m){let t=e.size;t||(t=e.isHorizontal()?e.el.getBoundingClientRect().width:e.el.getBoundingClientRect().height),E=Math.max(1,Math.ceil(t/m))}else E=1;else E=l;n?(S=Math.floor(E/2)+a+u,T=Math.floor(E/2)+a+c):(S=E+(a-1)+u,T=(d?E:a)+c);let M=y-T,C=y+S;d||(M=Math.max(M,0),C=Math.min(C,w.length-1));let P=(e.slidesGrid[M]||0)-(e.slidesGrid[0]||0);function z(){e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),r("virtualUpdate")}if(d&&y>=T?(M-=T,n||(P+=e.slidesGrid[0])):d&&y{t.style[x]=P-Math.abs(e.cssOverflowAdjustment())+"px"}),e.updateProgress(),void r("virtualUpdate");if(e.params.virtual.renderExternal)return e.params.virtual.renderExternal.call(e,{offset:P,from:M,to:C,slides:function(){const e=[];for(let t=M;t<=C;t+=1)e.push(w[t]);return e}()}),void(e.params.virtual.renderExternalUpdate?z():r("virtualUpdate"));const L=[],k=[],A=e=>{let t=e;return e<0?t=w.length+e:t>=w.length&&(t-=w.length),t};if(t)e.slides.filter(t=>t.matches(`.${e.params.slideClass}, swiper-slide`)).forEach(e=>{e.remove()});else for(let t=h;t<=f;t+=1)if(tC){const s=A(t);e.slides.filter(t=>t.matches(`.${e.params.slideClass}[data-swiper-slide-index="${s}"], swiper-slide[data-swiper-slide-index="${s}"]`)).forEach(e=>{e.remove()})}const I=d?-w.length:0,$=d?2*w.length:w.length;for(let e=I;e<$;e+=1)if(e>=M&&e<=C){const s=A(e);void 0===f||t?k.push(s):(e>f&&k.push(s),e{e.slidesEl.append(o(w[t],t))}),d)for(let t=L.length-1;t>=0;t-=1){const s=L[t];e.slidesEl.prepend(o(w[s],s))}else L.sort((e,t)=>t-e),L.forEach(t=>{e.slidesEl.prepend(o(w[t],t))});g(e.slidesEl,".swiper-slide, swiper-slide").forEach(t=>{t.style[x]=P-Math.abs(e.cssOverflowAdjustment())+"px"}),z()}s("beforeInit",()=>{if(!e.params.virtual.enabled)return;let t;if(void 0===e.passedParams.virtual.slides){const s=[...e.slidesEl.children].filter(t=>t.matches(`.${e.params.slideClass}, swiper-slide`));s&&s.length&&(e.virtual.slides=[...s],t=!0,s.forEach((t,s)=>{t.setAttribute("data-swiper-slide-index",s),e.virtual.cache[s]=t,t.remove()}))}t||(e.virtual.slides=e.params.virtual.slides),e.classNames.push(`${e.params.containerModifierClass}virtual`),e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0,d(!1,!0)}),s("setTranslate",()=>{e.params.virtual.enabled&&(e.params.cssMode&&!e._immediateVirtual?(clearTimeout(a),a=setTimeout(()=>{d()},100)):d())}),s("init update resize",()=>{e.params.virtual.enabled&&e.params.cssMode&&m(e.wrapperEl,"--swiper-virtual-size",`${e.virtualSize}px`)}),Object.assign(e.virtual,{appendSlide:function(t){if("object"==typeof t&&"length"in t)for(let s=0;s{const i=t[e],a=i.getAttribute("data-swiper-slide-index");a&&i.setAttribute("data-swiper-slide-index",parseInt(a,10)+r),s[parseInt(e,10)+r]=i}),e.virtual.cache=s}d(!0),e.slideTo(i,0)},removeSlide:function(t){if(null==t)return;let s=e.activeIndex;if(Array.isArray(t))for(let i=t.length-1;i>=0;i-=1)e.params.virtual.cache&&(delete e.virtual.cache[t[i]],Object.keys(e.virtual.cache).forEach(s=>{s>t&&(e.virtual.cache[s-1]=e.virtual.cache[s],e.virtual.cache[s-1].setAttribute("data-swiper-slide-index",s-1),delete e.virtual.cache[s])})),e.virtual.slides.splice(t[i],1),t[i]{s>t&&(e.virtual.cache[s-1]=e.virtual.cache[s],e.virtual.cache[s-1].setAttribute("data-swiper-slide-index",s-1),delete e.virtual.cache[s])})),e.virtual.slides.splice(t,1),t0&&0===E(e.el,`.${e.params.slideActiveClass}`).length)return;const i=e.el,r=i.clientWidth,a=i.clientHeight,n=l.innerWidth,o=l.innerHeight,d=b(i);s&&(d.left-=i.scrollLeft);const p=[[d.left,d.top],[d.left+r,d.top],[d.left,d.top+a],[d.left+r,d.top+a]];for(let e=0;e=0&&s[0]<=n&&s[1]>=0&&s[1]<=o){if(0===s[0]&&0===s[1])continue;t=!0}}if(!t)return}const f=e.params.keyboard.speed;e.isHorizontal()?((d||p||c||u)&&(i.preventDefault?i.preventDefault():i.returnValue=!1),((p||u)&&!s||(d||c)&&s)&&e.slideNext(f),((d||c)&&!s||(p||u)&&s)&&e.slidePrev(f)):((d||p||m||h)&&(i.preventDefault?i.preventDefault():i.returnValue=!1),(p||h)&&e.slideNext(f),(d||m)&&e.slidePrev(f)),r("keyPress",a)}function d(){e.keyboard.enabled||(n.addEventListener("keydown",o),e.keyboard.enabled=!0)}function p(){e.keyboard.enabled&&(n.removeEventListener("keydown",o),e.keyboard.enabled=!1)}e.keyboard={enabled:!1},t({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0,speed:void 0}}),s("init",()=>{e.params.keyboard.enabled&&d()}),s("destroy",()=>{e.keyboard.enabled&&p()}),Object.assign(e.keyboard,{enable:d,disable:p})},function({swiper:e,extendParams:t,on:s,emit:i}){const r=a();let n;t({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),e.mousewheel={enabled:!1};let d,p=o();const c=[];function u(){e.enabled&&(e.mouseEntered=!0)}function m(){e.enabled&&(e.mouseEntered=!1)}function h(t){return!(e.params.mousewheel.thresholdDelta&&t.delta=6&&o()-p<60||(t.direction<0?e.isEnd&&!e.params.loop||e.animating||(e.slideNext(),i("scroll",t.raw)):e.isBeginning&&!e.params.loop||e.animating||(e.slidePrev(),i("scroll",t.raw)),p=(new r.Date).getTime(),!1)))}function f(t){let s=t,r=!0;if(!e.enabled)return;if(t.target.closest(`.${e.params.mousewheel.noMousewheelClass}`))return;const a=e.params.mousewheel;e.params.cssMode&&s.preventDefault();let p=e.el;"container"!==e.params.mousewheel.eventsTarget&&(p=document.querySelector(e.params.mousewheel.eventsTarget));const u=p&&p.contains(s.target);if(!e.mouseEntered&&!u&&!a.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let m=0;const f=e.rtlTranslate?-1:1,g=function(e){let t=0,s=0,i=0,r=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),i=10*t,r=10*s,"deltaY"in e&&(r=e.deltaY),"deltaX"in e&&(i=e.deltaX),e.shiftKey&&!i&&(i=r,r=0),(i||r)&&e.deltaMode&&(1===e.deltaMode?(i*=40,r*=40):(i*=800,r*=800)),i&&!t&&(t=i<1?-1:1),r&&!s&&(s=r<1?-1:1),{spinX:t,spinY:s,pixelX:i,pixelY:r}}(s);if(a.forceToAxis)if(e.isHorizontal()){if(!(Math.abs(g.pixelX)>Math.abs(g.pixelY)))return!0;m=-g.pixelX*f}else{if(!(Math.abs(g.pixelY)>Math.abs(g.pixelX)))return!0;m=-g.pixelY}else m=Math.abs(g.pixelX)>Math.abs(g.pixelY)?-g.pixelX*f:-g.pixelY;if(0===m)return!0;a.invert&&(m=-m);let w=e.getTranslate()+m*a.sensitivity;if(w>=e.minTranslate()&&(w=e.minTranslate()),w<=e.maxTranslate()&&(w=e.maxTranslate()),r=!!e.params.loop||!(w===e.minTranslate()||w===e.maxTranslate()),r&&e.params.nested&&s.stopPropagation(),e.params.freeMode&&e.params.freeMode.enabled){const t={time:o(),delta:Math.abs(m),direction:Math.sign(m)},r=d&&t.time=e.minTranslate()&&(o=e.minTranslate()),o<=e.maxTranslate()&&(o=e.maxTranslate()),e.setTransition(0),e.setTranslate(o),e.updateProgress(),e.updateActiveIndex(),e.updateSlidesClasses(),(!p&&e.isBeginning||!u&&e.isEnd)&&e.updateSlidesClasses(),e.params.loop&&e.loopFix({direction:t.direction<0?"next":"prev",byMousewheel:!0}),e.params.freeMode.sticky){clearTimeout(n),n=void 0,c.length>=15&&c.shift();const s=c.length?c[c.length-1]:void 0,i=c[0];if(c.push(t),s&&(t.delta>s.delta||t.direction!==s.direction))c.splice(0);else if(c.length>=15&&t.time-i.time<500&&i.delta-t.delta>=1&&t.delta<=6){const s=m>0?.8:.2;d=t,c.splice(0),n=l(()=>{!e.destroyed&&e.params&&e.slideToClosest(e.params.speed,!0,void 0,s)},0)}n||(n=l(()=>{if(e.destroyed||!e.params)return;d=t,c.splice(0),e.slideToClosest(e.params.speed,!0,void 0,.5)},500))}if(r||i("scroll",s),e.params.autoplay&&e.params.autoplay.disableOnInteraction&&e.autoplay.stop(),a.releaseOnEdges&&(o===e.minTranslate()||o===e.maxTranslate()))return!0}}else{const s={time:o(),delta:Math.abs(m),direction:Math.sign(m),raw:t};c.length>=2&&c.shift();const i=c.length?c[c.length-1]:void 0;if(c.push(s),i?(s.direction!==i.direction||s.delta>i.delta||s.time>i.time+150)&&h(s):h(s),function(t){const s=e.params.mousewheel;if(t.direction<0){if(e.isEnd&&!e.params.loop&&s.releaseOnEdges)return!0}else if(e.isBeginning&&!e.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function g(t){let s=e.el;"container"!==e.params.mousewheel.eventsTarget&&(s=document.querySelector(e.params.mousewheel.eventsTarget)),s[t]("mouseenter",u),s[t]("mouseleave",m),s[t]("wheel",f)}function w(){return e.params.cssMode?(e.wrapperEl.removeEventListener("wheel",f),!0):!e.mousewheel.enabled&&(g("addEventListener"),e.mousewheel.enabled=!0,!0)}function v(){return e.params.cssMode?(e.wrapperEl.addEventListener(event,f),!0):!!e.mousewheel.enabled&&(g("removeEventListener"),e.mousewheel.enabled=!1,!0)}s("init",()=>{!e.params.mousewheel.enabled&&e.params.cssMode&&v(),e.params.mousewheel.enabled&&w()}),s("destroy",()=>{e.params.cssMode&&w(),e.mousewheel.enabled&&v()}),Object.assign(e.mousewheel,{enable:w,disable:v})},function({swiper:e,extendParams:t,on:s,emit:i}){function r(t){let s;return t&&"string"==typeof t&&e.isElement&&(s=e.el.querySelector(t)||e.hostEl.querySelector(t),s)?s:(t&&("string"==typeof t&&(s=[...document.querySelectorAll(t)]),e.params.uniqueNavElements&&"string"==typeof t&&s&&s.length>1&&1===e.el.querySelectorAll(t).length?s=e.el.querySelector(t):s&&1===s.length&&(s=s[0])),t&&!s?t:s)}function a(t,s){const i=e.params.navigation;(t=M(t)).forEach(t=>{t&&(t.classList[s?"add":"remove"](...i.disabledClass.split(" ")),"BUTTON"===t.tagName&&(t.disabled=s),e.params.watchOverflow&&e.enabled&&t.classList[e.isLocked?"add":"remove"](i.lockClass))})}function n(){const{nextEl:t,prevEl:s}=e.navigation;if(e.params.loop)return a(s,!1),void a(t,!1);a(s,e.isBeginning&&!e.params.rewind),a(t,e.isEnd&&!e.params.rewind)}function l(t){t.preventDefault(),(!e.isBeginning||e.params.loop||e.params.rewind)&&(e.slidePrev(),i("navigationPrev"))}function o(t){t.preventDefault(),(!e.isEnd||e.params.loop||e.params.rewind)&&(e.slideNext(),i("navigationNext"))}function d(){const t=e.params.navigation;if(e.params.navigation=le(e,e.originalParams.navigation,e.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!t.nextEl&&!t.prevEl)return;let s=r(t.nextEl),i=r(t.prevEl);Object.assign(e.navigation,{nextEl:s,prevEl:i}),s=M(s),i=M(i);const a=(s,i)=>{if(s){if(t.addIcons&&s.matches(".swiper-button-next,.swiper-button-prev")&&!s.querySelector("svg")){const e=document.createElement("div");P(e,oe),s.appendChild(e.querySelector("svg")),e.remove()}s.addEventListener("click","next"===i?o:l)}!e.enabled&&s&&s.classList.add(...t.lockClass.split(" "))};s.forEach(e=>a(e,"next")),i.forEach(e=>a(e,"prev"))}function p(){let{nextEl:t,prevEl:s}=e.navigation;t=M(t),s=M(s);const i=(t,s)=>{t.removeEventListener("click","next"===s?o:l),t.classList.remove(...e.params.navigation.disabledClass.split(" "))};t.forEach(e=>i(e,"next")),s.forEach(e=>i(e,"prev"))}t({navigation:{nextEl:null,prevEl:null,addIcons:!0,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),e.navigation={nextEl:null,prevEl:null,arrowSvg:oe},s("init",()=>{!1===e.params.navigation.enabled?c():(d(),n())}),s("toEdge fromEdge lock unlock",()=>{n()}),s("destroy",()=>{p()}),s("enable disable",()=>{let{nextEl:t,prevEl:s}=e.navigation;t=M(t),s=M(s),e.enabled?n():[...t,...s].filter(e=>!!e).forEach(t=>t.classList.add(e.params.navigation.lockClass))}),s("click",(t,s)=>{let{nextEl:r,prevEl:a}=e.navigation;r=M(r),a=M(a);const n=s.target;let l=a.includes(n)||r.includes(n);if(e.isElement&&!l){const e=s.path||s.composedPath&&s.composedPath();e&&(l=e.find(e=>r.includes(e)||a.includes(e)))}if(e.params.navigation.hideOnClick&&!l){if(e.pagination&&e.params.pagination&&e.params.pagination.clickable&&(e.pagination.el===n||e.pagination.el.contains(n)))return;let t;r.length?t=r[0].classList.contains(e.params.navigation.hiddenClass):a.length&&(t=a[0].classList.contains(e.params.navigation.hiddenClass)),i(!0===t?"navigationShow":"navigationHide"),[...r,...a].filter(e=>!!e).forEach(t=>t.classList.toggle(e.params.navigation.hiddenClass))}});const c=()=>{e.el.classList.add(...e.params.navigation.navigationDisabledClass.split(" ")),p()};Object.assign(e.navigation,{enable:()=>{e.el.classList.remove(...e.params.navigation.navigationDisabledClass.split(" ")),d(),n()},disable:c,update:n,init:d,destroy:p})},function({swiper:e,extendParams:t,on:s,emit:i}){const r="swiper-pagination";let a;t({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),e.pagination={el:null,bullets:[]};let n=0;function l(){return!e.params.pagination.el||!e.pagination.el||Array.isArray(e.pagination.el)&&0===e.pagination.el.length}function o(t,s){const{bulletActiveClass:i}=e.params.pagination;t&&(t=t[("prev"===s?"previous":"next")+"ElementSibling"])&&(t.classList.add(`${i}-${s}`),(t=t[("prev"===s?"previous":"next")+"ElementSibling"])&&t.classList.add(`${i}-${s}-${s}`))}function d(t){const s=t.target.closest(de(e.params.pagination.bulletClass));if(!s)return;t.preventDefault();const i=x(s)*e.params.slidesPerGroup;if(e.params.loop){if(e.realIndex===i)return;const t=(r=e.realIndex,a=i,n=e.slides.length,(a%=n)===1+(r%=n)?"next":a===r-1?"previous":void 0);"next"===t?e.slideNext():"previous"===t?e.slidePrev():e.slideToLoop(i)}else e.slideTo(i);var r,a,n}function p(){const t=e.rtl,s=e.params.pagination;if(l())return;let r,d,p=e.pagination.el;p=M(p);const c=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,u=e.params.loop?Math.ceil(c/e.params.slidesPerGroup):e.snapGrid.length;if(e.params.loop?(d=e.previousRealIndex||0,r=e.params.slidesPerGroup>1?Math.floor(e.realIndex/e.params.slidesPerGroup):e.realIndex):void 0!==e.snapIndex?(r=e.snapIndex,d=e.previousSnapIndex):(d=e.previousIndex||0,r=e.activeIndex||0),"bullets"===s.type&&e.pagination.bullets&&e.pagination.bullets.length>0){const i=e.pagination.bullets;let l,c,u;if(s.dynamicBullets&&(a=T(i[0],e.isHorizontal()?"width":"height",!0),p.forEach(t=>{t.style[e.isHorizontal()?"width":"height"]=a*(s.dynamicMainBullets+4)+"px"}),s.dynamicMainBullets>1&&void 0!==d&&(n+=r-(d||0),n>s.dynamicMainBullets-1?n=s.dynamicMainBullets-1:n<0&&(n=0)),l=Math.max(r-n,0),c=l+(Math.min(i.length,s.dynamicMainBullets)-1),u=(c+l)/2),i.forEach(e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map(e=>`${s.bulletActiveClass}${e}`)].map(e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e).flat();e.classList.remove(...t)}),p.length>1)i.forEach(t=>{const i=x(t);i===r?t.classList.add(...s.bulletActiveClass.split(" ")):e.isElement&&t.setAttribute("part","bullet"),s.dynamicBullets&&(i>=l&&i<=c&&t.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),i===l&&o(t,"prev"),i===c&&o(t,"next"))});else{const t=i[r];if(t&&t.classList.add(...s.bulletActiveClass.split(" ")),e.isElement&&i.forEach((e,t)=>{e.setAttribute("part",t===r?"bullet-active":"bullet")}),s.dynamicBullets){const e=i[l],t=i[c];for(let e=l;e<=c;e+=1)i[e]&&i[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));o(e,"prev"),o(t,"next")}}if(s.dynamicBullets){const r=Math.min(i.length,s.dynamicMainBullets+4),n=(a*r-a)/2-u*a,l=t?"right":"left";i.forEach(t=>{t.style[e.isHorizontal()?l:"top"]=`${n}px`})}}p.forEach((t,a)=>{if("fraction"===s.type&&(t.querySelectorAll(de(s.currentClass)).forEach(e=>{e.textContent=s.formatFractionCurrent(r+1)}),t.querySelectorAll(de(s.totalClass)).forEach(e=>{e.textContent=s.formatFractionTotal(u)})),"progressbar"===s.type){let i;i=s.progressbarOpposite?e.isHorizontal()?"vertical":"horizontal":e.isHorizontal()?"horizontal":"vertical";const a=(r+1)/u;let n=1,l=1;"horizontal"===i?n=a:l=a,t.querySelectorAll(de(s.progressbarFillClass)).forEach(t=>{t.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,t.style.transitionDuration=`${e.params.speed}ms`})}"custom"===s.type&&s.renderCustom?(P(t,s.renderCustom(e,r+1,u)),0===a&&i("paginationRender",t)):(0===a&&i("paginationRender",t),i("paginationUpdate",t)),e.params.watchOverflow&&e.enabled&&t.classList[e.isLocked?"add":"remove"](s.lockClass)})}function c(){const t=e.params.pagination;if(l())return;const s=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.grid&&e.params.grid.rows>1?e.slides.length/Math.ceil(e.params.grid.rows):e.slides.length;let r=e.pagination.el;r=M(r);let a="";if("bullets"===t.type){let i=e.params.loop?Math.ceil(s/e.params.slidesPerGroup):e.snapGrid.length;e.params.freeMode&&e.params.freeMode.enabled&&i>s&&(i=s);for(let s=0;s`}"fraction"===t.type&&(a=t.renderFraction?t.renderFraction.call(e,t.currentClass,t.totalClass):` / `),"progressbar"===t.type&&(a=t.renderProgressbar?t.renderProgressbar.call(e,t.progressbarFillClass):``),e.pagination.bullets=[],r.forEach(s=>{"custom"!==t.type&&P(s,a||""),"bullets"===t.type&&e.pagination.bullets.push(...s.querySelectorAll(de(t.bulletClass)))}),"custom"!==t.type&&i("paginationRender",r[0])}function u(){e.params.pagination=le(e,e.originalParams.pagination,e.params.pagination,{el:"swiper-pagination"});const t=e.params.pagination;if(!t.el)return;let s;"string"==typeof t.el&&e.isElement&&(s=e.el.querySelector(t.el)),s||"string"!=typeof t.el||(s=[...document.querySelectorAll(t.el)]),s||(s=t.el),s&&0!==s.length&&(e.params.uniqueNavElements&&"string"==typeof t.el&&Array.isArray(s)&&s.length>1&&(s=[...e.el.querySelectorAll(t.el)],s.length>1&&(s=s.find(t=>E(t,".swiper")[0]===e.el))),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(e.pagination,{el:s}),s=M(s),s.forEach(s=>{"bullets"===t.type&&t.clickable&&s.classList.add(...(t.clickableClass||"").split(" ")),s.classList.add(t.modifierClass+t.type),s.classList.add(e.isHorizontal()?t.horizontalClass:t.verticalClass),"bullets"===t.type&&t.dynamicBullets&&(s.classList.add(`${t.modifierClass}${t.type}-dynamic`),n=0,t.dynamicMainBullets<1&&(t.dynamicMainBullets=1)),"progressbar"===t.type&&t.progressbarOpposite&&s.classList.add(t.progressbarOppositeClass),t.clickable&&s.addEventListener("click",d),e.enabled||s.classList.add(t.lockClass)}))}function m(){const t=e.params.pagination;if(l())return;let s=e.pagination.el;s&&(s=M(s),s.forEach(s=>{s.classList.remove(t.hiddenClass),s.classList.remove(t.modifierClass+t.type),s.classList.remove(e.isHorizontal()?t.horizontalClass:t.verticalClass),t.clickable&&(s.classList.remove(...(t.clickableClass||"").split(" ")),s.removeEventListener("click",d))})),e.pagination.bullets&&e.pagination.bullets.forEach(e=>e.classList.remove(...t.bulletActiveClass.split(" ")))}s("changeDirection",()=>{if(!e.pagination||!e.pagination.el)return;const t=e.params.pagination;let{el:s}=e.pagination;s=M(s),s.forEach(s=>{s.classList.remove(t.horizontalClass,t.verticalClass),s.classList.add(e.isHorizontal()?t.horizontalClass:t.verticalClass)})}),s("init",()=>{!1===e.params.pagination.enabled?h():(u(),c(),p())}),s("activeIndexChange",()=>{void 0===e.snapIndex&&p()}),s("snapIndexChange",()=>{p()}),s("snapGridLengthChange",()=>{c(),p()}),s("destroy",()=>{m()}),s("enable disable",()=>{let{el:t}=e.pagination;t&&(t=M(t),t.forEach(t=>t.classList[e.enabled?"remove":"add"](e.params.pagination.lockClass)))}),s("lock unlock",()=>{p()}),s("click",(t,s)=>{const r=s.target,a=M(e.pagination.el);if(e.params.pagination.el&&e.params.pagination.hideOnClick&&a&&a.length>0&&!r.classList.contains(e.params.pagination.bulletClass)){if(e.navigation&&(e.navigation.nextEl&&r===e.navigation.nextEl||e.navigation.prevEl&&r===e.navigation.prevEl))return;const t=a[0].classList.contains(e.params.pagination.hiddenClass);i(!0===t?"paginationShow":"paginationHide"),a.forEach(t=>t.classList.toggle(e.params.pagination.hiddenClass))}});const h=()=>{e.el.classList.add(e.params.pagination.paginationDisabledClass);let{el:t}=e.pagination;t&&(t=M(t),t.forEach(t=>t.classList.add(e.params.pagination.paginationDisabledClass))),m()};Object.assign(e.pagination,{enable:()=>{e.el.classList.remove(e.params.pagination.paginationDisabledClass);let{el:t}=e.pagination;t&&(t=M(t),t.forEach(t=>t.classList.remove(e.params.pagination.paginationDisabledClass))),u(),c(),p()},disable:h,render:c,update:p,init:u,destroy:m})},function({swiper:e,extendParams:t,on:s,emit:r}){const a=i();let o,d,p,c,u=!1,m=null,h=null;function f(){if(!e.params.scrollbar.el||!e.scrollbar.el)return;const{scrollbar:t,rtlTranslate:s}=e,{dragEl:i,el:r}=t,a=e.params.scrollbar,n=e.params.loop?e.progressLoop:e.progress;let l=d,o=(p-d)*n;s?(o=-o,o>0?(l=d-o,o=0):-o+d>p&&(l=p+o)):o<0?(l=d+o,o=0):o+d>p&&(l=p-o),e.isHorizontal()?(i.style.transform=`translate3d(${o}px, 0, 0)`,i.style.width=`${l}px`):(i.style.transform=`translate3d(0px, ${o}px, 0)`,i.style.height=`${l}px`),a.hide&&(clearTimeout(m),r.style.opacity=1,m=setTimeout(()=>{r.style.opacity=0,r.style.transitionDuration="400ms"},1e3))}function g(){if(!e.params.scrollbar.el||!e.scrollbar.el)return;const{scrollbar:t}=e,{dragEl:s,el:i}=t;s.style.width="",s.style.height="",p=e.isHorizontal()?i.offsetWidth:i.offsetHeight,c=e.size/(e.virtualSize+e.params.slidesOffsetBefore-(e.params.centeredSlides?e.snapGrid[0]:0)),d="auto"===e.params.scrollbar.dragSize?p*c:parseInt(e.params.scrollbar.dragSize,10),e.isHorizontal()?s.style.width=`${d}px`:s.style.height=`${d}px`,i.style.display=c>=1?"none":"",e.params.scrollbar.hide&&(i.style.opacity=0),e.params.watchOverflow&&e.enabled&&t.el.classList[e.isLocked?"add":"remove"](e.params.scrollbar.lockClass)}function w(t){return e.isHorizontal()?t.clientX:t.clientY}function y(t){const{scrollbar:s,rtlTranslate:i}=e,{el:r}=s;let a;a=(w(t)-b(r)[e.isHorizontal()?"left":"top"]-(null!==o?o:d/2))/(p-d),a=Math.max(Math.min(a,1),0),i&&(a=1-a);const n=e.minTranslate()+(e.maxTranslate()-e.minTranslate())*a;e.updateProgress(n),e.setTranslate(n),e.updateActiveIndex(),e.updateSlidesClasses()}function x(t){const s=e.params.scrollbar,{scrollbar:i,wrapperEl:a}=e,{el:n,dragEl:l}=i;u=!0,o=t.target===l?w(t)-t.target.getBoundingClientRect()[e.isHorizontal()?"left":"top"]:null,t.preventDefault(),t.stopPropagation(),a.style.transitionDuration="100ms",l.style.transitionDuration="100ms",y(t),clearTimeout(h),n.style.transitionDuration="0ms",s.hide&&(n.style.opacity=1),e.params.cssMode&&(e.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",t)}function E(t){const{scrollbar:s,wrapperEl:i}=e,{el:a,dragEl:n}=s;u&&(t.preventDefault&&t.cancelable?t.preventDefault():t.returnValue=!1,y(t),i.style.transitionDuration="0ms",a.style.transitionDuration="0ms",n.style.transitionDuration="0ms",r("scrollbarDragMove",t))}function S(t){const s=e.params.scrollbar,{scrollbar:i,wrapperEl:a}=e,{el:n}=i;u&&(u=!1,e.params.cssMode&&(e.wrapperEl.style["scroll-snap-type"]="",a.style.transitionDuration=""),s.hide&&(clearTimeout(h),h=l(()=>{n.style.opacity=0,n.style.transitionDuration="400ms"},1e3)),r("scrollbarDragEnd",t),s.snapOnRelease&&e.slideToClosest())}function T(t){const{scrollbar:s,params:i}=e,r=s.el;if(!r)return;const n=r,l=!!i.passiveListeners&&{passive:!1,capture:!1},o=!!i.passiveListeners&&{passive:!0,capture:!1};if(!n)return;const d="on"===t?"addEventListener":"removeEventListener";n[d]("pointerdown",x,l),a[d]("pointermove",E,l),a[d]("pointerup",S,o)}function C(){const{scrollbar:t,el:s}=e;e.params.scrollbar=le(e,e.originalParams.scrollbar,e.params.scrollbar,{el:"swiper-scrollbar"});const i=e.params.scrollbar;if(!i.el)return;let r,l;if("string"==typeof i.el&&e.isElement&&(r=e.el.querySelector(i.el)),r||"string"!=typeof i.el)r||(r=i.el);else if(r=a.querySelectorAll(i.el),!r.length)return;e.params.uniqueNavElements&&"string"==typeof i.el&&r.length>1&&1===s.querySelectorAll(i.el).length&&(r=s.querySelector(i.el)),r.length>0&&(r=r[0]),r.classList.add(e.isHorizontal()?i.horizontalClass:i.verticalClass),r&&(l=r.querySelector(de(e.params.scrollbar.dragClass)),l||(l=v("div",e.params.scrollbar.dragClass),r.append(l))),Object.assign(t,{el:r,dragEl:l}),i.draggable&&e.params.scrollbar.el&&e.scrollbar.el&&T("on"),r&&r.classList[e.enabled?"remove":"add"](...n(e.params.scrollbar.lockClass))}function P(){const t=e.params.scrollbar,s=e.scrollbar.el;s&&s.classList.remove(...n(e.isHorizontal()?t.horizontalClass:t.verticalClass)),e.params.scrollbar.el&&e.scrollbar.el&&T("off")}t({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),e.scrollbar={el:null,dragEl:null},s("changeDirection",()=>{if(!e.scrollbar||!e.scrollbar.el)return;const t=e.params.scrollbar;let{el:s}=e.scrollbar;s=M(s),s.forEach(s=>{s.classList.remove(t.horizontalClass,t.verticalClass),s.classList.add(e.isHorizontal()?t.horizontalClass:t.verticalClass)})}),s("init",()=>{!1===e.params.scrollbar.enabled?z():(C(),g(),f())}),s("update resize observerUpdate lock unlock changeDirection",()=>{g()}),s("setTranslate",()=>{f()}),s("setTransition",(t,s)=>{!function(t){e.params.scrollbar.el&&e.scrollbar.el&&(e.scrollbar.dragEl.style.transitionDuration=`${t}ms`)}(s)}),s("enable disable",()=>{const{el:t}=e.scrollbar;t&&t.classList[e.enabled?"remove":"add"](...n(e.params.scrollbar.lockClass))}),s("destroy",()=>{P()});const z=()=>{e.el.classList.add(...n(e.params.scrollbar.scrollbarDisabledClass)),e.scrollbar.el&&e.scrollbar.el.classList.add(...n(e.params.scrollbar.scrollbarDisabledClass)),P()};Object.assign(e.scrollbar,{enable:()=>{e.el.classList.remove(...n(e.params.scrollbar.scrollbarDisabledClass)),e.scrollbar.el&&e.scrollbar.el.classList.remove(...n(e.params.scrollbar.scrollbarDisabledClass)),C(),g(),f()},disable:z,updateSize:g,setTranslate:f,init:C,destroy:P})},function({swiper:e,extendParams:t,on:s}){t({parallax:{enabled:!1}});const i="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",r=(t,s)=>{const{rtl:i}=e,r=i?-1:1,a=t.getAttribute("data-swiper-parallax")||"0";let n=t.getAttribute("data-swiper-parallax-x"),l=t.getAttribute("data-swiper-parallax-y");const o=t.getAttribute("data-swiper-parallax-scale"),d=t.getAttribute("data-swiper-parallax-opacity"),p=t.getAttribute("data-swiper-parallax-rotate");if(n||l?(n=n||"0",l=l||"0"):e.isHorizontal()?(n=a,l="0"):(l=a,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*s*r+"%":n*s*r+"px",l=l.indexOf("%")>=0?parseInt(l,10)*s+"%":l*s+"px",null!=d){const e=d-(d-1)*(1-Math.abs(s));t.style.opacity=e}let c=`translate3d(${n}, ${l}, 0px)`;if(null!=o){c+=` scale(${o-(o-1)*(1-Math.abs(s))})`}if(p&&null!=p){c+=` rotate(${p*s*-1}deg)`}t.style.transform=c},a=()=>{const{el:t,slides:s,progress:a,snapGrid:n,isElement:l}=e,o=g(t,i);e.isElement&&o.push(...g(e.hostEl,i)),o.forEach(e=>{r(e,a)}),s.forEach((t,s)=>{let l=t.progress;e.params.slidesPerGroup>1&&"auto"!==e.params.slidesPerView&&(l+=Math.ceil(s/2)-a*(n.length-1)),l=Math.min(Math.max(l,-1),1),t.querySelectorAll(`${i}, [data-swiper-parallax-rotate]`).forEach(e=>{r(e,l)})})};s("beforeInit",()=>{e.params.parallax.enabled&&(e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0)}),s("init",()=>{e.params.parallax.enabled&&a()}),s("setTranslate",()=>{e.params.parallax.enabled&&a()}),s("setTransition",(t,s)=>{e.params.parallax.enabled&&((t=e.params.speed)=>{const{el:s,hostEl:r}=e,a=[...s.querySelectorAll(i)];e.isElement&&a.push(...r.querySelectorAll(i)),a.forEach(e=>{let s=parseInt(e.getAttribute("data-swiper-parallax-duration"),10)||t;0===t&&(s=0),e.style.transitionDuration=`${s}ms`})})(s)})},function({swiper:e,extendParams:t,on:s,emit:i}){const r=a();t({zoom:{enabled:!1,limitToOriginalSize:!1,maxRatio:3,minRatio:1,panOnMouseMove:!1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),e.zoom={enabled:!1};let n,l,o=1,p=!1,c=!1,u={x:0,y:0};const m=[],h={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},f={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},w={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v,y=1;function x(){if(m.length<2)return 1;const e=m[0].pageX,t=m[0].pageY,s=m[1].pageX,i=m[1].pageY;return Math.sqrt((s-e)**2+(i-t)**2)}function S(){const t=e.params.zoom,s=h.imageWrapEl.getAttribute("data-swiper-zoom")||t.maxRatio;if(t.limitToOriginalSize&&h.imageEl&&h.imageEl.naturalWidth){const e=h.imageEl.naturalWidth/h.imageEl.offsetWidth;return Math.min(e,s)}return s}function T(t){const s=e.isElement?"swiper-slide":`.${e.params.slideClass}`;return!!t.target.matches(s)||e.slides.filter(e=>e.contains(t.target)).length>0}function M(t){const s=`.${e.params.zoom.containerClass}`;return!!t.target.matches(s)||[...e.hostEl.querySelectorAll(s)].filter(e=>e.contains(t.target)).length>0}function C(t){if("mouse"===t.pointerType&&m.splice(0,m.length),!T(t))return;const s=e.params.zoom;if(n=!1,l=!1,m.push(t),!(m.length<2)){if(n=!0,h.scaleStart=x(),!h.slideEl){h.slideEl=t.target.closest(`.${e.params.slideClass}, swiper-slide`),h.slideEl||(h.slideEl=e.slides[e.activeIndex]);let i=h.slideEl.querySelector(`.${s.containerClass}`);if(i&&(i=i.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),h.imageEl=i,h.imageWrapEl=i?E(h.imageEl,`.${s.containerClass}`)[0]:void 0,!h.imageWrapEl)return void(h.imageEl=void 0);h.maxRatio=S()}if(h.imageEl){const[e,t]=function(){if(m.length<2)return{x:null,y:null};const e=h.imageEl.getBoundingClientRect();return[(m[0].pageX+(m[1].pageX-m[0].pageX)/2-e.x-r.scrollX)/o,(m[0].pageY+(m[1].pageY-m[0].pageY)/2-e.y-r.scrollY)/o]}();h.originX=e,h.originY=t,h.imageEl.style.transitionDuration="0ms"}p=!0}}function P(t){if(!T(t))return;const s=e.params.zoom,i=e.zoom,r=m.findIndex(e=>e.pointerId===t.pointerId);r>=0&&(m[r]=t),m.length<2||(l=!0,h.scaleMove=x(),h.imageEl&&(i.scale=h.scaleMove/h.scaleStart*o,i.scale>h.maxRatio&&(i.scale=h.maxRatio-1+(i.scale-h.maxRatio+1)**.5),i.scalee.pointerId===t.pointerId);r>=0&&m.splice(r,1),n&&l&&(n=!1,l=!1,h.imageEl&&(i.scale=Math.max(Math.min(i.scale,h.maxRatio),s.minRatio),h.imageEl.style.transitionDuration=`${e.params.speed}ms`,h.imageEl.style.transform=`translate3d(0,0,0) scale(${i.scale})`,o=i.scale,p=!1,i.scale>1&&h.slideEl?h.slideEl.classList.add(`${s.zoomedSlideClass}`):i.scale<=1&&h.slideEl&&h.slideEl.classList.remove(`${s.zoomedSlideClass}`),1===i.scale&&(h.originX=0,h.originY=0,h.slideEl=void 0)))}function L(){e.touchEventsData.preventTouchMoveFromPointerMove=!1}function k(t){const s="mouse"===t.pointerType&&e.params.zoom.panOnMouseMove;if(!T(t)||!M(t))return;const i=e.zoom;if(!h.imageEl)return;if(!f.isTouched||!h.slideEl)return void(s&&I(t));if(s)return void I(t);f.isMoved||(f.width=h.imageEl.offsetWidth||h.imageEl.clientWidth,f.height=h.imageEl.offsetHeight||h.imageEl.clientHeight,f.startX=d(h.imageWrapEl,"x")||0,f.startY=d(h.imageWrapEl,"y")||0,h.slideWidth=h.slideEl.offsetWidth,h.slideHeight=h.slideEl.offsetHeight,h.imageWrapEl.style.transitionDuration="0ms");const r=f.width*i.scale,a=f.height*i.scale;f.minX=Math.min(h.slideWidth/2-r/2,0),f.maxX=-f.minX,f.minY=Math.min(h.slideHeight/2-a/2,0),f.maxY=-f.minY,f.touchesCurrent.x=m.length>0?m[0].pageX:t.pageX,f.touchesCurrent.y=m.length>0?m[0].pageY:t.pageY;if(Math.max(Math.abs(f.touchesCurrent.x-f.touchesStart.x),Math.abs(f.touchesCurrent.y-f.touchesStart.y))>5&&(e.allowClick=!1),!f.isMoved&&!p){if(e.isHorizontal()&&(Math.floor(f.minX)===Math.floor(f.startX)&&f.touchesCurrent.xf.touchesStart.x))return f.isTouched=!1,void L();if(!e.isHorizontal()&&(Math.floor(f.minY)===Math.floor(f.startY)&&f.touchesCurrent.yf.touchesStart.y))return f.isTouched=!1,void L()}t.cancelable&&t.preventDefault(),t.stopPropagation(),clearTimeout(v),e.touchEventsData.preventTouchMoveFromPointerMove=!0,v=setTimeout(()=>{e.destroyed||L()}),f.isMoved=!0;const n=(i.scale-o)/(h.maxRatio-e.params.zoom.minRatio),{originX:l,originY:c}=h;f.currentX=f.touchesCurrent.x-f.touchesStart.x+f.startX+n*(f.width-2*l),f.currentY=f.touchesCurrent.y-f.touchesStart.y+f.startY+n*(f.height-2*c),f.currentXf.maxX&&(f.currentX=f.maxX-1+(f.currentX-f.maxX+1)**.8),f.currentYf.maxY&&(f.currentY=f.maxY-1+(f.currentY-f.maxY+1)**.8),w.prevPositionX||(w.prevPositionX=f.touchesCurrent.x),w.prevPositionY||(w.prevPositionY=f.touchesCurrent.y),w.prevTime||(w.prevTime=Date.now()),w.x=(f.touchesCurrent.x-w.prevPositionX)/(Date.now()-w.prevTime)/2,w.y=(f.touchesCurrent.y-w.prevPositionY)/(Date.now()-w.prevTime)/2,Math.abs(f.touchesCurrent.x-w.prevPositionX)<2&&(w.x=0),Math.abs(f.touchesCurrent.y-w.prevPositionY)<2&&(w.y=0),w.prevPositionX=f.touchesCurrent.x,w.prevPositionY=f.touchesCurrent.y,w.prevTime=Date.now(),h.imageWrapEl.style.transform=`translate3d(${f.currentX}px, ${f.currentY}px,0)`}function A(){const t=e.zoom;h.slideEl&&e.activeIndex!==e.slides.indexOf(h.slideEl)&&(h.imageEl&&(h.imageEl.style.transform="translate3d(0,0,0) scale(1)"),h.imageWrapEl&&(h.imageWrapEl.style.transform="translate3d(0,0,0)"),h.slideEl.classList.remove(`${e.params.zoom.zoomedSlideClass}`),t.scale=1,o=1,h.slideEl=void 0,h.imageEl=void 0,h.imageWrapEl=void 0,h.originX=0,h.originY=0)}function I(e){if(o<=1||!h.imageWrapEl)return;if(!T(e)||!M(e))return;const t=r.getComputedStyle(h.imageWrapEl).transform,s=new r.DOMMatrix(t);if(!c)return c=!0,u.x=e.clientX,u.y=e.clientY,f.startX=s.e,f.startY=s.f,f.width=h.imageEl.offsetWidth||h.imageEl.clientWidth,f.height=h.imageEl.offsetHeight||h.imageEl.clientHeight,h.slideWidth=h.slideEl.offsetWidth,void(h.slideHeight=h.slideEl.offsetHeight);const i=-3*(e.clientX-u.x),a=-3*(e.clientY-u.y),n=f.width*o,l=f.height*o,d=h.slideWidth,p=h.slideHeight,m=Math.min(d/2-n/2,0),g=-m,w=Math.min(p/2-l/2,0),v=-w,b=Math.max(Math.min(f.startX+i,g),m),y=Math.max(Math.min(f.startY+a,v),w);h.imageWrapEl.style.transitionDuration="0ms",h.imageWrapEl.style.transform=`translate3d(${b}px, ${y}px, 0)`,u.x=e.clientX,u.y=e.clientY,f.startX=b,f.startY=y,f.currentX=b,f.currentY=y}function $(t){const s=e.zoom,i=e.params.zoom;if(!h.slideEl){t&&t.target&&(h.slideEl=t.target.closest(`.${e.params.slideClass}, swiper-slide`)),h.slideEl||(e.params.virtual&&e.params.virtual.enabled&&e.virtual?h.slideEl=g(e.slidesEl,`.${e.params.slideActiveClass}`)[0]:h.slideEl=e.slides[e.activeIndex]);let s=h.slideEl.querySelector(`.${i.containerClass}`);s&&(s=s.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),h.imageEl=s,h.imageWrapEl=s?E(h.imageEl,`.${i.containerClass}`)[0]:void 0}if(!h.imageEl||!h.imageWrapEl)return;let a,n,l,d,p,c,u,m,w,v,y,x,T,M,C,P,z,L;h.maxRatio=S(),e.params.cssMode&&(e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.touchAction="none"),h.slideEl.classList.add(`${i.zoomedSlideClass}`),void 0===f.touchesStart.x&&t?(a=t.pageX,n=t.pageY):(a=f.touchesStart.x,n=f.touchesStart.y);const k=o,A="number"==typeof t?t:null;1===o&&A&&(a=void 0,n=void 0,f.touchesStart.x=void 0,f.touchesStart.y=void 0);const I=S();s.scale=A||I,o=A||I,!t||1===o&&A?(u=0,m=0):(z=h.slideEl.offsetWidth,L=h.slideEl.offsetHeight,l=b(h.slideEl).left+r.scrollX,d=b(h.slideEl).top+r.scrollY,p=l+z/2-a,c=d+L/2-n,w=h.imageEl.offsetWidth||h.imageEl.clientWidth,v=h.imageEl.offsetHeight||h.imageEl.clientHeight,y=w*s.scale,x=v*s.scale,T=Math.min(z/2-y/2,0),M=Math.min(L/2-x/2,0),C=-T,P=-M,k>0&&A&&"number"==typeof f.currentX&&"number"==typeof f.currentY?(u=f.currentX*s.scale/k,m=f.currentY*s.scale/k):(u=p*s.scale,m=c*s.scale),uC&&(u=C),mP&&(m=P)),A&&1===s.scale&&(h.originX=0,h.originY=0),f.currentX=u,f.currentY=m,h.imageWrapEl.style.transitionDuration="300ms",h.imageWrapEl.style.transform=`translate3d(${u}px, ${m}px,0)`,h.imageEl.style.transitionDuration="300ms",h.imageEl.style.transform=`translate3d(0,0,0) scale(${s.scale})`}function O(){const t=e.zoom,s=e.params.zoom;if(!h.slideEl){e.params.virtual&&e.params.virtual.enabled&&e.virtual?h.slideEl=g(e.slidesEl,`.${e.params.slideActiveClass}`)[0]:h.slideEl=e.slides[e.activeIndex];let t=h.slideEl.querySelector(`.${s.containerClass}`);t&&(t=t.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),h.imageEl=t,h.imageWrapEl=t?E(h.imageEl,`.${s.containerClass}`)[0]:void 0}h.imageEl&&h.imageWrapEl&&(h.maxRatio=S(),e.params.cssMode&&(e.wrapperEl.style.overflow="",e.wrapperEl.style.touchAction=""),t.scale=1,o=1,f.currentX=void 0,f.currentY=void 0,f.touchesStart.x=void 0,f.touchesStart.y=void 0,h.imageWrapEl.style.transitionDuration="300ms",h.imageWrapEl.style.transform="translate3d(0,0,0)",h.imageEl.style.transitionDuration="300ms",h.imageEl.style.transform="translate3d(0,0,0) scale(1)",h.slideEl.classList.remove(`${s.zoomedSlideClass}`),h.slideEl=void 0,h.originX=0,h.originY=0,e.params.zoom.panOnMouseMove&&(u={x:0,y:0},c&&(c=!1,f.startX=0,f.startY=0)))}function D(t){const s=e.zoom;s.scale&&1!==s.scale?O():$(t)}function _(){return{passiveListener:!!e.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!e.params.passiveListeners||{passive:!1,capture:!0}}}function G(){const t=e.zoom;if(t.enabled)return;t.enabled=!0;const{passiveListener:s,activeListenerWithCapture:i}=_();e.wrapperEl.addEventListener("pointerdown",C,s),e.wrapperEl.addEventListener("pointermove",P,i),["pointerup","pointercancel","pointerout"].forEach(t=>{e.wrapperEl.addEventListener(t,z,s)}),e.wrapperEl.addEventListener("pointermove",k,i)}function B(){const t=e.zoom;if(!t.enabled)return;t.enabled=!1;const{passiveListener:s,activeListenerWithCapture:i}=_();e.wrapperEl.removeEventListener("pointerdown",C,s),e.wrapperEl.removeEventListener("pointermove",P,i),["pointerup","pointercancel","pointerout"].forEach(t=>{e.wrapperEl.removeEventListener(t,z,s)}),e.wrapperEl.removeEventListener("pointermove",k,i)}Object.defineProperty(e.zoom,"scale",{get:()=>y,set(e){if(y!==e){const t=h.imageEl,s=h.slideEl;i("zoomChange",e,t,s)}y=e}}),s("init",()=>{e.params.zoom.enabled&&G()}),s("destroy",()=>{B()}),s("touchStart",(t,s)=>{e.zoom.enabled&&function(t){const s=e.device;if(!h.imageEl)return;if(f.isTouched)return;s.android&&t.cancelable&&t.preventDefault(),f.isTouched=!0;const i=m.length>0?m[0]:t;f.touchesStart.x=i.pageX,f.touchesStart.y=i.pageY}(s)}),s("touchEnd",(t,s)=>{e.zoom.enabled&&function(){const t=e.zoom;if(m.length=0,!h.imageEl)return;if(!f.isTouched||!f.isMoved)return f.isTouched=!1,void(f.isMoved=!1);f.isTouched=!1,f.isMoved=!1;let s=300,i=300;const r=w.x*s,a=f.currentX+r,n=w.y*i,l=f.currentY+n;0!==w.x&&(s=Math.abs((a-f.currentX)/w.x)),0!==w.y&&(i=Math.abs((l-f.currentY)/w.y));const o=Math.max(s,i);f.currentX=a,f.currentY=l;const d=f.width*t.scale,p=f.height*t.scale;f.minX=Math.min(h.slideWidth/2-d/2,0),f.maxX=-f.minX,f.minY=Math.min(h.slideHeight/2-p/2,0),f.maxY=-f.minY,f.currentX=Math.max(Math.min(f.currentX,f.maxX),f.minX),f.currentY=Math.max(Math.min(f.currentY,f.maxY),f.minY),h.imageWrapEl.style.transitionDuration=`${o}ms`,h.imageWrapEl.style.transform=`translate3d(${f.currentX}px, ${f.currentY}px,0)`}()}),s("doubleTap",(t,s)=>{!e.animating&&e.params.zoom.enabled&&e.zoom.enabled&&e.params.zoom.toggle&&D(s)}),s("transitionEnd",()=>{e.zoom.enabled&&e.params.zoom.enabled&&A()}),s("slideChange",()=>{e.zoom.enabled&&e.params.zoom.enabled&&e.params.cssMode&&A()}),Object.assign(e.zoom,{enable:G,disable:B,in:$,out:O,toggle:D})},function({swiper:e,extendParams:t,on:s}){function i(e,t){const s=function(){let e,t,s;return(i,r)=>{for(t=-1,e=i.length;e-t>1;)s=e+t>>1,i[s]<=r?t=s:e=s;return e}}();let i,r;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(r=s(this.x,e),i=r-1,(e-this.x[i])*(this.y[r]-this.y[i])/(this.x[r]-this.x[i])+this.y[i]):0},this}function r(){e.controller.control&&e.controller.spline&&(e.controller.spline=void 0,delete e.controller.spline)}t({controller:{control:void 0,inverse:!1,by:"slide"}}),e.controller={control:void 0},s("beforeInit",()=>{if("undefined"!=typeof window&&("string"==typeof e.params.controller.control||e.params.controller.control instanceof HTMLElement)){return void("string"==typeof e.params.controller.control?[...document.querySelectorAll(e.params.controller.control)]:[e.params.controller.control]).forEach(t=>{if(e.controller.control||(e.controller.control=[]),t&&t.swiper)e.controller.control.push(t.swiper);else if(t){const s=`${e.params.eventsPrefix}init`,i=r=>{e.controller.control.push(r.detail[0]),e.update(),t.removeEventListener(s,i)};t.addEventListener(s,i)}})}e.controller.control=e.params.controller.control}),s("update",()=>{r()}),s("resize",()=>{r()}),s("observerUpdate",()=>{r()}),s("setTranslate",(t,s,i)=>{e.controller.control&&!e.controller.control.destroyed&&e.controller.setTranslate(s,i)}),s("setTransition",(t,s,i)=>{e.controller.control&&!e.controller.control.destroyed&&e.controller.setTransition(s,i)}),Object.assign(e.controller,{setTranslate:function(t,s){const r=e.controller.control;let a,n;const l=e.constructor;function o(t){if(t.destroyed)return;const s=e.rtlTranslate?-e.translate:e.translate;"slide"===e.params.controller.by&&(!function(t){e.controller.spline=e.params.loop?new i(e.slidesGrid,t.slidesGrid):new i(e.snapGrid,t.snapGrid)}(t),n=-e.controller.spline.interpolate(-s)),n&&"container"!==e.params.controller.by||(a=(t.maxTranslate()-t.minTranslate())/(e.maxTranslate()-e.minTranslate()),!Number.isNaN(a)&&Number.isFinite(a)||(a=1),n=(s-e.minTranslate())*a+t.minTranslate()),e.params.controller.inverse&&(n=t.maxTranslate()-n),t.updateProgress(n),t.setTranslate(n,e),t.updateActiveIndex(),t.updateSlidesClasses()}if(Array.isArray(r))for(let e=0;e{s.updateAutoHeight()}),S(s.wrapperEl,()=>{r&&s.transitionEnd()})))}if(Array.isArray(r))for(a=0;a{e.setAttribute("tabIndex","0")})}function p(e){(e=M(e)).forEach(e=>{e.setAttribute("tabIndex","-1")})}function c(e,t){(e=M(e)).forEach(e=>{e.setAttribute("role",t)})}function u(e,t){(e=M(e)).forEach(e=>{e.setAttribute("aria-roledescription",t)})}function m(e,t){(e=M(e)).forEach(e=>{e.setAttribute("aria-label",t)})}function h(e){(e=M(e)).forEach(e=>{e.setAttribute("aria-disabled",!0)})}function f(e){(e=M(e)).forEach(e=>{e.setAttribute("aria-disabled",!1)})}function g(t){if(13!==t.keyCode&&32!==t.keyCode)return;const s=e.params.a11y,i=t.target;if(!e.pagination||!e.pagination.el||i!==e.pagination.el&&!e.pagination.el.contains(t.target)||t.target.matches(de(e.params.pagination.bulletClass))){if(e.navigation&&e.navigation.prevEl&&e.navigation.nextEl){const t=M(e.navigation.prevEl);M(e.navigation.nextEl).includes(i)&&(e.isEnd&&!e.params.loop||e.slideNext(),e.isEnd?o(s.lastSlideMessage):o(s.nextSlideMessage)),t.includes(i)&&(e.isBeginning&&!e.params.loop||e.slidePrev(),e.isBeginning?o(s.firstSlideMessage):o(s.prevSlideMessage))}e.pagination&&i.matches(de(e.params.pagination.bulletClass))&&i.click()}}function w(){return e.pagination&&e.pagination.bullets&&e.pagination.bullets.length}function b(){return w()&&e.params.pagination.clickable}const y=(e,t,s)=>{d(e),"BUTTON"!==e.tagName&&(c(e,"button"),e.addEventListener("keydown",g)),m(e,s),function(e,t){(e=M(e)).forEach(e=>{e.setAttribute("aria-controls",t)})}(e,t)},E=t=>{a&&a!==t.target&&!a.contains(t.target)&&(r=!0),e.a11y.clicked=!0},S=()=>{r=!1,requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.destroyed||(e.a11y.clicked=!1)})})},T=e=>{l=(new Date).getTime()},C=t=>{if(e.a11y.clicked||!e.params.a11y.scrollOnFocus)return;if((new Date).getTime()-l<100)return;const s=t.target.closest(`.${e.params.slideClass}, swiper-slide`);if(!s||!e.slides.includes(s))return;a=s;const i=e.virtual&&e.params.virtual.enabled,n=(i?parseInt(s.getAttribute("data-swiper-slide-index"),10):e.slides.indexOf(s))===e.activeIndex,o=e.params.watchSlidesProgress&&e.visibleSlides&&e.visibleSlides.includes(s);n||o||t.sourceCapabilities&&t.sourceCapabilities.firesTouchEvents||(e.isHorizontal()?e.el.scrollLeft=0:e.el.scrollTop=0,requestAnimationFrame(()=>{r||(e.params.loop?e.slideToLoop(e.getSlideIndexWhenGrid(parseInt(s.getAttribute("data-swiper-slide-index"))),0):i?e.slideTo(e.getSlideIndexWhenGrid(parseInt(s.getAttribute("data-swiper-slide-index"),10)),0):e.slideTo(e.getSlideIndexWhenGrid(e.slides.indexOf(s)),0),r=!1)}))},z=()=>{const t=e.params.a11y;t.itemRoleDescriptionMessage&&u(e.slides,t.itemRoleDescriptionMessage),t.slideRole&&c(e.slides,t.slideRole);const s=e.slides.length;t.slideLabelMessage&&e.slides.forEach((i,r)=>{const a=e.params.loop?parseInt(i.getAttribute("data-swiper-slide-index"),10):r;m(i,t.slideLabelMessage.replace(/\{\{index\}\}/,a+1).replace(/\{\{slidesLength\}\}/,s))})},L=()=>{const t=e.params.a11y;e.el.append(n);const s=e.el;t.containerRoleDescriptionMessage&&u(s,t.containerRoleDescriptionMessage),t.containerMessage&&m(s,t.containerMessage),t.containerRole&&c(s,t.containerRole);const r=e.wrapperEl,a=t.id||r.getAttribute("id")||`swiper-wrapper-${function(e=16){return"x".repeat(e).replace(/x/g,()=>Math.round(16*Math.random()).toString(16))}(16)}`;var l;if(l=a,M(r).forEach(e=>{e.setAttribute("id",l)}),t.wrapperLiveRegion){!function(e,t){(e=M(e)).forEach(e=>{e.setAttribute("aria-live",t)})}(r,e.params.autoplay&&e.params.autoplay.enabled?"off":"polite")}z();let{nextEl:o,prevEl:d}=e.navigation?e.navigation:{};if(o=M(o),d=M(d),o&&o.forEach(e=>y(e,a,t.nextSlideMessage)),d&&d.forEach(e=>y(e,a,t.prevSlideMessage)),b()){M(e.pagination.el).forEach(e=>{e.addEventListener("keydown",g)})}i().addEventListener("visibilitychange",T),e.el.addEventListener("focus",C,!0),e.el.addEventListener("pointerdown",E,!0),e.el.addEventListener("pointerup",S,!0)};s("beforeInit",()=>{n=v("span",e.params.a11y.notificationClass),n.setAttribute("aria-live","assertive"),n.setAttribute("aria-atomic","true")}),s("afterInit",()=>{e.params.a11y.enabled&&L()}),s("slidesLengthChange snapGridLengthChange slidesGridLengthChange",()=>{e.params.a11y.enabled&&z()}),s("fromEdge toEdge afterInit lock unlock",()=>{e.params.a11y.enabled&&function(){if(e.params.loop||e.params.rewind||!e.navigation)return;const{nextEl:t,prevEl:s}=e.navigation;s&&(e.isBeginning?(h(s),p(s)):(f(s),d(s))),t&&(e.isEnd?(h(t),p(t)):(f(t),d(t)))}()}),s("paginationUpdate",()=>{e.params.a11y.enabled&&function(){const t=e.params.a11y;w()&&e.pagination.bullets.forEach(s=>{e.params.pagination.clickable&&(d(s),e.params.pagination.renderBullet||(c(s,"button"),m(s,t.paginationBulletMessage.replace(/\{\{index\}\}/,x(s)+1)))),s.matches(de(e.params.pagination.bulletActiveClass))?s.setAttribute("aria-current","true"):s.removeAttribute("aria-current")})}()}),s("destroy",()=>{e.params.a11y.enabled&&function(){n&&n.remove();let{nextEl:t,prevEl:s}=e.navigation?e.navigation:{};t=M(t),s=M(s),t&&t.forEach(e=>e.removeEventListener("keydown",g)),s&&s.forEach(e=>e.removeEventListener("keydown",g)),b()&&M(e.pagination.el).forEach(e=>{e.removeEventListener("keydown",g)});i().removeEventListener("visibilitychange",T),e.el&&"string"!=typeof e.el&&(e.el.removeEventListener("focus",C,!0),e.el.removeEventListener("pointerdown",E,!0),e.el.removeEventListener("pointerup",S,!0))}()})},function({swiper:e,extendParams:t,on:s}){t({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let i=!1,r={};const n=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),l=e=>{const t=a();let s;s=e?new URL(e):t.location;const i=s.pathname.slice(1).split("/").filter(e=>""!==e),r=i.length;return{key:i[r-2],value:i[r-1]}},o=(t,s)=>{const r=a();if(!i||!e.params.history.enabled)return;let l;l=e.params.url?new URL(e.params.url):r.location;const o=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${s}"]`):e.slides[s];let d=n(o.getAttribute("data-history"));if(e.params.history.root.length>0){let s=e.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${t?`${t}/`:""}${d}`}else l.pathname.includes(t)||(d=`${t?`${t}/`:""}${d}`);e.params.history.keepQuery&&(d+=l.search);const p=r.history.state;p&&p.value===d||(e.params.history.replaceState?r.history.replaceState({value:d},null,d):r.history.pushState({value:d},null,d))},d=(t,s,i)=>{if(s)for(let r=0,a=e.slides.length;r{r=l(e.params.url),d(e.params.speed,r.value,!1)};s("init",()=>{e.params.history.enabled&&(()=>{const t=a();if(e.params.history){if(!t.history||!t.history.pushState)return e.params.history.enabled=!1,void(e.params.hashNavigation.enabled=!0);i=!0,r=l(e.params.url),r.key||r.value?(d(0,r.value,e.params.runCallbacksOnInit),e.params.history.replaceState||t.addEventListener("popstate",p)):e.params.history.replaceState||t.addEventListener("popstate",p)}})()}),s("destroy",()=>{e.params.history.enabled&&(()=>{const t=a();e.params.history.replaceState||t.removeEventListener("popstate",p)})()}),s("transitionEnd _freeModeNoMomentumRelease",()=>{i&&o(e.params.history.key,e.activeIndex)}),s("slideChange",()=>{i&&e.params.cssMode&&o(e.params.history.key,e.activeIndex)})},function({swiper:e,extendParams:t,emit:s,on:r}){let n=!1;const l=i(),o=a();t({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(t,s){if(e.virtual&&e.params.virtual.enabled){const t=e.slides.find(e=>e.getAttribute("data-hash")===s);if(!t)return 0;return parseInt(t.getAttribute("data-swiper-slide-index"),10)}return e.getSlideIndex(g(e.slidesEl,`.${e.params.slideClass}[data-hash="${s}"], swiper-slide[data-hash="${s}"]`)[0])}}});const d=()=>{s("hashChange");const t=l.location.hash.replace("#",""),i=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex];if(t!==(i?i.getAttribute("data-hash"):"")){const s=e.params.hashNavigation.getSlideIndex(e,t);if(void 0===s||Number.isNaN(s))return;e.slideTo(s)}},p=()=>{if(!n||!e.params.hashNavigation.enabled)return;const t=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex],i=t?t.getAttribute("data-hash")||t.getAttribute("data-history"):"";e.params.hashNavigation.replaceState&&o.history&&o.history.replaceState?(o.history.replaceState(null,null,`#${i}`||""),s("hashSet")):(l.location.hash=i||"",s("hashSet"))};r("init",()=>{e.params.hashNavigation.enabled&&(()=>{if(!e.params.hashNavigation.enabled||e.params.history&&e.params.history.enabled)return;n=!0;const t=l.location.hash.replace("#","");if(t){const s=0,i=e.params.hashNavigation.getSlideIndex(e,t);e.slideTo(i||0,s,e.params.runCallbacksOnInit,!0)}e.params.hashNavigation.watchState&&o.addEventListener("hashchange",d)})()}),r("destroy",()=>{e.params.hashNavigation.enabled&&e.params.hashNavigation.watchState&&o.removeEventListener("hashchange",d)}),r("transitionEnd _freeModeNoMomentumRelease",()=>{n&&p()}),r("slideChange",()=>{n&&e.params.cssMode&&p()})},function({swiper:e,extendParams:t,on:s,emit:r,params:a}){let n,l;e.autoplay={running:!1,paused:!1,timeLeft:0},t({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let o,d,p,c,u,m,h,f=a&&a.autoplay?a.autoplay.delay:3e3,g=a&&a.autoplay?a.autoplay.delay:3e3,w=(new Date).getTime();function v(t){e&&!e.destroyed&&e.wrapperEl&&t.target===e.wrapperEl&&(e.wrapperEl.removeEventListener("transitionend",v),h||t.detail&&t.detail.bySwiperTouchMove||M())}const b=()=>{if(e.destroyed||!e.autoplay.running)return;e.autoplay.paused?d=!0:d&&(g=o,d=!1);const t=e.autoplay.paused?o:w+g-(new Date).getTime();e.autoplay.timeLeft=t,r("autoplayTimeLeft",t,t/f),l=requestAnimationFrame(()=>{b()})},y=()=>{let t=e.params.autoplay.delay;const s=(()=>{let t;if(t=e.virtual&&e.params.virtual.enabled?e.slides.find(e=>e.classList.contains("swiper-slide-active")):e.slides[e.activeIndex],!t)return;return parseInt(t.getAttribute("data-swiper-autoplay"),10)})();return!Number.isNaN(s)&&s>0&&(t=s),t},x=t=>{if(e.destroyed||!e.autoplay.running)return;cancelAnimationFrame(l),b();let s=t;void 0===s&&(s=y(),f=s,g=s),o=s;const i=e.params.speed,a=()=>{e&&!e.destroyed&&(e.params.autoplay.reverseDirection?!e.isBeginning||e.params.loop||e.params.rewind?(e.slidePrev(i,!0,!0),r("autoplay")):e.params.autoplay.stopOnLastSlide||(e.slideTo(e.slides.length-1,i,!0,!0),r("autoplay")):!e.isEnd||e.params.loop||e.params.rewind?(e.slideNext(i,!0,!0),r("autoplay")):e.params.autoplay.stopOnLastSlide||(e.slideTo(0,i,!0,!0),r("autoplay")),e.params.cssMode&&(w=(new Date).getTime(),requestAnimationFrame(()=>{x()})))};return s>0?(clearTimeout(n),n=setTimeout(()=>{a()},s)):requestAnimationFrame(()=>{a()}),s},E=()=>{w=(new Date).getTime(),e.autoplay.running=!0,x(),r("autoplayStart")},S=()=>{e.autoplay.running=!1,clearTimeout(n),cancelAnimationFrame(l),r("autoplayStop")},T=(t,s)=>{if(e.destroyed||!e.autoplay.running)return;clearTimeout(n),t||(m=!0);const i=()=>{r("autoplayPause"),e.params.autoplay.waitForTransition?e.wrapperEl.addEventListener("transitionend",v):M()};if(e.autoplay.paused=!0,s)return void i();const a=o||e.params.autoplay.delay;o=a-((new Date).getTime()-w),e.isEnd&&o<0&&!e.params.loop||(o<0&&(o=0),i())},M=()=>{e.isEnd&&o<0&&!e.params.loop||e.destroyed||!e.autoplay.running||(w=(new Date).getTime(),m?(m=!1,x(o)):x(),e.autoplay.paused=!1,r("autoplayResume"))},C=()=>{if(e.destroyed||!e.autoplay.running)return;const t=i();"hidden"===t.visibilityState&&(m=!0,T(!0)),"visible"===t.visibilityState&&M()},P=t=>{"mouse"===t.pointerType&&(m=!0,h=!0,e.animating||e.autoplay.paused||T(!0))},z=t=>{"mouse"===t.pointerType&&(h=!1,e.autoplay.paused&&M())};s("init",()=>{e.params.autoplay.enabled&&(e.params.autoplay.pauseOnMouseEnter&&(e.el.addEventListener("pointerenter",P),e.el.addEventListener("pointerleave",z)),i().addEventListener("visibilitychange",C),E())}),s("destroy",()=>{e.el&&"string"!=typeof e.el&&(e.el.removeEventListener("pointerenter",P),e.el.removeEventListener("pointerleave",z)),i().removeEventListener("visibilitychange",C),e.autoplay.running&&S()}),s("_freeModeStaticRelease",()=>{(c||m)&&M()}),s("_freeModeNoMomentumRelease",()=>{e.params.autoplay.disableOnInteraction?S():T(!0,!0)}),s("beforeTransitionStart",(t,s,i)=>{!e.destroyed&&e.autoplay.running&&(i||!e.params.autoplay.disableOnInteraction?T(!0,!0):S())}),s("sliderFirstMove",()=>{!e.destroyed&&e.autoplay.running&&(e.params.autoplay.disableOnInteraction?S():(p=!0,c=!1,m=!1,u=setTimeout(()=>{m=!0,c=!0,T(!0)},200)))}),s("touchEnd",()=>{if(!e.destroyed&&e.autoplay.running&&p){if(clearTimeout(u),clearTimeout(n),e.params.autoplay.disableOnInteraction)return c=!1,void(p=!1);c&&e.params.cssMode&&M(),c=!1,p=!1}}),s("slideChange",()=>{!e.destroyed&&e.autoplay.running&&e.autoplay.paused&&(o=y(),f=y())}),Object.assign(e.autoplay,{start:E,stop:S,pause:T,resume:M})},function({swiper:e,extendParams:t,on:s}){t({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,a=!1;function n(){const t=e.thumbs.swiper;return!(!t||t.destroyed)&&(t.params.virtual&&t.params.virtual.enabled)}function l(){const t=e.thumbs.swiper;if(!t||t.destroyed)return;const s=t.clickedIndex,i=t.clickedSlide;if(i&&i.classList.contains(e.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let r;r=t.params.loop?parseInt(t.clickedSlide.getAttribute("data-swiper-slide-index"),10):s,e.params.loop?e.slideToLoop(r):e.slideTo(r)}function o(){const{thumbs:t}=e.params;if(r)return!1;r=!0;const s=e.constructor;if(t.swiper instanceof s){if(t.swiper.destroyed)return r=!1,!1;e.thumbs.swiper=t.swiper,Object.assign(e.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(e.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),e.thumbs.swiper.update()}else if(p(t.swiper)){const i=Object.assign({},t.swiper);Object.assign(i,{watchSlidesProgress:!0,slideToClickedSlide:!1}),e.thumbs.swiper=new s(i),a=!0}return e.thumbs.swiper.el.classList.add(e.params.thumbs.thumbsContainerClass),e.thumbs.swiper.on("tap",l),n()&&e.thumbs.swiper.on("virtualUpdate",()=>{d(!1,{autoScroll:!1})}),!0}function d(t,s){const i=e.thumbs.swiper;if(!i||i.destroyed)return;let r=1;const a=e.params.thumbs.slideThumbActiveClass;if(e.params.slidesPerView>1&&!e.params.centeredSlides&&(r=e.params.slidesPerView),e.params.thumbs.multipleActiveThumbs||(r=1),r=Math.floor(r),i.slides.forEach(e=>e.classList.remove(a)),i.params.loop||n())for(let t=0;t{e.classList.add(a)});else for(let t=0;tt.getAttribute("data-swiper-slide-index")===`${e.realIndex}`);l=s.slides.indexOf(t),o=e.activeIndex>e.previousIndex?"next":"prev"}else l=e.realIndex,o=l>e.previousIndex?"next":"prev";a&&(l+="next"===o?r:-1*r),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(l)<0&&(s.params.centeredSlides?l=l>n?l-Math.floor(i/2)+1:l+Math.floor(i/2)-1:l>n&&s.params.slidesPerGroup,s.slideTo(l,t))}}(t?0:void 0)}e.thumbs={swiper:null},s("beforeInit",()=>{const{thumbs:t}=e.params;if(t&&t.swiper)if("string"==typeof t.swiper||t.swiper instanceof HTMLElement){const s=i(),r=()=>{const i="string"==typeof t.swiper?s.querySelector(t.swiper):t.swiper;if(i&&i.swiper)t.swiper=i.swiper,o(),d(!0);else if(i){const s=`${e.params.eventsPrefix}init`,r=a=>{t.swiper=a.detail[0],i.removeEventListener(s,r),o(),d(!0),t.swiper.update(),e.update()};i.addEventListener(s,r)}return i},a=()=>{if(e.destroyed)return;r()||requestAnimationFrame(a)};requestAnimationFrame(a)}else o(),d(!0)}),s("slideChange update resize observerUpdate",()=>{d()}),s("setTransition",(t,s)=>{const i=e.thumbs.swiper;i&&!i.destroyed&&i.setTransition(s)}),s("beforeDestroy",()=>{const t=e.thumbs.swiper;t&&!t.destroyed&&a&&t.destroy()}),Object.assign(e.thumbs,{init:o,update:d})},function({swiper:e,extendParams:t,emit:s,once:i}){t({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(e,{freeMode:{onTouchStart:function(){if(e.params.cssMode)return;const t=e.getTranslate();e.setTranslate(t),e.setTransition(0),e.touchEventsData.velocities.length=0,e.freeMode.onTouchEnd({currentPos:e.rtl?e.translate:-e.translate})},onTouchMove:function(){if(e.params.cssMode)return;const{touchEventsData:t,touches:s}=e;0===t.velocities.length&&t.velocities.push({position:s[e.isHorizontal()?"startX":"startY"],time:t.touchStartTime}),t.velocities.push({position:s[e.isHorizontal()?"currentX":"currentY"],time:o()})},onTouchEnd:function({currentPos:t}){if(e.params.cssMode)return;const{params:r,wrapperEl:a,rtlTranslate:n,snapGrid:l,touchEventsData:d}=e,p=o()-d.touchStartTime;if(t<-e.minTranslate())e.slideTo(e.activeIndex);else if(t>-e.maxTranslate())e.slides.length1){const t=d.velocities.pop(),s=d.velocities.pop(),i=t.position-s.position,a=t.time-s.time;e.velocity=i/a,e.velocity/=2,Math.abs(e.velocity)150||o()-t.time>300)&&(e.velocity=0)}else e.velocity=0;e.velocity*=r.freeMode.momentumVelocityRatio,d.velocities.length=0;let t=1e3*r.freeMode.momentumRatio;const p=e.velocity*t;let c=e.translate+p;n&&(c=-c);let u,m=!1;const h=20*Math.abs(e.velocity)*r.freeMode.momentumBounceRatio;let f;if(ce.minTranslate())r.freeMode.momentumBounce?(c-e.minTranslate()>h&&(c=e.minTranslate()+h),u=e.minTranslate(),m=!0,d.allowMomentumBounce=!0):c=e.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let t;for(let e=0;e-c){t=e;break}c=Math.abs(l[t]-c){e.loopFix()}),0!==e.velocity){if(t=n?Math.abs((-c-e.translate)/e.velocity):Math.abs((c-e.translate)/e.velocity),r.freeMode.sticky){const s=Math.abs((n?-c:c)-e.translate),i=e.slidesSizesGrid[e.activeIndex];t=s{e&&!e.destroyed&&d.allowMomentumBounce&&(s("momentumBounce"),e.setTransition(r.speed),setTimeout(()=>{e.setTranslate(u),S(a,()=>{e&&!e.destroyed&&e.transitionEnd()})},0))})):e.velocity?(s("_freeModeNoMomentumRelease"),e.updateProgress(c),e.setTransition(t),e.setTranslate(c),e.transitionStart(!0,e.swipeDirection),e.animating||(e.animating=!0,S(a,()=>{e&&!e.destroyed&&e.transitionEnd()}))):e.updateProgress(c),e.updateActiveIndex(),e.updateSlidesClasses()}else{if(r.freeMode.sticky)return void e.slideToClosest();r.freeMode&&s("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||p>=r.longSwipesMs)&&(s("_freeModeStaticRelease"),e.updateProgress(),e.updateActiveIndex(),e.updateSlidesClasses())}}}})},function({swiper:e,extendParams:t,on:s}){let i,r,a,n;t({grid:{rows:1,fill:"column"}});const l=()=>{let t=e.params.spaceBetween;return"string"==typeof t&&t.indexOf("%")>=0?t=parseFloat(t.replace("%",""))/100*e.size:"string"==typeof t&&(t=parseFloat(t)),t};s("init",()=>{n=e.params.grid&&e.params.grid.rows>1}),s("update",()=>{const{params:t,el:s}=e,i=t.grid&&t.grid.rows>1;n&&!i?(s.classList.remove(`${t.containerModifierClass}grid`,`${t.containerModifierClass}grid-column`),a=1,e.emitContainerClasses()):!n&&i&&(s.classList.add(`${t.containerModifierClass}grid`),"column"===t.grid.fill&&s.classList.add(`${t.containerModifierClass}grid-column`),e.emitContainerClasses()),n=i}),e.grid={initSlides:t=>{const{slidesPerView:s}=e.params,{rows:n,fill:l}=e.params.grid,o=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:t.length;a=Math.floor(o/n),i=Math.floor(o/n)===o/n?o:Math.ceil(o/n)*n,"auto"!==s&&"row"===l&&(i=Math.max(i,s*n)),r=i/n},unsetSlides:()=>{e.slides&&e.slides.forEach(t=>{t.swiperSlideGridSet&&(t.style.height="",t.style[e.getDirectionLabel("margin-top")]="")})},updateSlide:(t,s,n)=>{const{slidesPerGroup:o}=e.params,d=l(),{rows:p,fill:c}=e.params.grid,u=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:n.length;let m,h,f;if("row"===c&&o>1){const e=Math.floor(t/(o*p)),r=t-p*o*e,a=0===e?o:Math.min(Math.ceil((u-e*p*o)/p),o);f=Math.floor(r/a),h=r-f*a+e*o,m=h+f*i/p,s.style.order=m}else"column"===c?(h=Math.floor(t/p),f=t-h*p,(h>a||h===a&&f===p-1)&&(f+=1,f>=p&&(f=0,h+=1))):(f=Math.floor(t/r),h=t-f*r);s.row=f,s.column=h,s.style.height=`calc((100% - ${(p-1)*d}px) / ${p})`,s.style[e.getDirectionLabel("margin-top")]=0!==f?d&&`${d}px`:"",s.swiperSlideGridSet=!0},updateWrapperSize:(t,s)=>{const{centeredSlides:r,roundLengths:a}=e.params,n=l(),{rows:o}=e.params.grid;if(e.virtualSize=(t+n)*i,e.virtualSize=Math.ceil(e.virtualSize/o)-n,e.params.cssMode||(e.wrapperEl.style[e.getDirectionLabel("width")]=`${e.virtualSize+n}px`),r){const t=[];for(let i=0;i{const{slides:t}=e;e.params.fadeEffect;for(let s=0;s{const s=e.slides.map(e=>f(e));s.forEach(e=>{e.style.transitionDuration=`${t}ms`}),we({swiper:e,duration:t,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!e.params.cssMode})})},function({swiper:e,extendParams:t,on:s}){t({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const i=(e,t,s)=>{let i=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),r=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");i||(i=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(i)),r||(r=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(r)),i&&(i.style.opacity=Math.max(-t,0)),r&&(r.style.opacity=Math.max(t,0))};fe({effect:"cube",swiper:e,on:s,setTranslate:()=>{const{el:t,wrapperEl:s,slides:r,width:a,height:n,rtlTranslate:l,size:o,browser:d}=e,p=C(e),c=e.params.cubeEffect,u=e.isHorizontal(),m=e.virtual&&e.params.virtual.enabled;let h,f=0;c.shadow&&(u?(h=e.wrapperEl.querySelector(".swiper-cube-shadow"),h||(h=v("div","swiper-cube-shadow"),e.wrapperEl.append(h)),h.style.height=`${a}px`):(h=t.querySelector(".swiper-cube-shadow"),h||(h=v("div","swiper-cube-shadow"),t.append(h))));for(let e=0;e-1&&(f=90*s+90*d,l&&(f=90*-s-90*d)),t.style.transform=v,c.slideShadows&&i(t,d,u)}if(s.style.transformOrigin=`50% 50% -${o/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${o/2}px`,c.shadow)if(u)h.style.transform=`translate3d(0px, ${a/2+c.shadowOffset}px, ${-a/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${c.shadowScale})`;else{const e=Math.abs(f)-90*Math.floor(Math.abs(f)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=c.shadowScale,i=c.shadowScale/t,r=c.shadowOffset;h.style.transform=`scale3d(${s}, 1, ${i}) translate3d(0px, ${n/2+r}px, ${-n/2/i}px) rotateX(-89.99deg)`}const g=(d.isSafari||d.isWebView)&&d.needPerspectiveFix?-o/2:0;s.style.transform=`translate3d(0px,0,${g}px) rotateX(${p(e.isHorizontal()?0:f)}deg) rotateY(${p(e.isHorizontal()?-f:0)}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${g}px`)},setTransition:t=>{const{el:s,slides:i}=e;if(i.forEach(e=>{e.style.transitionDuration=`${t}ms`,e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(e=>{e.style.transitionDuration=`${t}ms`})}),e.params.cubeEffect.shadow&&!e.isHorizontal()){const e=s.querySelector(".swiper-cube-shadow");e&&(e.style.transitionDuration=`${t}ms`)}},recreateShadows:()=>{const t=e.isHorizontal();e.slides.forEach(e=>{const s=Math.max(Math.min(e.progress,1),-1);i(e,s,t)})},getEffectParams:()=>e.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function({swiper:e,extendParams:t,on:s}){t({flipEffect:{slideShadows:!0,limitRotation:!0}});const i=(t,s)=>{let i=e.isHorizontal()?t.querySelector(".swiper-slide-shadow-left"):t.querySelector(".swiper-slide-shadow-top"),r=e.isHorizontal()?t.querySelector(".swiper-slide-shadow-right"):t.querySelector(".swiper-slide-shadow-bottom");i||(i=ve("flip",t,e.isHorizontal()?"left":"top")),r||(r=ve("flip",t,e.isHorizontal()?"right":"bottom")),i&&(i.style.opacity=Math.max(-s,0)),r&&(r.style.opacity=Math.max(s,0))};fe({effect:"flip",swiper:e,on:s,setTranslate:()=>{const{slides:t,rtlTranslate:s}=e,r=e.params.flipEffect,a=C(e);for(let n=0;n{const s=e.slides.map(e=>f(e));s.forEach(e=>{e.style.transitionDuration=`${t}ms`,e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(e=>{e.style.transitionDuration=`${t}ms`})}),we({swiper:e,duration:t,transformElements:s})},recreateShadows:()=>{e.params.flipEffect,e.slides.forEach(t=>{let s=t.progress;e.params.flipEffect.limitRotation&&(s=Math.max(Math.min(t.progress,1),-1)),i(t,s)})},getEffectParams:()=>e.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!e.params.cssMode})})},function({swiper:e,extendParams:t,on:s}){t({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}}),fe({effect:"coverflow",swiper:e,on:s,setTranslate:()=>{const{width:t,height:s,slides:i,slidesSizesGrid:r}=e,a=e.params.coverflowEffect,n=e.isHorizontal(),l=e.translate,o=n?t/2-l:s/2-l,d=n?a.rotate:-a.rotate,p=a.depth,c=C(e);for(let e=0,t=i.length;e0?u:0),s&&(s.style.opacity=-u>0?-u:0)}}},setTransition:t=>{e.slides.map(e=>f(e)).forEach(e=>{e.style.transitionDuration=`${t}ms`,e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(e=>{e.style.transitionDuration=`${t}ms`})})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function({swiper:e,extendParams:t,on:s}){t({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const i=e=>"string"==typeof e?e:`${e}px`;fe({effect:"creative",swiper:e,on:s,setTranslate:()=>{const{slides:t,wrapperEl:s,slidesSizesGrid:r}=e,a=e.params.creativeEffect,{progressMultiplier:n}=a,l=e.params.centeredSlides,o=C(e);if(l){const t=r[0]/2-e.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${t}px))`}for(let s=0;s0&&(g=a.prev,f=!0),m.forEach((e,t)=>{m[t]=`calc(${e}px + (${i(g.translate[t])} * ${Math.abs(p*n)}))`}),h.forEach((e,t)=>{let s=g.rotate[t]*Math.abs(p*n);h[t]=s}),r.style.zIndex=-Math.abs(Math.round(d))+t.length;const w=m.join(", "),v=`rotateX(${o(h[0])}deg) rotateY(${o(h[1])}deg) rotateZ(${o(h[2])}deg)`,b=c<0?`scale(${1+(1-g.scale)*c*n})`:`scale(${1-(1-g.scale)*c*n})`,y=c<0?1+(1-g.opacity)*c*n:1-(1-g.opacity)*c*n,x=`translate3d(${w}) ${v} ${b}`;if(f&&g.shadow||!f){let e=r.querySelector(".swiper-slide-shadow");if(!e&&g.shadow&&(e=ve("creative",r)),e){const t=a.shadowPerProgress?p*(1/a.limitProgress):p;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const E=ge(0,r);E.style.transform=x,E.style.opacity=y,g.origin&&(E.style.transformOrigin=g.origin)}},setTransition:t=>{const s=e.slides.map(e=>f(e));s.forEach(e=>{e.style.transitionDuration=`${t}ms`,e.querySelectorAll(".swiper-slide-shadow").forEach(e=>{e.style.transitionDuration=`${t}ms`})}),we({swiper:e,duration:t,transformElements:s,allSlides:!0})},perspective:()=>e.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!e.params.cssMode})})},function({swiper:e,extendParams:t,on:s}){t({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),fe({effect:"cards",swiper:e,on:s,setTranslate:()=>{const{slides:t,activeIndex:s,rtlTranslate:i}=e,r=e.params.cardsEffect,{startTranslate:a,isTouched:n}=e.touchEventsData,l=i?-e.translate:e.translate;for(let o=0;o0&&c<1&&(n||e.params.cssMode)&&l-1&&(n||e.params.cssMode)&&l>a;if(y||x){const t=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;w+=-28*c*t,g+=-.5*t,v+=96*t,h=(r.rotate||e.isHorizontal()?-25:0)*t*Math.abs(c)+"%"}if(m=c<0?`calc(${m}px ${i?"-":"+"} (${v*Math.abs(c)}%))`:c>0?`calc(${m}px ${i?"-":"+"} (-${v*Math.abs(c)}%))`:`${m}px`,!e.isHorizontal()){const e=h;h=m,m=e}const E=c<0?""+(1+(1-g)*c):""+(1-(1-g)*c),S=`\n translate3d(${m}, ${h}, ${f}px)\n rotateZ(${r.rotate?i?-w:w:0}deg)\n scale(${E})\n `;if(r.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=ve("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(p))+t.length;ge(0,d).style.transform=S}},setTransition:t=>{const s=e.slides.map(e=>f(e));s.forEach(e=>{e.style.transitionDuration=`${t}ms`,e.querySelectorAll(".swiper-slide-shadow").forEach(e=>{e.style.transitionDuration=`${t}ms`})}),we({swiper:e,duration:t,transformElements:s})},perspective:()=>!0,overwriteParams:()=>({_loopSwapReset:!1,watchSlidesProgress:!0,loopAdditionalSlides:e.params.cardsEffect.rotate?3:2,centeredSlides:!0,virtualTranslate:!e.params.cssMode})})}];ne.use(be);const ye=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","swiperElementNodeName","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_snapToSlideEdge","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function xe(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function Ee(e,t){const s=["__proto__","constructor","prototype"];Object.keys(t).filter(e=>s.indexOf(e)<0).forEach(s=>{void 0===e[s]?e[s]=t[s]:xe(t[s])&&xe(e[s])&&Object.keys(t[s]).length>0?t[s].__swiper__?e[s]=t[s]:Ee(e[s],t[s]):e[s]=t[s]})}function Se(e=""){return e.replace(/-[a-z]/g,e=>e.toUpperCase().replace("-",""))}const Te=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let t;try{t=JSON.parse(e)}catch(s){t=e}return t}return e}},Me=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function Ce(e,t,s){const i={},r={};Ee(i,se);const a=[...ye,"on"],n=a.map(e=>e.replace(/_/,""));a.forEach(t=>{t=t.replace("_",""),void 0!==e[t]&&(r[t]=e[t])});const l=[...e.attributes];return"string"==typeof t&&void 0!==s&&l.push({name:t,value:xe(s)?{...s}:s}),l.forEach(e=>{const t=Me.find(t=>e.name.startsWith(`${t}-`));if(t){const s=Se(t),i=Se(e.name.split(`${t}-`)[1]);void 0===r[s]&&(r[s]={}),!0===r[s]&&(r[s]={enabled:!0}),!1===r[s]&&(r[s]={enabled:!1}),r[s][i]=Te(e.value)}else{const t=Se(e.name);if(!n.includes(t))return;const s=Te(e.value);r[t]&&Me.includes(e.name)&&!xe(s)?(r[t].constructor!==Object&&(r[t]={}),r[t].enabled=!!s):r[t]=s}}),Ee(i,r),i.navigation?i.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==i.navigation?i.navigation:{}}:!1===i.navigation&&delete i.navigation,i.scrollbar?i.scrollbar={el:".swiper-scrollbar",...!0!==i.scrollbar?i.scrollbar:{}}:!1===i.scrollbar&&delete i.scrollbar,i.pagination?i.pagination={el:".swiper-pagination",...!0!==i.pagination?i.pagination:{}}:!1===i.pagination&&delete i.pagination,{params:i,passedParams:r}}const Pe=':host{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;height:100%;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;padding:0;position:relative;width:100%;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:initial;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}.swiper-css-mode.swiper-horizontal ::slotted(swiper-slide):last-child{margin-inline-end:var(--swiper-slides-offset-after)}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}.swiper-css-mode.swiper-vertical ::slotted(swiper-slide):last-child{margin-block-end:var(--swiper-slides-offset-after)}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper:after{content:"";left:0;pointer-events:none;position:absolute;top:0}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{align-items:center;color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;display:flex;height:var(--swiper-navigation-size);justify-content:center;position:absolute;width:var(--swiper-navigation-size);z-index:10}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{height:100%;object-fit:contain;transform-origin:center;width:100%;fill:currentColor;pointer-events:none}.swiper-button-lock{display:none}.swiper-button-next,.swiper-button-prev{margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto}.swiper-button-prev .swiper-navigation-icon{transform:rotate(180deg)}.swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.swiper-horizontal .swiper-button-next,.swiper-horizontal .swiper-button-prev,.swiper-horizontal~.swiper-button-next,.swiper-horizontal~.swiper-button-prev{margin-left:0;margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.swiper-horizontal .swiper-button-prev,.swiper-horizontal.swiper-rtl .swiper-button-next,.swiper-horizontal.swiper-rtl~.swiper-button-next,.swiper-horizontal~.swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto}.swiper-horizontal .swiper-button-next,.swiper-horizontal.swiper-rtl .swiper-button-prev,.swiper-horizontal.swiper-rtl~.swiper-button-prev,.swiper-horizontal~.swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.swiper-horizontal .swiper-button-prev .swiper-navigation-icon,.swiper-horizontal.swiper-rtl .swiper-button-next .swiper-navigation-icon,.swiper-horizontal.swiper-rtl~.swiper-button-next .swiper-navigation-icon,.swiper-horizontal~.swiper-button-prev .swiper-navigation-icon{transform:rotate(180deg)}.swiper-horizontal.swiper-rtl .swiper-button-prev .swiper-navigation-icon,.swiper-horizontal.swiper-rtl~.swiper-button-prev .swiper-navigation-icon{transform:rotate(0deg)}.swiper-vertical .swiper-button-next,.swiper-vertical .swiper-button-prev,.swiper-vertical~.swiper-button-next,.swiper-vertical~.swiper-button-prev{left:var(--swiper-navigation-top-offset,50%);margin-left:calc(0px - var(--swiper-navigation-size)/2);margin-top:0;right:auto}.swiper-vertical .swiper-button-prev,.swiper-vertical~.swiper-button-prev{bottom:auto;top:var(--swiper-navigation-sides-offset,4px)}.swiper-vertical .swiper-button-prev .swiper-navigation-icon,.swiper-vertical~.swiper-button-prev .swiper-navigation-icon{transform:rotate(-90deg)}.swiper-vertical .swiper-button-next,.swiper-vertical~.swiper-button-next{bottom:var(--swiper-navigation-sides-offset,4px);top:auto}.swiper-vertical .swiper-button-next .swiper-navigation-icon,.swiper-vertical~.swiper-button-next .swiper-navigation-icon{transform:rotate(90deg)}.swiper-pagination{position:absolute;text-align:center;transform:translateZ(0);transition:opacity .3s;z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{position:relative;transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);display:inline-block;height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px))}button.swiper-pagination-bullet{appearance:none;border:none;box-shadow:none;margin:0;padding:0}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translate3d(0,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{display:block;margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,left .2s}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,#00000040);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));height:100%;left:0;position:absolute;top:0;transform:scale(0);transform-origin:left top;width:100%}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0;width:100%}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{height:100%;left:0;top:0;width:var(--swiper-pagination-progressbar-size,4px)}.swiper-pagination-lock{display:none}.swiper-scrollbar{background:var(--swiper-scrollbar-bg-color,#0000001a);border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{bottom:var(--swiper-scrollbar-bottom,4px);height:var(--swiper-scrollbar-size,4px);left:var(--swiper-scrollbar-sides-offset,1%);position:absolute;top:var(--swiper-scrollbar-top,auto);width:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);z-index:50}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{height:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);left:var(--swiper-scrollbar-left,auto);position:absolute;right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);width:var(--swiper-scrollbar-size,4px);z-index:50}.swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,#00000080);border-radius:var(--swiper-scrollbar-border-radius,10px);height:100%;left:0;position:relative;top:0;width:100%}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{left:0;opacity:0;pointer-events:none;position:absolute;top:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{margin:0 auto;transition-timing-function:ease-out}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-direction:column;flex-wrap:wrap}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){backface-visibility:hidden;height:100%;pointer-events:none;transform-origin:0 0;visibility:hidden;width:100%;z-index:1}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{bottom:0;height:100%;left:0;opacity:.6;position:absolute;width:100%;z-index:0}.swiper-cube .swiper-cube-shadow:before{background:#000;bottom:0;content:"";filter:blur(50px);left:0;position:absolute;right:0;top:0}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){backface-visibility:hidden;pointer-events:none;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){backface-visibility:hidden;overflow:hidden;transform-origin:center bottom}';const ze="undefined"==typeof window||"undefined"==typeof HTMLElement?class{}:HTMLElement,Le=(e,t)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const s=new CSSStyleSheet;s.replaceSync(t),e.adoptedStyleSheets=[s]}else{const s=document.createElement("style");s.rel="stylesheet",s.textContent=t,e.appendChild(s)}};class ke extends ze{constructor(){super(),this.attachShadow({mode:"open"})}cssStyles(){return[Pe,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,t=[...this.querySelectorAll("[slot^=slide-]")].map(e=>parseInt(e.getAttribute("slot").split("slide-")[1],10));if(this.slideSlots=t.length?Math.max(...t)+1:0,this.rendered)if(this.slideSlots>e)for(let t=e;t=0;t-=1)t>this.slideSlots&&e[t].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&Le(this.shadowRoot,e),this.cssLinks().forEach(e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const t=document.createElement("link");t.rel="stylesheet",t.href=e,this.shadowRoot.appendChild(t)});const t=document.createElement("div");t.classList.add("swiper"),t.part="container",P(t,`\n \n
\n \n ${Array.from({length:this.slideSlots}).map((e,t)=>`\n \n \n \n `).join("")}\n
\n \n ${function(e={}){return e.navigation&&void 0===e.navigation.nextEl&&void 0===e.navigation.prevEl}(this.passedParams)?'\n
\n
\n ':""}\n ${function(e={}){return e.pagination&&void 0===e.pagination.el}(this.passedParams)?'\n
\n ':""}\n ${function(e={}){return e.scrollbar&&void 0===e.scrollbar.el}(this.passedParams)?'\n
\n ':""}\n `),this.shadowRoot.appendChild(t),this.rendered=!0}initialize(){if(this.swiper&&this.swiper.initialized)return;const{params:e,passedParams:t}=Ce(this);this.swiperParams=e,this.passedParams=t,delete this.swiperParams.init,this.render(),this.swiper=new ne(this.shadowRoot.querySelector(".swiper"),{...e.virtual?{}:{observer:!0},...e,touchEventsTarget:"container",onAny:(t,...s)=>{"observerUpdate"===t&&this.calcSlideSlots();const i=e.eventsPrefix?`${e.eventsPrefix}${t.toLowerCase()}`:t.toLowerCase(),r=new CustomEvent(i,{detail:s,bubbles:"hashChange"!==t,cancelable:!0});this.dispatchEvent(r)}})}connectedCallback(){this.swiper&&this.swiper.initialized&&this.nested&&this.closest("swiper-slide")&&this.closest("swiper-slide").swiperLoopMoveDOM||!1!==this.init&&"false"!==this.getAttribute("init")&&this.initialize()}disconnectedCallback(){this.nested&&this.closest("swiper-slide")&&this.closest("swiper-slide").swiperLoopMoveDOM||this.swiper&&this.swiper.destroy&&this.swiper.destroy()}updateSwiperOnPropChange(e,t){const{params:s,passedParams:i}=Ce(this,e,t);this.passedParams=i,this.swiperParams=s,this.swiper&&this.swiper.params[e]===t||function({swiper:e,slides:t,passedParams:s,changedParams:i,nextEl:r,prevEl:a,scrollbarEl:n,paginationEl:l}){const o=i.filter(e=>"children"!==e&&"direction"!==e&&"wrapperClass"!==e),{params:d,pagination:p,navigation:c,scrollbar:u,virtual:m,thumbs:h}=e;let f,g,w,v,b,y,x,E;i.includes("thumbs")&&s.thumbs&&s.thumbs.swiper&&!s.thumbs.swiper.destroyed&&d.thumbs&&(!d.thumbs.swiper||d.thumbs.swiper.destroyed)&&(f=!0),i.includes("controller")&&s.controller&&s.controller.control&&d.controller&&!d.controller.control&&(g=!0),i.includes("pagination")&&s.pagination&&(s.pagination.el||l)&&(d.pagination||!1===d.pagination)&&p&&!p.el&&(w=!0),i.includes("scrollbar")&&s.scrollbar&&(s.scrollbar.el||n)&&(d.scrollbar||!1===d.scrollbar)&&u&&!u.el&&(v=!0),i.includes("navigation")&&s.navigation&&(s.navigation.prevEl||a)&&(s.navigation.nextEl||r)&&(d.navigation||!1===d.navigation)&&c&&!c.prevEl&&!c.nextEl&&(b=!0);const S=t=>{e[t]&&(e[t].destroy(),"navigation"===t?(e.isElement&&(e[t].prevEl.remove(),e[t].nextEl.remove()),d[t].prevEl=void 0,d[t].nextEl=void 0,e[t].prevEl=void 0,e[t].nextEl=void 0):(e.isElement&&e[t].el.remove(),d[t].el=void 0,e[t].el=void 0))};i.includes("loop")&&e.isElement&&(d.loop&&!s.loop?y=!0:!d.loop&&s.loop?x=!0:E=!0),o.forEach(e=>{if(xe(d[e])&&xe(s[e]))Object.assign(d[e],s[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in s[e])||s[e].enabled||S(e);else{const t=s[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?d[e]=s[e]:!1===t&&S(e)}}),o.includes("controller")&&!g&&e.controller&&e.controller.control&&d.controller&&d.controller.control&&(e.controller.control=d.controller.control),i.includes("children")&&t&&m&&d.virtual.enabled?(m.slides=t,m.update(!0)):i.includes("virtual")&&m&&d.virtual.enabled&&(t&&(m.slides=t),m.update(!0)),i.includes("children")&&t&&d.loop&&(E=!0),f&&h.init()&&h.update(!0);g&&(e.controller.control=d.controller.control),w&&(!e.isElement||l&&"string"!=typeof l||((l=document.createElement("div")).classList.add("swiper-pagination"),l.part.add("pagination"),e.el.appendChild(l)),l&&(d.pagination.el=l),p.init(),p.render(),p.update()),v&&(!e.isElement||n&&"string"!=typeof n||((n=document.createElement("div")).classList.add("swiper-scrollbar"),n.part.add("scrollbar"),e.el.appendChild(n)),n&&(d.scrollbar.el=n),u.init(),u.updateSize(),u.setTranslate()),b&&(e.isElement&&(r&&"string"!=typeof r||((r=document.createElement("div")).classList.add("swiper-button-next"),P(r,e.navigation.arrowSvg),r.part.add("button-next"),e.el.appendChild(r)),a&&"string"!=typeof a||((a=document.createElement("div")).classList.add("swiper-button-prev"),P(a,e.navigation.arrowSvg),a.part.add("button-prev"),e.el.appendChild(a))),r&&(d.navigation.nextEl=r),a&&(d.navigation.prevEl=a),c.init(),c.update()),i.includes("allowSlideNext")&&(e.allowSlideNext=s.allowSlideNext),i.includes("allowSlidePrev")&&(e.allowSlidePrev=s.allowSlidePrev),i.includes("direction")&&e.changeDirection(s.direction,!1),(y||E)&&e.loopDestroy(),(x||E)&&e.loopCreate(),e.update()}({swiper:this.swiper,passedParams:this.passedParams,changedParams:[Se(e)],..."navigation"===e&&i[e]?{prevEl:".swiper-button-prev",nextEl:".swiper-button-next"}:{},..."pagination"===e&&i[e]?{paginationEl:".swiper-pagination"}:{},..."scrollbar"===e&&i[e]?{scrollbarEl:".swiper-scrollbar"}:{}})}attributeChangedCallback(e,t,s){this.swiper&&this.swiper.initialized&&("true"===t&&null===s&&(s=!1),this.updateSwiperOnPropChange(e,s))}static get observedAttributes(){return ye.filter(e=>e.includes("_")).map(e=>e.replace(/[A-Z]/g,e=>`-${e}`).replace("_","").toLowerCase())}}ye.forEach(e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(ke.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(t){this.passedParams||(this.passedParams={}),this.passedParams[e]=t,this.swiper&&this.swiper.initialized&&this.updateSwiperOnPropChange(e,t)}}))});class Ae extends ze{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(Le(this.shadowRoot,"::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}::slotted(.swiper-slide-shadow){background:#00000026}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(270deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(90deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(0deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(180deg,#00000080,#0000)}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid #0000;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){backface-visibility:hidden;z-index:0}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){backface-visibility:hidden;z-index:0}::slotted(.swiper-zoom-container){align-items:center;display:flex;height:100%;justify-content:center;text-align:center;width:100%}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-height:100%;max-width:100%;object-fit:contain}"),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.swiperLoopMoveDOM||this.initialize()}}"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{ye.push(...e)}),"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",ke),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",Ae))}(); +//# sourceMappingURL=swiper-element-bundle.min.js.map \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper-element-bundle.min.js.map b/vendor/javascript/swiper/swiper-element-bundle.min.js.map new file mode 100644 index 0000000..13a4372 --- /dev/null +++ b/vendor/javascript/swiper/swiper-element-bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element-bundle.js.js","names":["isObject$2","obj","constructor","Object","extend$2","target","src","noExtend","keys","filter","key","indexOf","forEach","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","classesToTokens","classes","trim","split","c","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject$1","o","prototype","call","slice","isNode","node","HTMLElement","nodeType","extend$1","args","to","i","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","undefined","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","showWarning","text","console","warn","err","tag","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","getRotateFix","v","abs","browser","need3dFix","setInnerHTML","html","trustedTypes","innerHTML","createPolicy","createHTML","s","support","deviceCached","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","unshift","toggleSlideClasses$1","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","lazyPreloaderManaged","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","swiperSize","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slidesPerViewAutoSlideSize","roundLengths","floor","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","isFractionalSlidesPerView","shouldSnapToSlideEdge","snapToSlideEdge","lastAllowedSnapIndex","minVisibleSlides","accumulatedSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","find","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","bothDirections","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","isFreeMode","freeMode","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","getSlideIndexWhenGrid","slideSelector","isGrid","getSlideIndex","loopCreate","loopAddBlankSlides","slideBlankClass","recalcSlides","clearBlankSlides","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","append","byMousewheel","loopedSlides","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isInitialOverflow","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","isChild","slot","elementsQueue","elementToCheck","elementIsChildOfSlot","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","_loopSwapReset","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpointContainer","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","createElementIfNotDefined","checkProps","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","arrowSvg","classesToSelector","appendSlide","appendElement","tempDOM","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","force","beforeInit","forceActiveIndex","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesPerViewNumeric","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","disableOnInteraction","stop","releaseScroll","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","addIcons","tempEl","appendChild","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","targetIsButton","pagination","clickable","isHidden","toggle","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","moveDirection","total","firstIndex","midIndex","classesToRemove","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","zoom","limitToOriginalSize","maxRatio","panOnMouseMove","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","isPanningWithMouse","mousePanStart","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","naturalWidth","imageMaxRatio","eventWithinSlide","eventWithinZoomContainer","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","isMousePan","onMouseMove","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","DOMMatrix","f","newX","newY","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","prevScale","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","defineProperty","get","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","containerRole","itemRoleDescriptionMessage","slideRole","scrollOnFocus","wrapperLiveRegion","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","onVisibilityChange","handleFocus","isActive","sourceCapabilities","firesTouchEvents","repeat","round","random","getRandomNumber","live","addElLive","updateNavigation","updatePagination","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","getTotalDelay","totalDelay","currentSlideDelay","getSlideDelay","run","delayForce","proceed","start","pause","reset","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","isVirtualEnabled","thumbsSwiper","onThumbClick","thumbsParams","SwiperClass","thumbsSwiperParams","autoScroll","thumbsToActivate","thumbActiveClass","slideSpeed","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","r","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateFix","rotateY","rotateX","zIndex","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","paramsList","isObject","extend","attrToProp","attrName","l","formatValue","JSON","parse","modulesParamsList","getParams","propName","propValue","localParamsList","allowedParams","paramName","attrsList","name","attr","moduleParam","mParam","startsWith","parentObjName","subObjName","SwiperCSS","ClassToExtend","addStyle","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","rel","SwiperContainer","super","attachShadow","mode","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","rendered","slotEl","localStyles","linkEl","needsNavigation","needsPagination","needsScrollbar","initialize","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","newValue","updateSwiper","attributeChangedCallback","prevValue","observedAttributes","param","configurable","SwiperSlide","lazy","lazyDiv","SwiperElementRegisterParams","customElements","define"],"sources":["0"],"mappings":";;;;;;;;;;;;CAYA,WACE,aAcA,SAASA,EAAWC,GAClB,OAAe,OAARA,GAA+B,iBAARA,GAAoB,gBAAiBA,GAAOA,EAAIC,cAAgBC,MAChG,CACA,SAASC,EAASC,EAAS,CAAC,EAAGC,EAAM,CAAC,GACpC,MAAMC,EAAW,CAAC,YAAa,cAAe,aAC9CJ,OAAOK,KAAKF,GAAKG,OAAOC,GAAOH,EAASI,QAAQD,GAAO,GAAGE,QAAQF,SACrC,IAAhBL,EAAOK,GAAsBL,EAAOK,GAAOJ,EAAII,GAAcV,EAAWM,EAAII,KAASV,EAAWK,EAAOK,KAASP,OAAOK,KAAKF,EAAII,IAAMG,OAAS,GACxJT,EAASC,EAAOK,GAAMJ,EAAII,KAGhC,CACA,MAAMI,EAAc,CAClBC,KAAM,CAAC,EACP,gBAAAC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBC,cAAe,CACb,IAAAC,GAAQ,EACRC,SAAU,IAEZC,cAAa,IACJ,KAETC,iBAAgB,IACP,GAETC,eAAc,IACL,KAETC,YAAW,KACF,CACL,SAAAC,GAAa,IAGjBC,cAAa,KACJ,CACLC,SAAU,GACVC,WAAY,GACZC,MAAO,CAAC,EACR,YAAAC,GAAgB,EAChBC,qBAAoB,IACX,KAIbC,gBAAe,KACN,CAAC,GAEVC,WAAU,IACD,KAETC,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGZ,SAASC,IACP,MAAMC,EAA0B,oBAAbC,SAA2BA,SAAW,CAAC,EAE1D,OADAzC,EAASwC,EAAK9B,GACP8B,CACT,CACA,MAAME,EAAY,CAChBD,SAAU/B,EACViC,UAAW,CACTC,UAAW,IAEbd,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEVO,QAAS,CACP,YAAAC,GAAgB,EAChB,SAAAC,GAAa,EACb,EAAAC,GAAM,EACN,IAAAC,GAAQ,GAEVC,YAAa,WACX,OAAOC,IACT,EACA,gBAAAvC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBuC,iBAAgB,KACP,CACLC,iBAAgB,IACP,KAIb,KAAAC,GAAS,EACT,IAAAC,GAAQ,EACRC,OAAQ,CAAC,EACT,UAAAC,GAAc,EACd,YAAAC,GAAgB,EAChBC,WAAU,KACD,CAAC,GAEVC,sBAAsBC,GACM,oBAAfJ,YACTI,IACO,MAEFJ,WAAWI,EAAU,GAE9B,oBAAAC,CAAqBC,GACO,oBAAfN,YAGXC,aAAaK,EACf,GAEF,SAASC,IACP,MAAMC,EAAwB,oBAAXC,OAAyBA,OAAS,CAAC,EAEtD,OADAlE,EAASiE,EAAKvB,GACPuB,CACT,CAEA,SAASE,EAAgBC,EAAU,IACjC,OAAOA,EAAQC,OAAOC,MAAM,KAAKjE,OAAOkE,KAAOA,EAAEF,OACnD,CAiBA,SAASG,EAASX,EAAUY,EAAQ,GAClC,OAAOhB,WAAWI,EAAUY,EAC9B,CACA,SAASC,IACP,OAAOnB,KAAKmB,KACd,CAeA,SAASC,EAAaC,EAAIC,EAAO,KAC/B,MAAMX,EAASF,IACf,IAAIc,EACAC,EACAC,EACJ,MAAMC,EAnBR,SAA4BL,GAC1B,MAAMV,EAASF,IACf,IAAIvC,EAUJ,OATIyC,EAAOd,mBACT3B,EAAQyC,EAAOd,iBAAiBwB,EAAI,QAEjCnD,GAASmD,EAAGM,eACfzD,EAAQmD,EAAGM,cAERzD,IACHA,EAAQmD,EAAGnD,OAENA,CACT,CAMmB0D,CAAmBP,GA6BpC,OA5BIV,EAAOkB,iBACTL,EAAeE,EAASI,WAAaJ,EAASK,gBAC1CP,EAAaT,MAAM,KAAK7D,OAAS,IACnCsE,EAAeA,EAAaT,MAAM,MAAMiB,IAAIC,GAAKA,EAAEC,QAAQ,IAAK,MAAMC,KAAK,OAI7EV,EAAkB,IAAId,EAAOkB,gBAAiC,SAAjBL,EAA0B,GAAKA,KAE5EC,EAAkBC,EAASU,cAAgBV,EAASW,YAAcX,EAASY,aAAeZ,EAASa,aAAeb,EAASI,WAAaJ,EAAS5B,iBAAiB,aAAaoC,QAAQ,aAAc,sBACrMX,EAASE,EAAgBe,WAAWzB,MAAM,MAE/B,MAATO,IAE0BE,EAAxBb,EAAOkB,gBAAgCJ,EAAgBgB,IAEhC,KAAlBlB,EAAOrE,OAA8BwF,WAAWnB,EAAO,KAE5CmB,WAAWnB,EAAO,KAE3B,MAATD,IAE0BE,EAAxBb,EAAOkB,gBAAgCJ,EAAgBkB,IAEhC,KAAlBpB,EAAOrE,OAA8BwF,WAAWnB,EAAO,KAE5CmB,WAAWnB,EAAO,KAEjCC,GAAgB,CACzB,CACA,SAASoB,EAAWC,GAClB,MAAoB,iBAANA,GAAwB,OAANA,GAAcA,EAAEtG,aAAkE,WAAnDC,OAAOsG,UAAUN,SAASO,KAAKF,GAAGG,MAAM,GAAI,EAC7G,CACA,SAASC,EAAOC,GAEd,MAAsB,oBAAXvC,aAAwD,IAAvBA,OAAOwC,YAC1CD,aAAgBC,YAElBD,IAA2B,IAAlBA,EAAKE,UAAoC,KAAlBF,EAAKE,SAC9C,CACA,SAASC,KAAYC,GACnB,MAAMC,EAAK/G,OAAO8G,EAAK,IACvB,IAAK,IAAIE,EAAI,EAAGA,EAAIF,EAAKpG,OAAQsG,GAAK,EAAG,CACvC,MAAMC,EAAaH,EAAKE,GACxB,GAAIC,UAAoDR,EAAOQ,GAAa,CAC1E,MAAMC,EAAYlH,OAAOK,KAAKL,OAAOiH,IAAa3G,OAAOC,GAAe,cAARA,GAA+B,gBAARA,GAAiC,cAARA,GAChH,IAAK,IAAI4G,EAAY,EAAGC,EAAMF,EAAUxG,OAAQyG,EAAYC,EAAKD,GAAa,EAAG,CAC/E,MAAME,EAAUH,EAAUC,GACpBG,EAAOtH,OAAOuH,yBAAyBN,EAAYI,QAC5CG,IAATF,GAAsBA,EAAKG,aACzBrB,EAAWW,EAAGM,KAAajB,EAAWa,EAAWI,IAC/CJ,EAAWI,GAASK,WACtBX,EAAGM,GAAWJ,EAAWI,GAEzBR,EAASE,EAAGM,GAAUJ,EAAWI,KAEzBjB,EAAWW,EAAGM,KAAajB,EAAWa,EAAWI,KAC3DN,EAAGM,GAAW,CAAC,EACXJ,EAAWI,GAASK,WACtBX,EAAGM,GAAWJ,EAAWI,GAEzBR,EAASE,EAAGM,GAAUJ,EAAWI,KAGnCN,EAAGM,GAAWJ,EAAWI,GAG/B,CACF,CACF,CACA,OAAON,CACT,CACA,SAASY,EAAe9C,EAAI+C,EAASC,GACnChD,EAAGnD,MAAMoG,YAAYF,EAASC,EAChC,CACA,SAASE,GAAqBC,OAC5BA,EAAMC,eACNA,EAAcC,KACdA,IAEA,MAAM/D,EAASF,IACTkE,GAAiBH,EAAOI,UAC9B,IACIC,EADAC,EAAY,KAEhB,MAAMC,EAAWP,EAAOQ,OAAOC,MAC/BT,EAAOU,UAAUhH,MAAMiH,eAAiB,OACxCxE,EAAOJ,qBAAqBiE,EAAOY,gBACnC,MAAMC,EAAMZ,EAAiBE,EAAgB,OAAS,OAChDW,EAAe,CAACC,EAAS7I,IACd,SAAR2I,GAAkBE,GAAW7I,GAAkB,SAAR2I,GAAkBE,GAAW7I,EAEvE8I,EAAU,KACdX,GAAO,IAAI7E,MAAOyF,UACA,OAAdX,IACFA,EAAYD,GAEd,MAAMa,EAAWC,KAAKC,IAAID,KAAKE,KAAKhB,EAAOC,GAAaC,EAAU,GAAI,GAChEe,EAAe,GAAMH,KAAKI,IAAIL,EAAWC,KAAKK,IAAM,EAC1D,IAAIC,EAAkBtB,EAAgBmB,GAAgBrB,EAAiBE,GAOvE,GANIW,EAAaW,EAAiBxB,KAChCwB,EAAkBxB,GAEpBD,EAAOU,UAAUgB,SAAS,CACxBxB,CAACA,GAAOuB,IAENX,EAAaW,EAAiBxB,GAUhC,OATAD,EAAOU,UAAUhH,MAAMiI,SAAW,SAClC3B,EAAOU,UAAUhH,MAAMiH,eAAiB,GACxCjF,WAAW,KACTsE,EAAOU,UAAUhH,MAAMiI,SAAW,GAClC3B,EAAOU,UAAUgB,SAAS,CACxBxB,CAACA,GAAOuB,WAGZtF,EAAOJ,qBAAqBiE,EAAOY,gBAGrCZ,EAAOY,eAAiBzE,EAAON,sBAAsBmF,IAEvDA,GACF,CACA,SAASY,EAAoBC,GAC3B,OAAOA,EAAQ3I,cAAc,4BAA8B2I,EAAQC,YAAcD,EAAQC,WAAW5I,cAAc,4BAA8B2I,CAClJ,CACA,SAASE,EAAgBC,EAASC,EAAW,IAC3C,MAAM9F,EAASF,IACTzC,EAAW,IAAIwI,EAAQxI,UAI7B,OAHI2C,EAAO+F,iBAAmBF,aAAmBE,iBAC/C1I,EAAS2I,QAAQH,EAAQI,oBAEtBH,EAGEzI,EAASlB,OAAOuE,GAAMA,EAAGwF,QAAQJ,IAF/BzI,CAGX,CAwBA,SAAS8I,EAAYC,GACnB,IAEE,YADAC,QAAQC,KAAKF,EAEf,CAAE,MAAOG,GAET,CACF,CACA,SAASnJ,EAAcoJ,EAAKtG,EAAU,IACpC,MAAMQ,EAAKnC,SAASnB,cAAcoJ,GAElC,OADA9F,EAAG+F,UAAUC,OAAQC,MAAMC,QAAQ1G,GAAWA,EAAUD,EAAgBC,IACjEQ,CACT,CACA,SAASmG,EAAcnG,GACrB,MAAMV,EAASF,IACTvB,EAAWF,IACXyI,EAAMpG,EAAGqG,wBACTtK,EAAO8B,EAAS9B,KAChBuK,EAAYtG,EAAGsG,WAAavK,EAAKuK,WAAa,EAC9CC,EAAavG,EAAGuG,YAAcxK,EAAKwK,YAAc,EACjDC,EAAYxG,IAAOV,EAASA,EAAOmH,QAAUzG,EAAGwG,UAChDE,EAAa1G,IAAOV,EAASA,EAAOqH,QAAU3G,EAAG0G,WACvD,MAAO,CACLE,IAAKR,EAAIQ,IAAMJ,EAAYF,EAC3BO,KAAMT,EAAIS,KAAOH,EAAaH,EAElC,CAuBA,SAASO,EAAa9G,EAAI+G,GAExB,OADe3H,IACDZ,iBAAiBwB,EAAI,MAAMvB,iBAAiBsI,EAC5D,CACA,SAASC,EAAahH,GACpB,IACImC,EADA8E,EAAQjH,EAEZ,GAAIiH,EAAO,CAGT,IAFA9E,EAAI,EAEuC,QAAnC8E,EAAQA,EAAMC,kBACG,IAAnBD,EAAMlF,WAAgBI,GAAK,GAEjC,OAAOA,CACT,CAEF,CACA,SAASgF,EAAenH,EAAIoF,GAC1B,MAAMgC,EAAU,GAChB,IAAIC,EAASrH,EAAGsH,cAChB,KAAOD,GACDjC,EACEiC,EAAO7B,QAAQJ,IAAWgC,EAAQ9B,KAAK+B,GAE3CD,EAAQ9B,KAAK+B,GAEfA,EAASA,EAAOC,cAElB,OAAOF,CACT,CACA,SAASG,EAAqBvH,EAAIf,GAM5BA,GACFe,EAAGhE,iBAAiB,gBANtB,SAASwL,EAAaC,GAChBA,EAAEpM,SAAW2E,IACjBf,EAASyC,KAAK1B,EAAIyH,GAClBzH,EAAG/D,oBAAoB,gBAAiBuL,GAC1C,EAIF,CACA,SAASE,EAAiB1H,EAAI2H,EAAMC,GAClC,MAAMtI,EAASF,IACf,OAAIwI,EACK5H,EAAY,UAAT2H,EAAmB,cAAgB,gBAAkBtG,WAAW/B,EAAOd,iBAAiBwB,EAAI,MAAMvB,iBAA0B,UAATkJ,EAAmB,eAAiB,eAAiBtG,WAAW/B,EAAOd,iBAAiBwB,EAAI,MAAMvB,iBAA0B,UAATkJ,EAAmB,cAAgB,kBAE9Q3H,EAAG6H,WACZ,CACA,SAASC,EAAkB9H,GACzB,OAAQiG,MAAMC,QAAQlG,GAAMA,EAAK,CAACA,IAAKvE,OAAOgM,KAAOA,EACvD,CACA,SAASM,EAAa5E,GACpB,OAAO6E,GACD1D,KAAK2D,IAAID,GAAK,GAAK7E,EAAO+E,SAAW/E,EAAO+E,QAAQC,WAAa7D,KAAK2D,IAAID,GAAK,IAAO,EACjFA,EAAI,KAENA,CAEX,CACA,SAASI,EAAapI,EAAIqI,EAAO,IACH,oBAAjBC,aACTtI,EAAGuI,UAAYD,aAAaE,aAAa,OAAQ,CAC/CC,WAAYC,GAAKA,IAChBD,WAAWJ,GAEdrI,EAAGuI,UAAYF,CAEnB,CAEA,IAAIM,EAgBAC,EAiDAV,EAxDJ,SAASW,IAIP,OAHKF,IACHA,EAVJ,WACE,MAAMrJ,EAASF,IACTvB,EAAWF,IACjB,MAAO,CACLmL,aAAcjL,EAASkL,iBAAmBlL,EAASkL,gBAAgBlM,OAAS,mBAAoBgB,EAASkL,gBAAgBlM,MACzHmM,SAAU,iBAAkB1J,GAAUA,EAAO2J,eAAiBpL,aAAoByB,EAAO2J,eAE7F,CAGcC,IAELP,CACT,CA4CA,SAASQ,EAAUC,EAAY,CAAC,GAI9B,OAHKR,IACHA,EA3CJ,UAAoB5K,UAClBA,GACE,CAAC,GACH,MAAM2K,EAAUE,IACVvJ,EAASF,IACTiK,EAAW/J,EAAOvB,UAAUsL,SAC5BC,EAAKtL,GAAasB,EAAOvB,UAAUC,UACnCuL,EAAS,CACbC,KAAK,EACLC,SAAS,GAELC,EAAcpK,EAAOV,OAAO+K,MAC5BC,EAAetK,EAAOV,OAAOiL,OAC7BJ,EAAUH,EAAGQ,MAAM,+BACzB,IAAIC,EAAOT,EAAGQ,MAAM,8BACpB,MAAME,EAAOV,EAAGQ,MAAM,2BAChBG,GAAUF,GAAQT,EAAGQ,MAAM,8BAC3BI,EAAuB,UAAbb,EAChB,IAAIc,EAAqB,aAAbd,EAqBZ,OAjBKU,GAAQI,GAASxB,EAAQK,OADV,CAAC,YAAa,YAAa,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YACxGrN,QAAQ,GAAG+N,KAAeE,MAAmB,IAC9FG,EAAOT,EAAGQ,MAAM,uBACXC,IAAMA,EAAO,CAAC,EAAG,EAAG,WACzBI,GAAQ,GAINV,IAAYS,IACdX,EAAOa,GAAK,UACZb,EAAOE,SAAU,IAEfM,GAAQE,GAAUD,KACpBT,EAAOa,GAAK,MACZb,EAAOC,KAAM,GAIRD,CACT,CAGmBc,CAAWjB,IAErBR,CACT,CA4BA,SAAS0B,IAIP,OAHKpC,IACHA,EA3BJ,WACE,MAAM5I,EAASF,IACTmK,EAASJ,IACf,IAAIoB,GAAqB,EACzB,SAASC,IACP,MAAMlB,EAAKhK,EAAOvB,UAAUC,UAAUyM,cACtC,OAAOnB,EAAG3N,QAAQ,WAAa,GAAK2N,EAAG3N,QAAQ,UAAY,GAAK2N,EAAG3N,QAAQ,WAAa,CAC1F,CACA,GAAI6O,IAAY,CACd,MAAMlB,EAAKoB,OAAOpL,EAAOvB,UAAUC,WACnC,GAAIsL,EAAGqB,SAAS,YAAa,CAC3B,MAAOC,EAAOC,GAASvB,EAAG5J,MAAM,YAAY,GAAGA,MAAM,KAAK,GAAGA,MAAM,KAAKiB,IAAImK,GAAOC,OAAOD,IAC1FP,EAAqBK,EAAQ,IAAgB,KAAVA,GAAgBC,EAAQ,CAC7D,CACF,CACA,MAAMG,EAAY,+CAA+CC,KAAK3L,EAAOvB,UAAUC,WACjFkN,EAAkBV,IAExB,MAAO,CACLA,SAAUD,GAAsBW,EAChCX,qBACApC,UAJgB+C,GAAmBF,GAAazB,EAAOC,IAKvDwB,YAEJ,CAGcG,IAELjD,CACT,CA2IA,IAAIkD,EAAgB,CAClB,EAAAC,CAAGC,EAAQC,EAASC,GAClB,MAAMC,EAAOlN,KACb,IAAKkN,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,GAAuB,mBAAZF,EAAwB,OAAOE,EAC1C,MAAMG,EAASJ,EAAW,UAAY,OAKtC,OAJAF,EAAO5L,MAAM,KAAK9D,QAAQiQ,IACnBJ,EAAKC,gBAAgBG,KAAQJ,EAAKC,gBAAgBG,GAAS,IAChEJ,EAAKC,gBAAgBG,GAAOD,GAAQL,KAE/BE,CACT,EACA,IAAAK,CAAKR,EAAQC,EAASC,GACpB,MAAMC,EAAOlN,KACb,IAAKkN,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,GAAuB,mBAAZF,EAAwB,OAAOE,EAC1C,SAASM,KAAe9J,GACtBwJ,EAAKO,IAAIV,EAAQS,GACbA,EAAYE,uBACPF,EAAYE,eAErBV,EAAQW,MAAMT,EAAMxJ,EACtB,CAEA,OADA8J,EAAYE,eAAiBV,EACtBE,EAAKJ,GAAGC,EAAQS,EAAaP,EACtC,EACA,KAAAW,CAAMZ,EAASC,GACb,MAAMC,EAAOlN,KACb,IAAKkN,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,GAAuB,mBAAZF,EAAwB,OAAOE,EAC1C,MAAMG,EAASJ,EAAW,UAAY,OAItC,OAHIC,EAAKW,mBAAmBzQ,QAAQ4P,GAAW,GAC7CE,EAAKW,mBAAmBR,GAAQL,GAE3BE,CACT,EACA,MAAAY,CAAOd,GACL,MAAME,EAAOlN,KACb,IAAKkN,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,IAAKA,EAAKW,mBAAoB,OAAOX,EACrC,MAAMa,EAAQb,EAAKW,mBAAmBzQ,QAAQ4P,GAI9C,OAHIe,GAAS,GACXb,EAAKW,mBAAmBG,OAAOD,EAAO,GAEjCb,CACT,EACA,GAAAO,CAAIV,EAAQC,GACV,MAAME,EAAOlN,KACb,OAAKkN,EAAKC,iBAAmBD,EAAKE,UAAkBF,EAC/CA,EAAKC,iBACVJ,EAAO5L,MAAM,KAAK9D,QAAQiQ,SACD,IAAZN,EACTE,EAAKC,gBAAgBG,GAAS,GACrBJ,EAAKC,gBAAgBG,IAC9BJ,EAAKC,gBAAgBG,GAAOjQ,QAAQ,CAAC4Q,EAAcF,MAC7CE,IAAiBjB,GAAWiB,EAAaP,gBAAkBO,EAAaP,iBAAmBV,IAC7FE,EAAKC,gBAAgBG,GAAOU,OAAOD,EAAO,OAK3Cb,GAZ2BA,CAapC,EACA,IAAAgB,IAAQxK,GACN,MAAMwJ,EAAOlN,KACb,IAAKkN,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,IAAKA,EAAKC,gBAAiB,OAAOD,EAClC,IAAIH,EACAoB,EACAC,EACmB,iBAAZ1K,EAAK,IAAmBgE,MAAMC,QAAQjE,EAAK,KACpDqJ,EAASrJ,EAAK,GACdyK,EAAOzK,EAAKN,MAAM,EAAGM,EAAKpG,QAC1B8Q,EAAUlB,IAEVH,EAASrJ,EAAK,GAAGqJ,OACjBoB,EAAOzK,EAAK,GAAGyK,KACfC,EAAU1K,EAAK,GAAG0K,SAAWlB,GAE/BiB,EAAKE,QAAQD,GAcb,OAboB1G,MAAMC,QAAQoF,GAAUA,EAASA,EAAO5L,MAAM,MACtD9D,QAAQiQ,IACdJ,EAAKW,oBAAsBX,EAAKW,mBAAmBvQ,QACrD4P,EAAKW,mBAAmBxQ,QAAQ4Q,IAC9BA,EAAaN,MAAMS,EAAS,CAACd,KAAUa,MAGvCjB,EAAKC,iBAAmBD,EAAKC,gBAAgBG,IAC/CJ,EAAKC,gBAAgBG,GAAOjQ,QAAQ4Q,IAClCA,EAAaN,MAAMS,EAASD,OAI3BjB,CACT,GA8ZF,MAAMoB,EAAuB,CAAC7H,EAAS8H,EAAWC,KAC5CD,IAAc9H,EAAQe,UAAUiH,SAASD,GAC3C/H,EAAQe,UAAUC,IAAI+G,IACZD,GAAa9H,EAAQe,UAAUiH,SAASD,IAClD/H,EAAQe,UAAUkH,OAAOF,IA6G7B,MAAMG,EAAqB,CAAClI,EAAS8H,EAAWC,KAC1CD,IAAc9H,EAAQe,UAAUiH,SAASD,GAC3C/H,EAAQe,UAAUC,IAAI+G,IACZD,GAAa9H,EAAQe,UAAUiH,SAASD,IAClD/H,EAAQe,UAAUkH,OAAOF,IA4D7B,MAAMI,EAAuB,CAAChK,EAAQiK,KACpC,IAAKjK,GAAUA,EAAOwI,YAAcxI,EAAOQ,OAAQ,OACnD,MACMqB,EAAUoI,EAAQC,QADIlK,EAAOmK,UAAY,eAAiB,IAAInK,EAAOQ,OAAO4J,cAElF,GAAIvI,EAAS,CACX,IAAIwI,EAASxI,EAAQ3I,cAAc,IAAI8G,EAAOQ,OAAO8J,uBAChDD,GAAUrK,EAAOmK,YAChBtI,EAAQC,WACVuI,EAASxI,EAAQC,WAAW5I,cAAc,IAAI8G,EAAOQ,OAAO8J,sBAG5DzO,sBAAsB,KAChBgG,EAAQC,aACVuI,EAASxI,EAAQC,WAAW5I,cAAc,IAAI8G,EAAOQ,OAAO8J,sBACxDD,IAAWA,EAAOE,sBAAsBF,EAAOP,aAMvDO,IAAWA,EAAOE,sBAAsBF,EAAOP,QACrD,GAEIU,EAAS,CAACxK,EAAQmJ,KACtB,IAAKnJ,EAAOyK,OAAOtB,GAAQ,OAC3B,MAAMc,EAAUjK,EAAOyK,OAAOtB,GAAOjQ,cAAc,oBAC/C+Q,GAASA,EAAQS,gBAAgB,YAEjCC,EAAU3K,IACd,IAAKA,GAAUA,EAAOwI,YAAcxI,EAAOQ,OAAQ,OACnD,IAAIoK,EAAS5K,EAAOQ,OAAOqK,oBAC3B,MAAMzL,EAAMY,EAAOyK,OAAO/R,OAC1B,IAAK0G,IAAQwL,GAAUA,EAAS,EAAG,OACnCA,EAASzJ,KAAKE,IAAIuJ,EAAQxL,GAC1B,MAAM0L,EAAgD,SAAhC9K,EAAOQ,OAAOsK,cAA2B9K,EAAO+K,uBAAyB5J,KAAK6J,KAAKhL,EAAOQ,OAAOsK,eACjHG,EAAcjL,EAAOiL,YAC3B,GAAIjL,EAAOQ,OAAO0K,MAAQlL,EAAOQ,OAAO0K,KAAKC,KAAO,EAAG,CACrD,MAAMC,EAAeH,EACfI,EAAiB,CAACD,EAAeR,GASvC,OARAS,EAAelJ,QAAQW,MAAMwI,KAAK,CAChC5S,OAAQkS,IACPpN,IAAI,CAAC+N,EAAGvM,IACFoM,EAAeN,EAAgB9L,SAExCgB,EAAOyK,OAAOhS,QAAQ,CAACoJ,EAAS7C,KAC1BqM,EAAe7D,SAAS3F,EAAQ2J,SAAShB,EAAOxK,EAAQhB,IAGhE,CACA,MAAMyM,EAAuBR,EAAcH,EAAgB,EAC3D,GAAI9K,EAAOQ,OAAOkL,QAAU1L,EAAOQ,OAAOmL,KACxC,IAAK,IAAI3M,EAAIiM,EAAcL,EAAQ5L,GAAKyM,EAAuBb,EAAQ5L,GAAK,EAAG,CAC7E,MAAM4M,GAAa5M,EAAII,EAAMA,GAAOA,GAChCwM,EAAYX,GAAeW,EAAYH,IAAsBjB,EAAOxK,EAAQ4L,EAClF,MAEA,IAAK,IAAI5M,EAAImC,KAAKC,IAAI6J,EAAcL,EAAQ,GAAI5L,GAAKmC,KAAKE,IAAIoK,EAAuBb,EAAQxL,EAAM,GAAIJ,GAAK,EACtGA,IAAMiM,IAAgBjM,EAAIyM,GAAwBzM,EAAIiM,IACxDT,EAAOxK,EAAQhB,IAgKvB,IAAI6M,EAAS,CACXC,WAvyBF,WACE,MAAM9L,EAAS5E,KACf,IAAIoL,EACAE,EACJ,MAAM7J,EAAKmD,EAAOnD,GAEhB2J,OADiC,IAAxBxG,EAAOQ,OAAOgG,OAAiD,OAAxBxG,EAAOQ,OAAOgG,MACtDxG,EAAOQ,OAAOgG,MAEd3J,EAAGkP,YAGXrF,OADkC,IAAzB1G,EAAOQ,OAAOkG,QAAmD,OAAzB1G,EAAOQ,OAAOkG,OACtD1G,EAAOQ,OAAOkG,OAEd7J,EAAGmP,aAEA,IAAVxF,GAAexG,EAAOiM,gBAA6B,IAAXvF,GAAgB1G,EAAOkM,eAKnE1F,EAAQA,EAAQ2F,SAASxI,EAAa9G,EAAI,iBAAmB,EAAG,IAAMsP,SAASxI,EAAa9G,EAAI,kBAAoB,EAAG,IACvH6J,EAASA,EAASyF,SAASxI,EAAa9G,EAAI,gBAAkB,EAAG,IAAMsP,SAASxI,EAAa9G,EAAI,mBAAqB,EAAG,IACrH+K,OAAOwE,MAAM5F,KAAQA,EAAQ,GAC7BoB,OAAOwE,MAAM1F,KAASA,EAAS,GACnC1O,OAAOqU,OAAOrM,EAAQ,CACpBwG,QACAE,SACAlC,KAAMxE,EAAOiM,eAAiBzF,EAAQE,IAE1C,EA2wBE4F,aAzwBF,WACE,MAAMtM,EAAS5E,KACf,SAASmR,EAA0B7N,EAAM8N,GACvC,OAAOtO,WAAWQ,EAAKpD,iBAAiB0E,EAAOyM,kBAAkBD,KAAW,EAC9E,CACA,MAAMhM,EAASR,EAAOQ,QAChBE,UACJA,EAASgM,SACTA,EACAC,aAAcC,EAAGC,SACjBA,GACE7M,EACE8M,EAAY9M,EAAO+M,SAAWvM,EAAOuM,QAAQC,QAC7CC,EAAuBH,EAAY9M,EAAO+M,QAAQtC,OAAO/R,OAASsH,EAAOyK,OAAO/R,OAChF+R,EAAS1I,EAAgB2K,EAAU,IAAI1M,EAAOQ,OAAO4J,4BACrD8C,EAAeJ,EAAY9M,EAAO+M,QAAQtC,OAAO/R,OAAS+R,EAAO/R,OACvE,IAAIyU,EAAW,GACf,MAAMC,EAAa,GACbC,EAAkB,GACxB,IAAIC,EAAe9M,EAAO+M,mBACE,mBAAjBD,IACTA,EAAe9M,EAAO+M,mBAAmBhP,KAAKyB,IAEhD,IAAIwN,EAAchN,EAAOiN,kBACE,mBAAhBD,IACTA,EAAchN,EAAOiN,kBAAkBlP,KAAKyB,IAE9C,MAAM0N,EAAyB1N,EAAOmN,SAASzU,OACzCiV,EAA2B3N,EAAOoN,WAAW1U,OAC7CkV,EAAa5N,EAAOwE,KAAO8I,EAAeE,EAChD,IAAIK,EAAerN,EAAOqN,aACtBC,GAAiBR,EACjBS,EAAgB,EAChB5E,EAAQ,EACZ,QAA0B,IAAfyE,EACT,OAE0B,iBAAjBC,GAA6BA,EAAarV,QAAQ,MAAQ,EACnEqV,EAAe3P,WAAW2P,EAAanQ,QAAQ,IAAK,KAAO,IAAMkQ,EAChC,iBAAjBC,IAChBA,EAAe3P,WAAW2P,IAE5B7N,EAAOgO,aAAeH,EAAeP,EAAeE,EAGpD/C,EAAOhS,QAAQoJ,IACT+K,EACF/K,EAAQnI,MAAMuU,WAAa,GAE3BpM,EAAQnI,MAAMwU,YAAc,GAE9BrM,EAAQnI,MAAMyU,aAAe,GAC7BtM,EAAQnI,MAAM0U,UAAY,KAIxB5N,EAAO6N,gBAAkB7N,EAAO8N,UAClC3O,EAAee,EAAW,kCAAmC,IAC7Df,EAAee,EAAW,iCAAkC,KAI1DF,EAAO8N,UACT3O,EAAee,EAAW,gCAAiC,GAAG4M,OAC9D3N,EAAee,EAAW,+BAAgC,GAAG8M,QAE/D,MAAMe,EAAc/N,EAAO0K,MAAQ1K,EAAO0K,KAAKC,KAAO,GAAKnL,EAAOkL,KAQlE,IAAIsD,EAPAD,EACFvO,EAAOkL,KAAKuD,WAAWhE,GACdzK,EAAOkL,MAChBlL,EAAOkL,KAAKwD,cAKd,MAAMC,EAAgD,SAAzBnO,EAAOsK,eAA4BtK,EAAOoO,aAAe5W,OAAOK,KAAKmI,EAAOoO,aAAatW,OAAOC,QACnE,IAA1CiI,EAAOoO,YAAYrW,GAAKuS,eACrCpS,OAAS,EACZ,IAAK,IAAIsG,EAAI,EAAGA,EAAIkO,EAAclO,GAAK,EAAG,CACxCwP,EAAY,EACZ,MAAMK,EAAQpE,EAAOzL,GACrB,IAAI6P,IACEN,GACFvO,EAAOkL,KAAK4D,YAAY9P,EAAG6P,EAAOpE,GAEG,SAAnC9G,EAAakL,EAAO,YAJ1B,CAOA,GAAI/B,GAAsC,SAAzBtM,EAAOsK,cAClBtK,EAAOuM,QAAQgC,6BACjBP,EAAYhO,EAAOuM,QAAQgC,4BAEzBP,GAAaK,IACXrO,EAAOwO,eAAcR,EAAYrN,KAAK8N,MAAMT,IAChDK,EAAMnV,MAAMsG,EAAOyM,kBAAkB,UAAY,GAAG+B,YAEjD,GAA6B,SAAzBhO,EAAOsK,cAA0B,CACtC6D,IACFE,EAAMnV,MAAMsG,EAAOyM,kBAAkB,UAAY,IAEnD,MAAMyC,EAAc7T,iBAAiBwT,GAC/BM,EAAmBN,EAAMnV,MAAM4D,UAC/B8R,EAAyBP,EAAMnV,MAAM6D,gBAO3C,GANI4R,IACFN,EAAMnV,MAAM4D,UAAY,QAEtB8R,IACFP,EAAMnV,MAAM6D,gBAAkB,QAE5BiD,EAAOwO,aACTR,EAAYxO,EAAOiM,eAAiB1H,EAAiBsK,EAAO,SAAS,GAAQtK,EAAiBsK,EAAO,UAAU,OAC1G,CAEL,MAAMrI,EAAQ+F,EAA0B2C,EAAa,SAC/CG,EAAc9C,EAA0B2C,EAAa,gBACrDI,EAAe/C,EAA0B2C,EAAa,iBACtDjB,EAAa1B,EAA0B2C,EAAa,eACpDhB,EAAc3B,EAA0B2C,EAAa,gBACrDK,EAAYL,EAAY5T,iBAAiB,cAC/C,GAAIiU,GAA2B,eAAdA,EACff,EAAYhI,EAAQyH,EAAaC,MAC5B,CACL,MAAMnC,YACJA,EAAWrH,YACXA,GACEmK,EACJL,EAAYhI,EAAQ6I,EAAcC,EAAerB,EAAaC,GAAexJ,EAAcqH,EAC7F,CACF,CACIoD,IACFN,EAAMnV,MAAM4D,UAAY6R,GAEtBC,IACFP,EAAMnV,MAAM6D,gBAAkB6R,GAE5B5O,EAAOwO,eAAcR,EAAYrN,KAAK8N,MAAMT,GAClD,MACEA,GAAaZ,GAAcpN,EAAOsK,cAAgB,GAAK+C,GAAgBrN,EAAOsK,cAC1EtK,EAAOwO,eAAcR,EAAYrN,KAAK8N,MAAMT,IAC5CK,IACFA,EAAMnV,MAAMsG,EAAOyM,kBAAkB,UAAY,GAAG+B,OAGpDK,IACFA,EAAMW,gBAAkBhB,GAE1BnB,EAAgBlL,KAAKqM,GACjBhO,EAAO6N,gBACTP,EAAgBA,EAAgBU,EAAY,EAAIT,EAAgB,EAAIF,EAC9C,IAAlBE,GAA6B,IAAN/O,IAAS8O,EAAgBA,EAAgBF,EAAa,EAAIC,GAC3E,IAAN7O,IAAS8O,EAAgBA,EAAgBF,EAAa,EAAIC,GAC1D1M,KAAK2D,IAAIgJ,GAAiB,OAAUA,EAAgB,GACpDtN,EAAOwO,eAAclB,EAAgB3M,KAAK8N,MAAMnB,IAChD3E,EAAQ3I,EAAOiP,iBAAmB,GAAGtC,EAAShL,KAAK2L,GACvDV,EAAWjL,KAAK2L,KAEZtN,EAAOwO,eAAclB,EAAgB3M,KAAK8N,MAAMnB,KAC/C3E,EAAQhI,KAAKE,IAAIrB,EAAOQ,OAAOkP,mBAAoBvG,IAAUnJ,EAAOQ,OAAOiP,iBAAmB,GAAGtC,EAAShL,KAAK2L,GACpHV,EAAWjL,KAAK2L,GAChBA,EAAgBA,EAAgBU,EAAYX,GAE9C7N,EAAOgO,aAAeQ,EAAYX,EAClCE,EAAgBS,EAChBrF,GAAS,CA7ET,CA8EF,CAaA,GAZAnJ,EAAOgO,YAAc7M,KAAKC,IAAIpB,EAAOgO,YAAaJ,GAAcJ,EAC5DZ,GAAOC,IAA+B,UAAlBrM,EAAOmP,QAAwC,cAAlBnP,EAAOmP,UAC1DjP,EAAUhH,MAAM8M,MAAQ,GAAGxG,EAAOgO,YAAcH,OAE9CrN,EAAOoP,iBACTlP,EAAUhH,MAAMsG,EAAOyM,kBAAkB,UAAY,GAAGzM,EAAOgO,YAAcH,OAE3EU,GACFvO,EAAOkL,KAAK2E,kBAAkBrB,EAAWrB,IAItC3M,EAAO6N,eAAgB,CAE1B,MAAMyB,EAAqD,SAAzBtP,EAAOsK,eAA4BtK,EAAOsK,cAAgB,GAAM,EAC5FiF,EAAwBvP,EAAOwP,kBAAoBxP,EAAOmL,OAAkC,SAAzBnL,EAAOsK,eAA4BgF,GAI5G,IAAIG,EAAuB9C,EAASzU,OACpC,GAAIqX,EAAuB,CACzB,IAAIG,EACJ,GAA6B,SAAzB1P,EAAOsK,cAA0B,CAEnCoF,EAAmB,EACnB,IAAIC,EAAkB,EACtB,IAAK,IAAInR,EAAIqO,EAAgB3U,OAAS,EAAGsG,GAAK,IAC5CmR,GAAmB9C,EAAgBrO,IAAMA,EAAIqO,EAAgB3U,OAAS,EAAImV,EAAe,GACrFsC,GAAmBvC,GAFwB5O,GAAK,EAGlDkR,EAAmB7C,EAAgB3U,OAASsG,CAKlD,MACEkR,EAAmB/O,KAAK8N,MAAMzO,EAAOsK,eAEvCmF,EAAuB9O,KAAKC,IAAI8L,EAAegD,EAAkB,EACnE,CACA,MAAME,EAAgB,GACtB,IAAK,IAAIpR,EAAI,EAAGA,EAAImO,EAASzU,OAAQsG,GAAK,EAAG,CAC3C,IAAIqR,EAAiBlD,EAASnO,GAC1BwB,EAAOwO,eAAcqB,EAAiBlP,KAAK8N,MAAMoB,IACjDN,EAEE/Q,GAAKiR,GACPG,EAAcjO,KAAKkO,GAEZlD,EAASnO,IAAMgB,EAAOgO,YAAcJ,GAE7CwC,EAAcjO,KAAKkO,EAEvB,CACAlD,EAAWiD,EACPjP,KAAK8N,MAAMjP,EAAOgO,YAAcJ,GAAczM,KAAK8N,MAAM9B,EAASA,EAASzU,OAAS,IAAM,IAEvFqX,GACH5C,EAAShL,KAAKnC,EAAOgO,YAAcJ,GAGzC,CACA,GAAId,GAAatM,EAAOmL,KAAM,CAC5B,MAAMnH,EAAO6I,EAAgB,GAAKQ,EAClC,GAAIrN,EAAOiP,eAAiB,EAAG,CAC7B,MAAMa,EAASnP,KAAK6J,MAAMhL,EAAO+M,QAAQwD,aAAevQ,EAAO+M,QAAQyD,aAAehQ,EAAOiP,gBACvFgB,EAAYjM,EAAOhE,EAAOiP,eAChC,IAAK,IAAIzQ,EAAI,EAAGA,EAAIsR,EAAQtR,GAAK,EAC/BmO,EAAShL,KAAKgL,EAASA,EAASzU,OAAS,GAAK+X,EAElD,CACA,IAAK,IAAIzR,EAAI,EAAGA,EAAIgB,EAAO+M,QAAQwD,aAAevQ,EAAO+M,QAAQyD,YAAaxR,GAAK,EACnD,IAA1BwB,EAAOiP,gBACTtC,EAAShL,KAAKgL,EAASA,EAASzU,OAAS,GAAK8L,GAEhD4I,EAAWjL,KAAKiL,EAAWA,EAAW1U,OAAS,GAAK8L,GACpDxE,EAAOgO,aAAexJ,CAE1B,CAEA,GADwB,IAApB2I,EAASzU,SAAcyU,EAAW,CAAC,IAClB,IAAjBU,EAAoB,CACtB,MAAMtV,EAAMyH,EAAOiM,gBAAkBW,EAAM,aAAe5M,EAAOyM,kBAAkB,eACnFhC,EAAOnS,OAAO,CAACiT,EAAGmF,MACXlQ,EAAO8N,UAAW9N,EAAOmL,OAC1B+E,IAAejG,EAAO/R,OAAS,GAIlCD,QAAQoJ,IACTA,EAAQnI,MAAMnB,GAAO,GAAGsV,OAE5B,CACA,GAAIrN,EAAO6N,gBAAkB7N,EAAOmQ,qBAAsB,CACxD,IAAIC,EAAgB,EACpBvD,EAAgB5U,QAAQoY,IACtBD,GAAiBC,GAAkBhD,GAAgB,KAErD+C,GAAiB/C,EACjB,MAAMiD,EAAUF,EAAgBhD,EAAagD,EAAgBhD,EAAa,EAC1ET,EAAWA,EAAS3P,IAAIuT,GAClBA,GAAQ,GAAWzD,EACnByD,EAAOD,EAAgBA,EAAUtD,EAC9BuD,EAEX,CACA,GAAIvQ,EAAOwQ,yBAA0B,CACnC,IAAIJ,EAAgB,EAKpB,GAJAvD,EAAgB5U,QAAQoY,IACtBD,GAAiBC,GAAkBhD,GAAgB,KAErD+C,GAAiB/C,EACb+C,EAAgBhD,EAAY,CAC9B,MAAMqD,GAAmBrD,EAAagD,GAAiB,EACvDzD,EAAS1U,QAAQ,CAACsY,EAAMG,KACtB/D,EAAS+D,GAAaH,EAAOE,IAE/B7D,EAAW3U,QAAQ,CAACsY,EAAMG,KACxB9D,EAAW8D,GAAaH,EAAOE,GAEnC,CACF,CAOA,GANAjZ,OAAOqU,OAAOrM,EAAQ,CACpByK,SACA0C,WACAC,aACAC,oBAEE7M,EAAO6N,gBAAkB7N,EAAO8N,UAAY9N,EAAOmQ,qBAAsB,CAC3EhR,EAAee,EAAW,mCAAuCyM,EAAS,GAAb,MAC7DxN,EAAee,EAAW,iCAAqCV,EAAOwE,KAAO,EAAI6I,EAAgBA,EAAgB3U,OAAS,GAAK,EAAnE,MAC5D,MAAMyY,GAAiBnR,EAAOmN,SAAS,GACjCiE,GAAmBpR,EAAOoN,WAAW,GAC3CpN,EAAOmN,SAAWnN,EAAOmN,SAAS3P,IAAIqH,GAAKA,EAAIsM,GAC/CnR,EAAOoN,WAAapN,EAAOoN,WAAW5P,IAAIqH,GAAKA,EAAIuM,EACrD,CAeA,GAdIlE,IAAiBD,GACnBjN,EAAOsJ,KAAK,sBAEV6D,EAASzU,SAAWgV,IAClB1N,EAAOQ,OAAO6Q,eAAerR,EAAOsR,gBACxCtR,EAAOsJ,KAAK,yBAEV8D,EAAW1U,SAAWiV,GACxB3N,EAAOsJ,KAAK,0BAEV9I,EAAO+Q,qBACTvR,EAAOwR,qBAETxR,EAAOsJ,KAAK,mBACPwD,GAActM,EAAO8N,SAA8B,UAAlB9N,EAAOmP,QAAwC,SAAlBnP,EAAOmP,QAAoB,CAC5F,MAAM8B,EAAsB,GAAGjR,EAAOkR,wCAChCC,EAA6B3R,EAAOnD,GAAG+F,UAAUiH,SAAS4H,GAC5DvE,GAAgB1M,EAAOoR,wBACpBD,GAA4B3R,EAAOnD,GAAG+F,UAAUC,IAAI4O,GAChDE,GACT3R,EAAOnD,GAAG+F,UAAUkH,OAAO2H,EAE/B,CACF,EAwcEI,iBAtcF,SAA0BpR,GACxB,MAAMT,EAAS5E,KACT0W,EAAe,GACfhF,EAAY9M,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAC1D,IACIhO,EADA+S,EAAY,EAEK,iBAAVtR,EACTT,EAAOgS,cAAcvR,IACF,IAAVA,GACTT,EAAOgS,cAAchS,EAAOQ,OAAOC,OAErC,MAAMwR,EAAkB9I,GAClB2D,EACK9M,EAAOyK,OAAOzK,EAAOkS,oBAAoB/I,IAE3CnJ,EAAOyK,OAAOtB,GAGvB,GAAoC,SAAhCnJ,EAAOQ,OAAOsK,eAA4B9K,EAAOQ,OAAOsK,cAAgB,EAC1E,GAAI9K,EAAOQ,OAAO6N,gBACfrO,EAAOmS,eAAiB,IAAI1Z,QAAQoW,IACnCiD,EAAa3P,KAAK0M,UAGpB,IAAK7P,EAAI,EAAGA,EAAImC,KAAK6J,KAAKhL,EAAOQ,OAAOsK,eAAgB9L,GAAK,EAAG,CAC9D,MAAMmK,EAAQnJ,EAAOiL,YAAcjM,EACnC,GAAImK,EAAQnJ,EAAOyK,OAAO/R,SAAWoU,EAAW,MAChDgF,EAAa3P,KAAK8P,EAAgB9I,GACpC,MAGF2I,EAAa3P,KAAK8P,EAAgBjS,EAAOiL,cAI3C,IAAKjM,EAAI,EAAGA,EAAI8S,EAAapZ,OAAQsG,GAAK,EACxC,QAA+B,IAApB8S,EAAa9S,GAAoB,CAC1C,MAAM0H,EAASoL,EAAa9S,GAAGoT,aAC/BL,EAAYrL,EAASqL,EAAYrL,EAASqL,CAC5C,EAIEA,GAA2B,IAAdA,KAAiB/R,EAAOU,UAAUhH,MAAMgN,OAAS,GAAGqL,MACvE,EA2ZEP,mBAzZF,WACE,MAAMxR,EAAS5E,KACTqP,EAASzK,EAAOyK,OAEhB4H,EAAcrS,EAAOmK,UAAYnK,EAAOiM,eAAiBjM,EAAOU,UAAU4R,WAAatS,EAAOU,UAAU6R,UAAY,EAC1H,IAAK,IAAIvT,EAAI,EAAGA,EAAIyL,EAAO/R,OAAQsG,GAAK,EACtCyL,EAAOzL,GAAGwT,mBAAqBxS,EAAOiM,eAAiBxB,EAAOzL,GAAGsT,WAAa7H,EAAOzL,GAAGuT,WAAaF,EAAcrS,EAAOyS,uBAE9H,EAkZEC,qBAzYF,SAA8BtS,EAAYhF,MAAQA,KAAKgF,WAAa,GAClE,MAAMJ,EAAS5E,KACToF,EAASR,EAAOQ,QAChBiK,OACJA,EACAkC,aAAcC,EAAGO,SACjBA,GACEnN,EACJ,GAAsB,IAAlByK,EAAO/R,OAAc,YACkB,IAAhC+R,EAAO,GAAG+H,mBAAmCxS,EAAOwR,qBAC/D,IAAImB,GAAgBvS,EAChBwM,IAAK+F,EAAevS,GACxBJ,EAAO4S,qBAAuB,GAC9B5S,EAAOmS,cAAgB,GACvB,IAAItE,EAAerN,EAAOqN,aACE,iBAAjBA,GAA6BA,EAAarV,QAAQ,MAAQ,EACnEqV,EAAe3P,WAAW2P,EAAanQ,QAAQ,IAAK,KAAO,IAAMsC,EAAOwE,KACvC,iBAAjBqJ,IAChBA,EAAe3P,WAAW2P,IAE5B,IAAK,IAAI7O,EAAI,EAAGA,EAAIyL,EAAO/R,OAAQsG,GAAK,EAAG,CACzC,MAAM6P,EAAQpE,EAAOzL,GACrB,IAAI6T,EAAchE,EAAM2D,kBACpBhS,EAAO8N,SAAW9N,EAAO6N,iBAC3BwE,GAAepI,EAAO,GAAG+H,mBAE3B,MAAMM,GAAiBH,GAAgBnS,EAAO6N,eAAiBrO,EAAO+S,eAAiB,GAAKF,IAAgBhE,EAAMW,gBAAkB3B,GAC9HmF,GAAyBL,EAAexF,EAAS,IAAM3M,EAAO6N,eAAiBrO,EAAO+S,eAAiB,GAAKF,IAAgBhE,EAAMW,gBAAkB3B,GACpJoF,IAAgBN,EAAeE,GAC/BK,EAAaD,EAAcjT,EAAOqN,gBAAgBrO,GAClDmU,EAAiBF,GAAe,GAAKA,GAAejT,EAAOwE,KAAOxE,EAAOqN,gBAAgBrO,GACzFoU,EAAYH,GAAe,GAAKA,EAAcjT,EAAOwE,KAAO,GAAK0O,EAAa,GAAKA,GAAclT,EAAOwE,MAAQyO,GAAe,GAAKC,GAAclT,EAAOwE,KAC3J4O,IACFpT,EAAOmS,cAAchQ,KAAK0M,GAC1B7O,EAAO4S,qBAAqBzQ,KAAKnD,IAEnC0K,EAAqBmF,EAAOuE,EAAW5S,EAAO6S,mBAC9C3J,EAAqBmF,EAAOsE,EAAgB3S,EAAO8S,wBACnDzE,EAAM3N,SAAW0L,GAAOkG,EAAgBA,EACxCjE,EAAM0E,iBAAmB3G,GAAOoG,EAAwBA,CAC1D,CACF,EAiWEQ,eA/VF,SAAwBpT,GACtB,MAAMJ,EAAS5E,KACf,QAAyB,IAAdgF,EAA2B,CACpC,MAAMqT,EAAazT,EAAO2M,cAAgB,EAAI,EAE9CvM,EAAYJ,GAAUA,EAAOI,WAAaJ,EAAOI,UAAYqT,GAAc,CAC7E,CACA,MAAMjT,EAASR,EAAOQ,OAChBkT,EAAiB1T,EAAO2T,eAAiB3T,EAAO+S,eACtD,IAAI7R,SACFA,EAAQ0S,YACRA,EAAWC,MACXA,EAAKC,aACLA,GACE9T,EACJ,MAAM+T,EAAeH,EACfI,EAASH,EACf,GAAuB,IAAnBH,EACFxS,EAAW,EACX0S,GAAc,EACdC,GAAQ,MACH,CACL3S,GAAYd,EAAYJ,EAAO+S,gBAAkBW,EACjD,MAAMO,EAAqB9S,KAAK2D,IAAI1E,EAAYJ,EAAO+S,gBAAkB,EACnEmB,EAAe/S,KAAK2D,IAAI1E,EAAYJ,EAAO2T,gBAAkB,EACnEC,EAAcK,GAAsB/S,GAAY,EAChD2S,EAAQK,GAAgBhT,GAAY,EAChC+S,IAAoB/S,EAAW,GAC/BgT,IAAchT,EAAW,EAC/B,CACA,GAAIV,EAAOmL,KAAM,CACf,MAAMwI,EAAkBnU,EAAOkS,oBAAoB,GAC7CkC,EAAiBpU,EAAOkS,oBAAoBlS,EAAOyK,OAAO/R,OAAS,GACnE2b,EAAsBrU,EAAOoN,WAAW+G,GACxCG,EAAqBtU,EAAOoN,WAAWgH,GACvCG,EAAevU,EAAOoN,WAAWpN,EAAOoN,WAAW1U,OAAS,GAC5D8b,EAAerT,KAAK2D,IAAI1E,GAE5B0T,EADEU,GAAgBH,GACFG,EAAeH,GAAuBE,GAEtCC,EAAeD,EAAeD,GAAsBC,EAElET,EAAe,IAAGA,GAAgB,EACxC,CACA9b,OAAOqU,OAAOrM,EAAQ,CACpBkB,WACA4S,eACAF,cACAC,WAEErT,EAAO+Q,qBAAuB/Q,EAAO6N,gBAAkB7N,EAAOiU,aAAYzU,EAAO0S,qBAAqBtS,GACtGwT,IAAgBG,GAClB/T,EAAOsJ,KAAK,yBAEVuK,IAAUG,GACZhU,EAAOsJ,KAAK,oBAEVyK,IAAiBH,GAAeI,IAAWH,IAC7C7T,EAAOsJ,KAAK,YAEdtJ,EAAOsJ,KAAK,WAAYpI,EAC1B,EAmSEwT,oBA1RF,WACE,MAAM1U,EAAS5E,MACTqP,OACJA,EAAMjK,OACNA,EAAMkM,SACNA,EAAQzB,YACRA,GACEjL,EACE8M,EAAY9M,EAAO+M,SAAWvM,EAAOuM,QAAQC,QAC7CuB,EAAcvO,EAAOkL,MAAQ1K,EAAO0K,MAAQ1K,EAAO0K,KAAKC,KAAO,EAC/DwJ,EAAmB1S,GAChBF,EAAgB2K,EAAU,IAAIlM,EAAO4J,aAAanI,kBAAyBA,KAAY,GAEhG,IAAI2S,EACAC,EACAC,EACJ,GAAIhI,EACF,GAAItM,EAAOmL,KAAM,CACf,IAAI+E,EAAazF,EAAcjL,EAAO+M,QAAQwD,aAC1CG,EAAa,IAAGA,EAAa1Q,EAAO+M,QAAQtC,OAAO/R,OAASgY,GAC5DA,GAAc1Q,EAAO+M,QAAQtC,OAAO/R,SAAQgY,GAAc1Q,EAAO+M,QAAQtC,OAAO/R,QACpFkc,EAAcD,EAAiB,6BAA6BjE,MAC9D,MACEkE,EAAcD,EAAiB,6BAA6B1J,YAG1DsD,GACFqG,EAAcnK,EAAOsK,KAAKlT,GAAWA,EAAQ2J,SAAWP,GACxD6J,EAAYrK,EAAOsK,KAAKlT,GAAWA,EAAQ2J,SAAWP,EAAc,GACpE4J,EAAYpK,EAAOsK,KAAKlT,GAAWA,EAAQ2J,SAAWP,EAAc,IAEpE2J,EAAcnK,EAAOQ,GAGrB2J,IACGrG,IAEHuG,EAn9BN,SAAwBjY,EAAIoF,GAC1B,MAAM+S,EAAU,GAChB,KAAOnY,EAAGoY,oBAAoB,CAC5B,MAAMC,EAAOrY,EAAGoY,mBACZhT,EACEiT,EAAK7S,QAAQJ,IAAW+S,EAAQ7S,KAAK+S,GACpCF,EAAQ7S,KAAK+S,GACpBrY,EAAKqY,CACP,CACA,OAAOF,CACT,CAy8BkBG,CAAeP,EAAa,IAAIpU,EAAO4J,4BAA4B,GAC3E5J,EAAOmL,OAASmJ,IAClBA,EAAYrK,EAAO,IAIrBoK,EAp+BN,SAAwBhY,EAAIoF,GAC1B,MAAMmT,EAAU,GAChB,KAAOvY,EAAGwY,wBAAwB,CAChC,MAAMC,EAAOzY,EAAGwY,uBACZpT,EACEqT,EAAKjT,QAAQJ,IAAWmT,EAAQjT,KAAKmT,GACpCF,EAAQjT,KAAKmT,GACpBzY,EAAKyY,CACP,CACA,OAAOF,CACT,CA09BkBG,CAAeX,EAAa,IAAIpU,EAAO4J,4BAA4B,GAC3E5J,EAAOmL,MAAuB,KAAdkJ,IAClBA,EAAYpK,EAAOA,EAAO/R,OAAS,MAIzC+R,EAAOhS,QAAQoJ,IACbkI,EAAmBlI,EAASA,IAAY+S,EAAapU,EAAOgV,kBAC5DzL,EAAmBlI,EAASA,IAAYiT,EAAWtU,EAAOiV,gBAC1D1L,EAAmBlI,EAASA,IAAYgT,EAAWrU,EAAOkV,kBAE5D1V,EAAO2V,mBACT,EAoOEC,kBA1IF,SAA2BC,GACzB,MAAM7V,EAAS5E,KACTgF,EAAYJ,EAAO2M,aAAe3M,EAAOI,WAAaJ,EAAOI,WAC7D+M,SACJA,EAAQ3M,OACRA,EACAyK,YAAa6K,EACblK,UAAWmK,EACX7E,UAAW8E,GACThW,EACJ,IACIkR,EADAjG,EAAc4K,EAElB,MAAMI,EAAsBC,IAC1B,IAAItK,EAAYsK,EAASlW,EAAO+M,QAAQwD,aAOxC,OANI3E,EAAY,IACdA,EAAY5L,EAAO+M,QAAQtC,OAAO/R,OAASkT,GAEzCA,GAAa5L,EAAO+M,QAAQtC,OAAO/R,SACrCkT,GAAa5L,EAAO+M,QAAQtC,OAAO/R,QAE9BkT,GAKT,QAH2B,IAAhBX,IACTA,EA/CJ,SAAmCjL,GACjC,MAAMoN,WACJA,EAAU5M,OACVA,GACER,EACEI,EAAYJ,EAAO2M,aAAe3M,EAAOI,WAAaJ,EAAOI,UACnE,IAAI6K,EACJ,IAAK,IAAIjM,EAAI,EAAGA,EAAIoO,EAAW1U,OAAQsG,GAAK,OACT,IAAtBoO,EAAWpO,EAAI,GACpBoB,GAAagN,EAAWpO,IAAMoB,EAAYgN,EAAWpO,EAAI,IAAMoO,EAAWpO,EAAI,GAAKoO,EAAWpO,IAAM,EACtGiM,EAAcjM,EACLoB,GAAagN,EAAWpO,IAAMoB,EAAYgN,EAAWpO,EAAI,KAClEiM,EAAcjM,EAAI,GAEXoB,GAAagN,EAAWpO,KACjCiM,EAAcjM,GAOlB,OAHIwB,EAAO2V,sBACLlL,EAAc,QAA4B,IAAhBA,KAA6BA,EAAc,GAEpEA,CACT,CAwBkBmL,CAA0BpW,IAEtCmN,EAAS3U,QAAQ4H,IAAc,EACjC8Q,EAAY/D,EAAS3U,QAAQ4H,OACxB,CACL,MAAMiW,EAAOlV,KAAKE,IAAIb,EAAOkP,mBAAoBzE,GACjDiG,EAAYmF,EAAOlV,KAAK8N,OAAOhE,EAAcoL,GAAQ7V,EAAOiP,eAC9D,CAEA,GADIyB,GAAa/D,EAASzU,SAAQwY,EAAY/D,EAASzU,OAAS,GAC5DuS,IAAgB6K,IAAkB9V,EAAOQ,OAAOmL,KAKlD,YAJIuF,IAAc8E,IAChBhW,EAAOkR,UAAYA,EACnBlR,EAAOsJ,KAAK,qBAIhB,GAAI2B,IAAgB6K,GAAiB9V,EAAOQ,OAAOmL,MAAQ3L,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAEjG,YADAhN,EAAO4L,UAAYqK,EAAoBhL,IAGzC,MAAMsD,EAAcvO,EAAOkL,MAAQ1K,EAAO0K,MAAQ1K,EAAO0K,KAAKC,KAAO,EAGrE,IAAIS,EACJ,GAAI5L,EAAO+M,SAAWvM,EAAOuM,QAAQC,QAEjCpB,EADEpL,EAAOmL,KACGsK,EAAoBhL,GAEpBA,OAET,GAAIsD,EAAa,CACtB,MAAM+H,EAAqBtW,EAAOyK,OAAOsK,KAAKlT,GAAWA,EAAQ2J,SAAWP,GAC5E,IAAIsL,EAAmBpK,SAASmK,EAAmBE,aAAa,2BAA4B,IACxF5O,OAAOwE,MAAMmK,KACfA,EAAmBpV,KAAKC,IAAIpB,EAAOyK,OAAOjS,QAAQ8d,GAAqB,IAEzE1K,EAAYzK,KAAK8N,MAAMsH,EAAmB/V,EAAO0K,KAAKC,KACxD,MAAO,GAAInL,EAAOyK,OAAOQ,GAAc,CACrC,MAAMyF,EAAa1Q,EAAOyK,OAAOQ,GAAauL,aAAa,2BAEzD5K,EADE8E,EACUvE,SAASuE,EAAY,IAErBzF,CAEhB,MACEW,EAAYX,EAEdjT,OAAOqU,OAAOrM,EAAQ,CACpBgW,oBACA9E,YACA6E,oBACAnK,YACAkK,gBACA7K,gBAEEjL,EAAOyW,aACT9L,EAAQ3K,GAEVA,EAAOsJ,KAAK,qBACZtJ,EAAOsJ,KAAK,oBACRtJ,EAAOyW,aAAezW,EAAOQ,OAAOkW,sBAClCX,IAAsBnK,GACxB5L,EAAOsJ,KAAK,mBAEdtJ,EAAOsJ,KAAK,eAEhB,EAkDEqN,mBAhDF,SAA4B9Z,EAAI+Z,GAC9B,MAAM5W,EAAS5E,KACToF,EAASR,EAAOQ,OACtB,IAAIqO,EAAQhS,EAAGqN,QAAQ,IAAI1J,EAAO4J,6BAC7ByE,GAAS7O,EAAOmK,WAAayM,GAAQA,EAAKle,OAAS,GAAKke,EAAKpP,SAAS3K,IACzE,IAAI+Z,EAAKpY,MAAMoY,EAAKpe,QAAQqE,GAAM,EAAG+Z,EAAKle,SAASD,QAAQoe,KACpDhI,GAASgI,EAAOxU,SAAWwU,EAAOxU,QAAQ,IAAI7B,EAAO4J,8BACxDyE,EAAQgI,KAId,IACInG,EADAoG,GAAa,EAEjB,GAAIjI,EACF,IAAK,IAAI7P,EAAI,EAAGA,EAAIgB,EAAOyK,OAAO/R,OAAQsG,GAAK,EAC7C,GAAIgB,EAAOyK,OAAOzL,KAAO6P,EAAO,CAC9BiI,GAAa,EACbpG,EAAa1R,EACb,KACF,CAGJ,IAAI6P,IAASiI,EAUX,OAFA9W,EAAO+W,kBAAevX,OACtBQ,EAAOgX,kBAAexX,GARtBQ,EAAO+W,aAAelI,EAClB7O,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAC1ChN,EAAOgX,aAAe7K,SAAS0C,EAAM2H,aAAa,2BAA4B,IAE9ExW,EAAOgX,aAAetG,EAOtBlQ,EAAOyW,0BAA+CzX,IAAxBQ,EAAOgX,cAA8BhX,EAAOgX,eAAiBhX,EAAOiL,aACpGjL,EAAOiX,qBAEX,GAgKA,IAAI7W,EAAY,CACdxD,aAnJF,SAA4BE,GAAO1B,KAAK6Q,eAAiB,IAAM,MAC7D,MACMzL,OACJA,EACAmM,aAAcC,EAAGxM,UACjBA,EAASM,UACTA,GALatF,KAOf,GAAIoF,EAAO0W,iBACT,OAAOtK,GAAOxM,EAAYA,EAE5B,GAAII,EAAO8N,QACT,OAAOlO,EAET,IAAI+W,EAAmBva,EAAa8D,EAAW5D,GAG/C,OAFAqa,GAde/b,KAcYqX,wBACvB7F,IAAKuK,GAAoBA,GACtBA,GAAoB,CAC7B,EAkIEC,aAhIF,SAAsBhX,EAAWiX,GAC/B,MAAMrX,EAAS5E,MAEbuR,aAAcC,EAAGpM,OACjBA,EAAME,UACNA,EAASQ,SACTA,GACElB,EACJ,IA0BIsX,EA1BAC,EAAI,EACJC,EAAI,EAEJxX,EAAOiM,eACTsL,EAAI3K,GAAOxM,EAAYA,EAEvBoX,EAAIpX,EAEFI,EAAOwO,eACTuI,EAAIpW,KAAK8N,MAAMsI,GACfC,EAAIrW,KAAK8N,MAAMuI,IAEjBxX,EAAOyX,kBAAoBzX,EAAOI,UAClCJ,EAAOI,UAAYJ,EAAOiM,eAAiBsL,EAAIC,EAC3ChX,EAAO8N,QACT5N,EAAUV,EAAOiM,eAAiB,aAAe,aAAejM,EAAOiM,gBAAkBsL,GAAKC,EACpFhX,EAAO0W,mBACblX,EAAOiM,eACTsL,GAAKvX,EAAOyS,wBAEZ+E,GAAKxX,EAAOyS,wBAEd/R,EAAUhH,MAAM4D,UAAY,eAAeia,QAAQC,aAKrD,MAAM9D,EAAiB1T,EAAO2T,eAAiB3T,EAAO+S,eAEpDuE,EADqB,IAAnB5D,EACY,GAECtT,EAAYJ,EAAO+S,gBAAkBW,EAElD4D,IAAgBpW,GAClBlB,EAAOwT,eAAepT,GAExBJ,EAAOsJ,KAAK,eAAgBtJ,EAAOI,UAAWiX,EAChD,EAoFEtE,aAlFF,WACE,OAAQ3X,KAAK+R,SAAS,EACxB,EAiFEwG,aA/EF,WACE,OAAQvY,KAAK+R,SAAS/R,KAAK+R,SAASzU,OAAS,EAC/C,EA8EEgf,YA5EF,SAAqBtX,EAAY,EAAGK,EAAQrF,KAAKoF,OAAOC,MAAOkX,GAAe,EAAMC,GAAkB,EAAMC,GAC1G,MAAM7X,EAAS5E,MACToF,OACJA,EAAME,UACNA,GACEV,EACJ,GAAIA,EAAO8X,WAAatX,EAAOuX,+BAC7B,OAAO,EAET,MAAMhF,EAAe/S,EAAO+S,eACtBY,EAAe3T,EAAO2T,eAC5B,IAAIqE,EAKJ,GAJiDA,EAA7CJ,GAAmBxX,EAAY2S,EAA6BA,EAAsB6E,GAAmBxX,EAAYuT,EAA6BA,EAAiCvT,EAGnLJ,EAAOwT,eAAewE,GAClBxX,EAAO8N,QAAS,CAClB,MAAM2J,EAAMjY,EAAOiM,eACnB,GAAc,IAAVxL,EACFC,EAAUuX,EAAM,aAAe,cAAgBD,MAC1C,CACL,IAAKhY,EAAOwF,QAAQG,aAMlB,OALA5F,EAAqB,CACnBC,SACAC,gBAAiB+X,EACjB9X,KAAM+X,EAAM,OAAS,SAEhB,EAETvX,EAAUgB,SAAS,CACjB,CAACuW,EAAM,OAAS,QAASD,EACzBE,SAAU,UAEd,CACA,OAAO,CACT,CAiCA,OAhCc,IAAVzX,GACFT,EAAOgS,cAAc,GACrBhS,EAAOoX,aAAaY,GAChBL,IACF3X,EAAOsJ,KAAK,wBAAyB7I,EAAOoX,GAC5C7X,EAAOsJ,KAAK,oBAGdtJ,EAAOgS,cAAcvR,GACrBT,EAAOoX,aAAaY,GAChBL,IACF3X,EAAOsJ,KAAK,wBAAyB7I,EAAOoX,GAC5C7X,EAAOsJ,KAAK,oBAETtJ,EAAO8X,YACV9X,EAAO8X,WAAY,EACd9X,EAAOmY,oCACVnY,EAAOmY,kCAAoC,SAAuB7T,GAC3DtE,IAAUA,EAAOwI,WAClBlE,EAAEpM,SAAWkD,OACjB4E,EAAOU,UAAU5H,oBAAoB,gBAAiBkH,EAAOmY,mCAC7DnY,EAAOmY,kCAAoC,YACpCnY,EAAOmY,kCACdnY,EAAO8X,WAAY,EACfH,GACF3X,EAAOsJ,KAAK,iBAEhB,GAEFtJ,EAAOU,UAAU7H,iBAAiB,gBAAiBmH,EAAOmY,sCAGvD,CACT,GAmBA,SAASC,GAAepY,OACtBA,EAAM2X,aACNA,EAAYU,UACZA,EAASC,KACTA,IAEA,MAAMrN,YACJA,EAAW6K,cACXA,GACE9V,EACJ,IAAIa,EAAMwX,EACLxX,IAC8BA,EAA7BoK,EAAc6K,EAAqB,OAAgB7K,EAAc6K,EAAqB,OAAkB,SAE9G9V,EAAOsJ,KAAK,aAAagP,KACrBX,GAAwB,UAAR9W,EAClBb,EAAOsJ,KAAK,uBAAuBgP,KAC1BX,GAAgB1M,IAAgB6K,IACzC9V,EAAOsJ,KAAK,wBAAwBgP,KACxB,SAARzX,EACFb,EAAOsJ,KAAK,sBAAsBgP,KAElCtY,EAAOsJ,KAAK,sBAAsBgP,KAGxC,CAybA,IAAIzJ,EAAQ,CACV0J,QAjZF,SAAiBpP,EAAQ,EAAG1I,EAAOkX,GAAe,EAAME,EAAUW,GAC3C,iBAAVrP,IACTA,EAAQgD,SAAShD,EAAO,KAE1B,MAAMnJ,EAAS5E,KACf,IAAIsV,EAAavH,EACbuH,EAAa,IAAGA,EAAa,GACjC,MAAMlQ,OACJA,EAAM2M,SACNA,EAAQC,WACRA,EAAU0I,cACVA,EAAa7K,YACbA,EACA0B,aAAcC,EAAGlM,UACjBA,EAASsM,QACTA,GACEhN,EACJ,IAAKgN,IAAY6K,IAAaW,GAAWxY,EAAOwI,WAAaxI,EAAO8X,WAAatX,EAAOuX,+BACtF,OAAO,OAEY,IAAVtX,IACTA,EAAQT,EAAOQ,OAAOC,OAExB,MAAM4V,EAAOlV,KAAKE,IAAIrB,EAAOQ,OAAOkP,mBAAoBgB,GACxD,IAAIQ,EAAYmF,EAAOlV,KAAK8N,OAAOyB,EAAa2F,GAAQrW,EAAOQ,OAAOiP,gBAClEyB,GAAa/D,EAASzU,SAAQwY,EAAY/D,EAASzU,OAAS,GAChE,MAAM0H,GAAa+M,EAAS+D,GAE5B,GAAI1Q,EAAO2V,oBACT,IAAK,IAAInX,EAAI,EAAGA,EAAIoO,EAAW1U,OAAQsG,GAAK,EAAG,CAC7C,MAAMyZ,GAAuBtX,KAAK8N,MAAkB,IAAZ7O,GAClCsY,EAAiBvX,KAAK8N,MAAsB,IAAhB7B,EAAWpO,IACvC2Z,EAAqBxX,KAAK8N,MAA0B,IAApB7B,EAAWpO,EAAI,SACpB,IAAtBoO,EAAWpO,EAAI,GACpByZ,GAAuBC,GAAkBD,EAAsBE,GAAsBA,EAAqBD,GAAkB,EAC9HhI,EAAa1R,EACJyZ,GAAuBC,GAAkBD,EAAsBE,IACxEjI,EAAa1R,EAAI,GAEVyZ,GAAuBC,IAChChI,EAAa1R,EAEjB,CAGF,GAAIgB,EAAOyW,aAAe/F,IAAezF,EAAa,CACpD,IAAKjL,EAAO4Y,iBAAmBhM,EAAMxM,EAAYJ,EAAOI,WAAaA,EAAYJ,EAAO+S,eAAiB3S,EAAYJ,EAAOI,WAAaA,EAAYJ,EAAO+S,gBAC1J,OAAO,EAET,IAAK/S,EAAO6Y,gBAAkBzY,EAAYJ,EAAOI,WAAaA,EAAYJ,EAAO2T,iBAC1E1I,GAAe,KAAOyF,EACzB,OAAO,CAGb,CAOA,IAAI2H,EANA3H,KAAgBoF,GAAiB,IAAM6B,GACzC3X,EAAOsJ,KAAK,0BAIdtJ,EAAOwT,eAAepT,GAEQiY,EAA1B3H,EAAazF,EAAyB,OAAgByF,EAAazF,EAAyB,OAAwB,QAGxH,MAAM6B,EAAY9M,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAG1D,KAFyBF,GAAa0L,KAEZ5L,IAAQxM,IAAcJ,EAAOI,YAAcwM,GAAOxM,IAAcJ,EAAOI,WAc/F,OAbAJ,EAAO4V,kBAAkBlF,GAErBlQ,EAAOiU,YACTzU,EAAO6R,mBAET7R,EAAO0U,sBACe,UAAlBlU,EAAOmP,QACT3P,EAAOoX,aAAahX,GAEJ,UAAdiY,IACFrY,EAAO8Y,gBAAgBnB,EAAcU,GACrCrY,EAAO+Y,cAAcpB,EAAcU,KAE9B,EAET,GAAI7X,EAAO8N,QAAS,CAClB,MAAM2J,EAAMjY,EAAOiM,eACb+M,EAAIpM,EAAMxM,GAAaA,EAC7B,GAAc,IAAVK,EACEqM,IACF9M,EAAOU,UAAUhH,MAAMiH,eAAiB,OACxCX,EAAOiZ,mBAAoB,GAEzBnM,IAAc9M,EAAOkZ,2BAA6BlZ,EAAOQ,OAAO2Y,aAAe,GACjFnZ,EAAOkZ,2BAA4B,EACnCrd,sBAAsB,KACpB6E,EAAUuX,EAAM,aAAe,aAAee,KAGhDtY,EAAUuX,EAAM,aAAe,aAAee,EAE5ClM,GACFjR,sBAAsB,KACpBmE,EAAOU,UAAUhH,MAAMiH,eAAiB,GACxCX,EAAOiZ,mBAAoB,QAG1B,CACL,IAAKjZ,EAAOwF,QAAQG,aAMlB,OALA5F,EAAqB,CACnBC,SACAC,eAAgB+Y,EAChB9Y,KAAM+X,EAAM,OAAS,SAEhB,EAETvX,EAAUgB,SAAS,CACjB,CAACuW,EAAM,OAAS,OAAQe,EACxBd,SAAU,UAEd,CACA,OAAO,CACT,CACA,MACM7Q,EADUF,IACSE,SA0BzB,OAzBIyF,IAAc0L,GAAWnR,GAAYrH,EAAOmK,WAC9CnK,EAAO+M,QAAQlB,QAAO,GAAO,EAAO6E,GAEtC1Q,EAAOgS,cAAcvR,GACrBT,EAAOoX,aAAahX,GACpBJ,EAAO4V,kBAAkBlF,GACzB1Q,EAAO0U,sBACP1U,EAAOsJ,KAAK,wBAAyB7I,EAAOoX,GAC5C7X,EAAO8Y,gBAAgBnB,EAAcU,GACvB,IAAV5X,EACFT,EAAO+Y,cAAcpB,EAAcU,GACzBrY,EAAO8X,YACjB9X,EAAO8X,WAAY,EACd9X,EAAOoZ,gCACVpZ,EAAOoZ,8BAAgC,SAAuB9U,GACvDtE,IAAUA,EAAOwI,WAClBlE,EAAEpM,SAAWkD,OACjB4E,EAAOU,UAAU5H,oBAAoB,gBAAiBkH,EAAOoZ,+BAC7DpZ,EAAOoZ,8BAAgC,YAChCpZ,EAAOoZ,8BACdpZ,EAAO+Y,cAAcpB,EAAcU,GACrC,GAEFrY,EAAOU,UAAU7H,iBAAiB,gBAAiBmH,EAAOoZ,iCAErD,CACT,EA4PEC,YA1PF,SAAqBlQ,EAAQ,EAAG1I,EAAOkX,GAAe,EAAME,GAC1D,GAAqB,iBAAV1O,EAAoB,CAE7BA,EADsBgD,SAAShD,EAAO,GAExC,CACA,MAAMnJ,EAAS5E,KACf,GAAI4E,EAAOwI,UAAW,YACD,IAAV/H,IACTA,EAAQT,EAAOQ,OAAOC,OAExB,MAAM8N,EAAcvO,EAAOkL,MAAQlL,EAAOQ,OAAO0K,MAAQlL,EAAOQ,OAAO0K,KAAKC,KAAO,EACnF,IAAImO,EAAWnQ,EACf,GAAInJ,EAAOQ,OAAOmL,KAChB,GAAI3L,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAE1CsM,GAAsBtZ,EAAO+M,QAAQwD,iBAChC,CACL,IAAIgJ,EACJ,GAAIhL,EAAa,CACf,MAAMmC,EAAa4I,EAAWtZ,EAAOQ,OAAO0K,KAAKC,KACjDoO,EAAmBvZ,EAAOyK,OAAOsK,KAAKlT,GAA6D,EAAlDA,EAAQ2U,aAAa,6BAAmC9F,GAAYlF,MACvH,MACE+N,EAAmBvZ,EAAOkS,oBAAoBoH,GAEhD,MAAME,EAAOjL,EAAcpN,KAAK6J,KAAKhL,EAAOyK,OAAO/R,OAASsH,EAAOQ,OAAO0K,KAAKC,MAAQnL,EAAOyK,OAAO/R,QAC/F2V,eACJA,EAAcd,mBACdA,EAAkBE,kBAClBA,GACEzN,EAAOQ,OACLiZ,EAAiBpL,KAAoBd,KAAwBE,EACnE,IAAI3C,EAAgB9K,EAAOQ,OAAOsK,cACZ,SAAlBA,EACFA,EAAgB9K,EAAO+K,wBAEvBD,EAAgB3J,KAAK6J,KAAK9M,WAAW8B,EAAOQ,OAAOsK,cAAe,KAC9D2O,GAAkB3O,EAAgB,GAAM,IAC1CA,GAAgC,IAGpC,IAAI4O,EAAcF,EAAOD,EAAmBzO,EAO5C,GANI2O,IACFC,EAAcA,GAAeH,EAAmBpY,KAAK6J,KAAKF,EAAgB,IAExE+M,GAAY4B,GAAkD,SAAhCzZ,EAAOQ,OAAOsK,gBAA6ByD,IAC3EmL,GAAc,GAEZA,EAAa,CACf,MAAMrB,EAAYoB,EAAiBF,EAAmBvZ,EAAOiL,YAAc,OAAS,OAASsO,EAAmBvZ,EAAOiL,YAAc,EAAIjL,EAAOQ,OAAOsK,cAAgB,OAAS,OAChL9K,EAAO2Z,QAAQ,CACbtB,YACAE,SAAS,EACThC,iBAAgC,SAAd8B,EAAuBkB,EAAmB,EAAIA,EAAmBC,EAAO,EAC1FI,eAA8B,SAAdvB,EAAuBrY,EAAO4L,eAAYpM,GAE9D,CACA,GAAI+O,EAAa,CACf,MAAMmC,EAAa4I,EAAWtZ,EAAOQ,OAAO0K,KAAKC,KACjDmO,EAAWtZ,EAAOyK,OAAOsK,KAAKlT,GAA6D,EAAlDA,EAAQ2U,aAAa,6BAAmC9F,GAAYlF,MAC/G,MACE8N,EAAWtZ,EAAOkS,oBAAoBoH,EAE1C,CAKF,OAHAzd,sBAAsB,KACpBmE,EAAOuY,QAAQe,EAAU7Y,EAAOkX,EAAcE,KAEzC7X,CACT,EAuLE6Z,UApLF,SAAmBpZ,EAAOkX,GAAe,EAAME,GAC7C,MAAM7X,EAAS5E,MACT4R,QACJA,EAAOxM,OACPA,EAAMsX,UACNA,GACE9X,EACJ,IAAKgN,GAAWhN,EAAOwI,UAAW,OAAOxI,OACpB,IAAVS,IACTA,EAAQT,EAAOQ,OAAOC,OAExB,IAAIqZ,EAAWtZ,EAAOiP,eACO,SAAzBjP,EAAOsK,eAAsD,IAA1BtK,EAAOiP,gBAAwBjP,EAAOuZ,qBAC3ED,EAAW3Y,KAAKC,IAAIpB,EAAO+K,qBAAqB,WAAW,GAAO,IAEpE,MAAMiP,EAAYha,EAAOiL,YAAczK,EAAOkP,mBAAqB,EAAIoK,EACjEhN,EAAY9M,EAAO+M,SAAWvM,EAAOuM,QAAQC,QACnD,GAAIxM,EAAOmL,KAAM,CACf,GAAImM,IAAchL,GAAatM,EAAOyZ,oBAAqB,OAAO,EAMlE,GALAja,EAAO2Z,QAAQ,CACbtB,UAAW,SAGbrY,EAAOka,YAAcla,EAAOU,UAAU0C,WAClCpD,EAAOiL,cAAgBjL,EAAOyK,OAAO/R,OAAS,GAAK8H,EAAO8N,QAI5D,OAHAzS,sBAAsB,KACpBmE,EAAOuY,QAAQvY,EAAOiL,YAAc+O,EAAWvZ,EAAOkX,EAAcE,MAE/D,CAEX,CACA,OAAIrX,EAAOkL,QAAU1L,EAAO6T,MACnB7T,EAAOuY,QAAQ,EAAG9X,EAAOkX,EAAcE,GAEzC7X,EAAOuY,QAAQvY,EAAOiL,YAAc+O,EAAWvZ,EAAOkX,EAAcE,EAC7E,EAkJEsC,UA/IF,SAAmB1Z,EAAOkX,GAAe,EAAME,GAC7C,MAAM7X,EAAS5E,MACToF,OACJA,EAAM2M,SACNA,EAAQC,WACRA,EAAUT,aACVA,EAAYK,QACZA,EAAO8K,UACPA,GACE9X,EACJ,IAAKgN,GAAWhN,EAAOwI,UAAW,OAAOxI,OACpB,IAAVS,IACTA,EAAQT,EAAOQ,OAAOC,OAExB,MAAMqM,EAAY9M,EAAO+M,SAAWvM,EAAOuM,QAAQC,QACnD,GAAIxM,EAAOmL,KAAM,CACf,GAAImM,IAAchL,GAAatM,EAAOyZ,oBAAqB,OAAO,EAClEja,EAAO2Z,QAAQ,CACbtB,UAAW,SAGbrY,EAAOka,YAAcla,EAAOU,UAAU0C,UACxC,CAEA,SAASgX,EAAUC,GACjB,OAAIA,EAAM,GAAWlZ,KAAK8N,MAAM9N,KAAK2D,IAAIuV,IAClClZ,KAAK8N,MAAMoL,EACpB,CACA,MAAM5B,EAAsB2B,EALVzN,EAAe3M,EAAOI,WAAaJ,EAAOI,WAMtDka,EAAqBnN,EAAS3P,IAAI6c,GAAOD,EAAUC,IACnDE,EAAa/Z,EAAOga,UAAYha,EAAOga,SAASxN,QACtD,IAAIyN,EAAWtN,EAASmN,EAAmB9hB,QAAQigB,GAAuB,GAC1E,QAAwB,IAAbgC,IAA6Bja,EAAO8N,SAAWiM,GAAa,CACrE,IAAIG,EACJvN,EAAS1U,QAAQ,CAACsY,EAAMG,KAClBuH,GAAuB1H,IAEzB2J,EAAgBxJ,UAGS,IAAlBwJ,IACTD,EAAWF,EAAapN,EAASuN,GAAiBvN,EAASuN,EAAgB,EAAIA,EAAgB,EAAIA,GAEvG,CACA,IAAIC,EAAY,EAShB,QARwB,IAAbF,IACTE,EAAYvN,EAAW5U,QAAQiiB,GAC3BE,EAAY,IAAGA,EAAY3a,EAAOiL,YAAc,GACvB,SAAzBzK,EAAOsK,eAAsD,IAA1BtK,EAAOiP,gBAAwBjP,EAAOuZ,qBAC3EY,EAAYA,EAAY3a,EAAO+K,qBAAqB,YAAY,GAAQ,EACxE4P,EAAYxZ,KAAKC,IAAIuZ,EAAW,KAGhCna,EAAOkL,QAAU1L,EAAO4T,YAAa,CACvC,MAAMgH,EAAY5a,EAAOQ,OAAOuM,SAAW/M,EAAOQ,OAAOuM,QAAQC,SAAWhN,EAAO+M,QAAU/M,EAAO+M,QAAQtC,OAAO/R,OAAS,EAAIsH,EAAOyK,OAAO/R,OAAS,EACvJ,OAAOsH,EAAOuY,QAAQqC,EAAWna,EAAOkX,EAAcE,EACxD,CAAO,OAAIrX,EAAOmL,MAA+B,IAAvB3L,EAAOiL,aAAqBzK,EAAO8N,SAC3DzS,sBAAsB,KACpBmE,EAAOuY,QAAQoC,EAAWla,EAAOkX,EAAcE,MAE1C,GAEF7X,EAAOuY,QAAQoC,EAAWla,EAAOkX,EAAcE,EACxD,EAiFEgD,WA9EF,SAAoBpa,EAAOkX,GAAe,EAAME,GAC9C,MAAM7X,EAAS5E,KACf,IAAI4E,EAAOwI,UAIX,YAHqB,IAAV/H,IACTA,EAAQT,EAAOQ,OAAOC,OAEjBT,EAAOuY,QAAQvY,EAAOiL,YAAaxK,EAAOkX,EAAcE,EACjE,EAwEEiD,eArEF,SAAwBra,EAAOkX,GAAe,EAAME,EAAUkD,EAAY,IACxE,MAAM/a,EAAS5E,KACf,GAAI4E,EAAOwI,UAAW,YACD,IAAV/H,IACTA,EAAQT,EAAOQ,OAAOC,OAExB,IAAI0I,EAAQnJ,EAAOiL,YACnB,MAAMoL,EAAOlV,KAAKE,IAAIrB,EAAOQ,OAAOkP,mBAAoBvG,GAClD+H,EAAYmF,EAAOlV,KAAK8N,OAAO9F,EAAQkN,GAAQrW,EAAOQ,OAAOiP,gBAC7DrP,EAAYJ,EAAO2M,aAAe3M,EAAOI,WAAaJ,EAAOI,UACnE,GAAIA,GAAaJ,EAAOmN,SAAS+D,GAAY,CAG3C,MAAM8J,EAAchb,EAAOmN,SAAS+D,GAEhC9Q,EAAY4a,GADChb,EAAOmN,SAAS+D,EAAY,GACH8J,GAAeD,IACvD5R,GAASnJ,EAAOQ,OAAOiP,eAE3B,KAAO,CAGL,MAAMgL,EAAWza,EAAOmN,SAAS+D,EAAY,GAEzC9Q,EAAYqa,IADIza,EAAOmN,SAAS+D,GACOuJ,GAAYM,IACrD5R,GAASnJ,EAAOQ,OAAOiP,eAE3B,CAGA,OAFAtG,EAAQhI,KAAKC,IAAI+H,EAAO,GACxBA,EAAQhI,KAAKE,IAAI8H,EAAOnJ,EAAOoN,WAAW1U,OAAS,GAC5CsH,EAAOuY,QAAQpP,EAAO1I,EAAOkX,EAAcE,EACpD,EAwCEZ,oBAtCF,WACE,MAAMjX,EAAS5E,KACf,GAAI4E,EAAOwI,UAAW,OACtB,MAAMhI,OACJA,EAAMkM,SACNA,GACE1M,EACE8K,EAAyC,SAAzBtK,EAAOsK,cAA2B9K,EAAO+K,uBAAyBvK,EAAOsK,cAC/F,IACIc,EADAqP,EAAejb,EAAOkb,sBAAsBlb,EAAOgX,cAEvD,MAAMmE,EAAgBnb,EAAOmK,UAAY,eAAiB,IAAI3J,EAAO4J,aAC/DgR,EAASpb,EAAOkL,MAAQlL,EAAOQ,OAAO0K,MAAQlL,EAAOQ,OAAO0K,KAAKC,KAAO,EAC9E,GAAI3K,EAAOmL,KAAM,CACf,GAAI3L,EAAO8X,UAAW,OACtBlM,EAAYO,SAASnM,EAAO+W,aAAaP,aAAa,2BAA4B,IAC9EhW,EAAO6N,eACTrO,EAAOqZ,YAAYzN,GACVqP,GAAgBG,GAAUpb,EAAOyK,OAAO/R,OAASoS,GAAiB,GAAK9K,EAAOQ,OAAO0K,KAAKC,KAAO,GAAKnL,EAAOyK,OAAO/R,OAASoS,IACtI9K,EAAO2Z,UACPsB,EAAejb,EAAOqb,cAActZ,EAAgB2K,EAAU,GAAGyO,8BAA0CvP,OAAe,IAC1HnP,EAAS,KACPuD,EAAOuY,QAAQ0C,MAGjBjb,EAAOuY,QAAQ0C,EAEnB,MACEjb,EAAOuY,QAAQ0C,EAEnB,GAmUA,IAAItP,EAAO,CACT2P,WAxTF,SAAoB1B,EAAgBpB,GAClC,MAAMxY,EAAS5E,MACToF,OACJA,EAAMkM,SACNA,GACE1M,EACJ,IAAKQ,EAAOmL,MAAQ3L,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAAS,OACrE,MAAMyB,EAAa,KACF1M,EAAgB2K,EAAU,IAAIlM,EAAO4J,4BAC7C3R,QAAQ,CAACoE,EAAIsM,KAClBtM,EAAGlD,aAAa,0BAA2BwP,MAazCoF,EAAcvO,EAAOkL,MAAQ1K,EAAO0K,MAAQ1K,EAAO0K,KAAKC,KAAO,EACjE3K,EAAO+a,qBAAuB/a,EAAOiP,eAAiB,GAAKlB,IAXtC,MACvB,MAAM9D,EAAS1I,EAAgB2K,EAAU,IAAIlM,EAAOgb,mBACpD/Q,EAAOhS,QAAQoE,IACbA,EAAGiN,WAEDW,EAAO/R,OAAS,IAClBsH,EAAOyb,eACPzb,EAAOsM,iBAKToP,GAEF,MAAMjM,EAAiBjP,EAAOiP,gBAAkBlB,EAAc/N,EAAO0K,KAAKC,KAAO,GAC3EwQ,EAAkB3b,EAAOyK,OAAO/R,OAAS+W,IAAmB,EAC5DmM,EAAiBrN,GAAevO,EAAOyK,OAAO/R,OAAS8H,EAAO0K,KAAKC,OAAS,EAC5E0Q,EAAiBC,IACrB,IAAK,IAAI9c,EAAI,EAAGA,EAAI8c,EAAgB9c,GAAK,EAAG,CAC1C,MAAM6C,EAAU7B,EAAOmK,UAAY5Q,EAAc,eAAgB,CAACiH,EAAOgb,kBAAoBjiB,EAAc,MAAO,CAACiH,EAAO4J,WAAY5J,EAAOgb,kBAC7Ixb,EAAO0M,SAASqP,OAAOla,EACzB,GAEF,GAAI8Z,EAAiB,CACnB,GAAInb,EAAO+a,mBAAoB,CAE7BM,EADoBpM,EAAiBzP,EAAOyK,OAAO/R,OAAS+W,GAE5DzP,EAAOyb,eACPzb,EAAOsM,cACT,MACEhK,EAAY,mLAEdmM,GACF,MAAO,GAAImN,EAAgB,CACzB,GAAIpb,EAAO+a,mBAAoB,CAE7BM,EADoBrb,EAAO0K,KAAKC,KAAOnL,EAAOyK,OAAO/R,OAAS8H,EAAO0K,KAAKC,MAE1EnL,EAAOyb,eACPzb,EAAOsM,cACT,MACEhK,EAAY,8KAEdmM,GACF,MACEA,IAEF,MAAMgL,EAAiBjZ,EAAO6N,kBAAoB7N,EAAO+M,sBAAwB/M,EAAOiN,kBACxFzN,EAAO2Z,QAAQ,CACbC,iBACAvB,UAAWoB,OAAiBja,EAAY,OACxCgZ,WAEJ,EAwPEmB,QAtPF,UAAiBC,eACfA,EAAcrB,QACdA,GAAU,EAAIF,UACdA,EAASjB,aACTA,EAAYb,iBACZA,EAAgBiC,QAChBA,EAAOnB,aACPA,EAAY2E,aACZA,GACE,CAAC,GACH,MAAMhc,EAAS5E,KACf,IAAK4E,EAAOQ,OAAOmL,KAAM,OACzB3L,EAAOsJ,KAAK,iBACZ,MAAMmB,OACJA,EAAMoO,eACNA,EAAcD,eACdA,EAAclM,SACdA,EAAQlM,OACRA,GACER,GACEqO,eACJA,EAAcd,mBACdA,EAAkBE,kBAClBA,EAAiB0L,aACjBA,GACE3Y,EACEiZ,EAAiBpL,KAAoBd,KAAwBE,EAGnE,GAFAzN,EAAO6Y,gBAAiB,EACxB7Y,EAAO4Y,gBAAiB,EACpB5Y,EAAO+M,SAAWvM,EAAOuM,QAAQC,QAanC,OAZIuL,IACGkB,GAAuC,IAArBzZ,EAAOkR,UAEnBuI,GAAkBzZ,EAAOkR,UAAY1Q,EAAOsK,cACrD9K,EAAOuY,QAAQvY,EAAO+M,QAAQtC,OAAO/R,OAASsH,EAAOkR,UAAW,GAAG,GAAO,GACjElR,EAAOkR,YAAclR,EAAOmN,SAASzU,OAAS,GACvDsH,EAAOuY,QAAQvY,EAAO+M,QAAQwD,aAAc,GAAG,GAAO,GAJtDvQ,EAAOuY,QAAQvY,EAAO+M,QAAQtC,OAAO/R,OAAQ,GAAG,GAAO,IAO3DsH,EAAO6Y,eAAiBA,EACxB7Y,EAAO4Y,eAAiBA,OACxB5Y,EAAOsJ,KAAK,WAGd,IAAIwB,EAAgBtK,EAAOsK,cACL,SAAlBA,EACFA,EAAgB9K,EAAO+K,wBAEvBD,EAAgB3J,KAAK6J,KAAK9M,WAAWsC,EAAOsK,cAAe,KACvD2O,GAAkB3O,EAAgB,GAAM,IAC1CA,GAAgC,IAGpC,MAAM2E,EAAiBjP,EAAOuZ,mBAAqBjP,EAAgBtK,EAAOiP,eAC1E,IAAIwM,EAAexC,EAAiBtY,KAAKC,IAAIqO,EAAgBtO,KAAK6J,KAAKF,EAAgB,IAAM2E,EACzFwM,EAAexM,IAAmB,IACpCwM,GAAgBxM,EAAiBwM,EAAexM,GAElDwM,GAAgBzb,EAAO0b,qBACvBlc,EAAOic,aAAeA,EACtB,MAAM1N,EAAcvO,EAAOkL,MAAQ1K,EAAO0K,MAAQ1K,EAAO0K,KAAKC,KAAO,EACjEV,EAAO/R,OAASoS,EAAgBmR,GAAyC,UAAzBjc,EAAOQ,OAAOmP,QAAsBlF,EAAO/R,OAASoS,EAA+B,EAAfmR,EACtH3Z,EAAY,4OACHiM,GAAoC,QAArB/N,EAAO0K,KAAKiR,MACpC7Z,EAAY,2EAEd,MAAM8Z,EAAuB,GACvBC,EAAsB,GACtB7C,EAAOjL,EAAcpN,KAAK6J,KAAKP,EAAO/R,OAAS8H,EAAO0K,KAAKC,MAAQV,EAAO/R,OAC1E4jB,EAAoB9D,GAAWgB,EAAOL,EAAerO,IAAkB2O,EAC7E,IAAIxO,EAAcqR,EAAoBnD,EAAenZ,EAAOiL,iBAC5B,IAArBsL,EACTA,EAAmBvW,EAAOqb,cAAc5Q,EAAOsK,KAAKlY,GAAMA,EAAG+F,UAAUiH,SAASrJ,EAAOgV,oBAEvFvK,EAAcsL,EAEhB,MAAMgG,EAAuB,SAAdlE,IAAyBA,EAClCmE,EAAuB,SAAdnE,IAAyBA,EACxC,IAAIoE,EAAkB,EAClBC,EAAiB,EACrB,MACMC,GADiBpO,EAAc9D,EAAO8L,GAAkB/K,OAAS+K,IACrBkD,QAA0C,IAAjBrC,GAAgCtM,EAAgB,EAAI,GAAM,GAErI,GAAI6R,EAA0BV,EAAc,CAC1CQ,EAAkBtb,KAAKC,IAAI6a,EAAeU,EAAyBlN,GACnE,IAAK,IAAIzQ,EAAI,EAAGA,EAAIid,EAAeU,EAAyB3d,GAAK,EAAG,CAClE,MAAMmK,EAAQnK,EAAImC,KAAK8N,MAAMjQ,EAAIwa,GAAQA,EACzC,GAAIjL,EAAa,CACf,MAAMqO,EAAoBpD,EAAOrQ,EAAQ,EACzC,IAAK,IAAInK,EAAIyL,EAAO/R,OAAS,EAAGsG,GAAK,EAAGA,GAAK,EACvCyL,EAAOzL,GAAGwM,SAAWoR,GAAmBR,EAAqBja,KAAKnD,EAK1E,MACEod,EAAqBja,KAAKqX,EAAOrQ,EAAQ,EAE7C,CACF,MAAO,GAAIwT,EAA0B7R,EAAgB0O,EAAOyC,EAAc,CACxES,EAAiBvb,KAAKC,IAAIub,GAA2BnD,EAAsB,EAAfyC,GAAmBxM,GAC3E6M,IACFI,EAAiBvb,KAAKC,IAAIsb,EAAgB5R,EAAgB0O,EAAOL,EAAe,IAElF,IAAK,IAAIna,EAAI,EAAGA,EAAI0d,EAAgB1d,GAAK,EAAG,CAC1C,MAAMmK,EAAQnK,EAAImC,KAAK8N,MAAMjQ,EAAIwa,GAAQA,EACrCjL,EACF9D,EAAOhS,QAAQ,CAACoW,EAAO6B,KACjB7B,EAAMrD,SAAWrC,GAAOkT,EAAoBla,KAAKuO,KAGvD2L,EAAoBla,KAAKgH,EAE7B,CACF,CAsCA,GArCAnJ,EAAO6c,qBAAsB,EAC7BhhB,sBAAsB,KACpBmE,EAAO6c,qBAAsB,IAEF,UAAzB7c,EAAOQ,OAAOmP,QAAsBlF,EAAO/R,OAASoS,EAA+B,EAAfmR,IAClEI,EAAoB7U,SAAS+O,IAC/B8F,EAAoBjT,OAAOiT,EAAoB7jB,QAAQ+d,GAAmB,GAExE6F,EAAqB5U,SAAS+O,IAChC6F,EAAqBhT,OAAOgT,EAAqB5jB,QAAQ+d,GAAmB,IAG5EiG,GACFJ,EAAqB3jB,QAAQ0Q,IAC3BsB,EAAOtB,GAAO2T,mBAAoB,EAClCpQ,EAASqQ,QAAQtS,EAAOtB,IACxBsB,EAAOtB,GAAO2T,mBAAoB,IAGlCP,GACFF,EAAoB5jB,QAAQ0Q,IAC1BsB,EAAOtB,GAAO2T,mBAAoB,EAClCpQ,EAASqP,OAAOtR,EAAOtB,IACvBsB,EAAOtB,GAAO2T,mBAAoB,IAGtC9c,EAAOyb,eACsB,SAAzBjb,EAAOsK,cACT9K,EAAOsM,eACEiC,IAAgB6N,EAAqB1jB,OAAS,GAAK8jB,GAAUH,EAAoB3jB,OAAS,GAAK6jB,IACxGvc,EAAOyK,OAAOhS,QAAQ,CAACoW,EAAO6B,KAC5B1Q,EAAOkL,KAAK4D,YAAY4B,EAAY7B,EAAO7O,EAAOyK,UAGlDjK,EAAO+Q,qBACTvR,EAAOwR,qBAEL+G,EACF,GAAI6D,EAAqB1jB,OAAS,GAAK8jB,GACrC,QAA8B,IAAnB5C,EAAgC,CACzC,MAAMoD,EAAwBhd,EAAOoN,WAAWnC,GAE1CgS,EADoBjd,EAAOoN,WAAWnC,EAAcwR,GACzBO,EAC7BhB,EACFhc,EAAOoX,aAAapX,EAAOI,UAAY6c,IAEvCjd,EAAOuY,QAAQtN,EAAc9J,KAAK6J,KAAKyR,GAAkB,GAAG,GAAO,GAC/DrF,IACFpX,EAAOkd,gBAAgBC,eAAiBnd,EAAOkd,gBAAgBC,eAAiBF,EAChFjd,EAAOkd,gBAAgB/F,iBAAmBnX,EAAOkd,gBAAgB/F,iBAAmB8F,GAG1F,MACE,GAAI7F,EAAc,CAChB,MAAMgG,EAAQ7O,EAAc6N,EAAqB1jB,OAAS8H,EAAO0K,KAAKC,KAAOiR,EAAqB1jB,OAClGsH,EAAOuY,QAAQvY,EAAOiL,YAAcmS,EAAO,GAAG,GAAO,GACrDpd,EAAOkd,gBAAgB/F,iBAAmBnX,EAAOI,SACnD,OAEG,GAAIic,EAAoB3jB,OAAS,GAAK6jB,EAC3C,QAA8B,IAAnB3C,EAAgC,CACzC,MAAMoD,EAAwBhd,EAAOoN,WAAWnC,GAE1CgS,EADoBjd,EAAOoN,WAAWnC,EAAcyR,GACzBM,EAC7BhB,EACFhc,EAAOoX,aAAapX,EAAOI,UAAY6c,IAEvCjd,EAAOuY,QAAQtN,EAAcyR,EAAgB,GAAG,GAAO,GACnDtF,IACFpX,EAAOkd,gBAAgBC,eAAiBnd,EAAOkd,gBAAgBC,eAAiBF,EAChFjd,EAAOkd,gBAAgB/F,iBAAmBnX,EAAOkd,gBAAgB/F,iBAAmB8F,GAG1F,KAAO,CACL,MAAMG,EAAQ7O,EAAc8N,EAAoB3jB,OAAS8H,EAAO0K,KAAKC,KAAOkR,EAAoB3jB,OAChGsH,EAAOuY,QAAQvY,EAAOiL,YAAcmS,EAAO,GAAG,GAAO,EACvD,CAKJ,GAFApd,EAAO6Y,eAAiBA,EACxB7Y,EAAO4Y,eAAiBA,EACpB5Y,EAAOqd,YAAcrd,EAAOqd,WAAWC,UAAYjG,EAAc,CACnE,MAAMkG,EAAa,CACjB3D,iBACAvB,YACAjB,eACAb,mBACAc,cAAc,GAEZvU,MAAMC,QAAQ/C,EAAOqd,WAAWC,SAClCtd,EAAOqd,WAAWC,QAAQ7kB,QAAQ+D,KAC3BA,EAAEgM,WAAahM,EAAEgE,OAAOmL,MAAMnP,EAAEmd,QAAQ,IACxC4D,EACHhF,QAAS/b,EAAEgE,OAAOsK,gBAAkBtK,EAAOsK,eAAgByN,MAGtDvY,EAAOqd,WAAWC,mBAAmBtd,EAAOjI,aAAeiI,EAAOqd,WAAWC,QAAQ9c,OAAOmL,MACrG3L,EAAOqd,WAAWC,QAAQ3D,QAAQ,IAC7B4D,EACHhF,QAASvY,EAAOqd,WAAWC,QAAQ9c,OAAOsK,gBAAkBtK,EAAOsK,eAAgByN,GAGzF,CACAvY,EAAOsJ,KAAK,UACd,EA4BEkU,YA1BF,WACE,MAAMxd,EAAS5E,MACToF,OACJA,EAAMkM,SACNA,GACE1M,EACJ,IAAKQ,EAAOmL,OAASe,GAAY1M,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAAS,OAClFhN,EAAOyb,eACP,MAAMgC,EAAiB,GACvBzd,EAAOyK,OAAOhS,QAAQoJ,IACpB,MAAMsH,OAA4C,IAA7BtH,EAAQ6b,iBAAqF,EAAlD7b,EAAQ2U,aAAa,2BAAiC3U,EAAQ6b,iBAC9HD,EAAetU,GAAStH,IAE1B7B,EAAOyK,OAAOhS,QAAQoJ,IACpBA,EAAQ6I,gBAAgB,6BAE1B+S,EAAehlB,QAAQoJ,IACrB6K,EAASqP,OAAOla,KAElB7B,EAAOyb,eACPzb,EAAOuY,QAAQvY,EAAO4L,UAAW,EACnC,GA0DA,SAAS+R,EAAiB3d,EAAQ0I,EAAOkV,GACvC,MAAMzhB,EAASF,KACTuE,OACJA,GACER,EACE6d,EAAqBrd,EAAOqd,mBAC5BC,EAAqBtd,EAAOsd,mBAClC,OAAID,KAAuBD,GAAUE,GAAsBF,GAAUzhB,EAAO4hB,WAAaD,IAC5D,YAAvBD,IACFnV,EAAMsV,kBACC,EAKb,CACA,SAASC,EAAavV,GACpB,MAAM1I,EAAS5E,KACTV,EAAWF,IACjB,IAAI8J,EAAIoE,EACJpE,EAAE4Z,gBAAe5Z,EAAIA,EAAE4Z,eAC3B,MAAM3U,EAAOvJ,EAAOkd,gBACpB,GAAe,gBAAX5Y,EAAE6Z,KAAwB,CAC5B,GAAuB,OAAnB5U,EAAK6U,WAAsB7U,EAAK6U,YAAc9Z,EAAE8Z,UAClD,OAEF7U,EAAK6U,UAAY9Z,EAAE8Z,SACrB,KAAsB,eAAX9Z,EAAE6Z,MAAoD,IAA3B7Z,EAAE+Z,cAAc3lB,SACpD6Q,EAAK+U,QAAUha,EAAE+Z,cAAc,GAAGE,YAEpC,GAAe,eAAXja,EAAE6Z,KAGJ,YADAR,EAAiB3d,EAAQsE,EAAGA,EAAE+Z,cAAc,GAAGG,OAGjD,MAAMhe,OACJA,EAAMie,QACNA,EAAOzR,QACPA,GACEhN,EACJ,IAAKgN,EAAS,OACd,IAAKxM,EAAOke,eAAmC,UAAlBpa,EAAEqa,YAAyB,OACxD,GAAI3e,EAAO8X,WAAatX,EAAOuX,+BAC7B,QAEG/X,EAAO8X,WAAatX,EAAO8N,SAAW9N,EAAOmL,MAChD3L,EAAO2Z,UAET,IAAIiF,EAAWta,EAAEpM,OACjB,GAAiC,YAA7BsI,EAAOqe,oBA9xEb,SAA0BhiB,EAAIqH,GAC5B,MAAM/H,EAASF,IACf,IAAI6iB,EAAU5a,EAAO2F,SAAShN,IACzBiiB,GAAW3iB,EAAO+F,iBAAmBgC,aAAkBhC,kBAE1D4c,EADiB,IAAI5a,EAAO9B,oBACToF,SAAS3K,GACvBiiB,IACHA,EAlBN,SAA8BjiB,EAAIkiB,GAEhC,MAAMC,EAAgB,CAACD,GACvB,KAAOC,EAActmB,OAAS,GAAG,CAC/B,MAAMumB,EAAiBD,EAAc5B,QACrC,GAAIvgB,IAAOoiB,EACT,OAAO,EAETD,EAAc7c,QAAQ8c,EAAezlB,YAAcylB,EAAend,WAAamd,EAAend,WAAWtI,SAAW,MAASylB,EAAe7c,iBAAmB6c,EAAe7c,mBAAqB,GACrM,CACF,CAQgB8c,CAAqBriB,EAAIqH,KAGvC,OAAO4a,CACT,CAoxESK,CAAiBP,EAAU5e,EAAOU,WAAY,OAErD,GAAI,UAAW4D,GAAiB,IAAZA,EAAE8a,MAAa,OACnC,GAAI,WAAY9a,GAAKA,EAAE+a,OAAS,EAAG,OACnC,GAAI9V,EAAK+V,WAAa/V,EAAKgW,QAAS,OAGpC,MAAMC,IAAyBhf,EAAOif,gBAA4C,KAA1Bjf,EAAOif,eAEzDC,EAAYpb,EAAEqb,aAAerb,EAAEqb,eAAiBrb,EAAEsS,KACpD4I,GAAwBlb,EAAEpM,QAAUoM,EAAEpM,OAAO4J,YAAc4d,IAC7Dd,EAAWc,EAAU,IAEvB,MAAME,EAAoBpf,EAAOof,kBAAoBpf,EAAOof,kBAAoB,IAAIpf,EAAOif,iBACrFI,KAAoBvb,EAAEpM,SAAUoM,EAAEpM,OAAO4J,YAG/C,GAAItB,EAAOsf,YAAcD,EA/E3B,SAAwB5d,EAAU8d,EAAO3kB,MAUvC,OATA,SAAS4kB,EAAcnjB,GACrB,IAAKA,GAAMA,IAAOrC,KAAiBqC,IAAOZ,IAAa,OAAO,KAC1DY,EAAGojB,eAAcpjB,EAAKA,EAAGojB,cAC7B,MAAMC,EAAQrjB,EAAGqN,QAAQjI,GACzB,OAAKie,GAAUrjB,EAAGsjB,YAGXD,GAASF,EAAcnjB,EAAGsjB,cAAclmB,MAFtC,IAGX,CACO+lB,CAAcD,EACvB,CAoE4CK,CAAeR,EAAmBhB,GAAYA,EAAS1U,QAAQ0V,IAEvG,YADA5f,EAAOqgB,YAAa,GAGtB,GAAI7f,EAAO8f,eACJ1B,EAAS1U,QAAQ1J,EAAO8f,cAAe,OAE9C7B,EAAQ8B,SAAWjc,EAAEka,MACrBC,EAAQ+B,SAAWlc,EAAEmc,MACrB,MAAM7C,EAASa,EAAQ8B,SACjBG,EAASjC,EAAQ+B,SAIvB,IAAK7C,EAAiB3d,EAAQsE,EAAGsZ,GAC/B,OAEF5lB,OAAOqU,OAAO9C,EAAM,CAClB+V,WAAW,EACXC,SAAS,EACToB,qBAAqB,EACrBC,iBAAaphB,EACbqhB,iBAAarhB,IAEfif,EAAQb,OAASA,EACjBa,EAAQiC,OAASA,EACjBnX,EAAKuX,eAAiBnkB,IACtBqD,EAAOqgB,YAAa,EACpBrgB,EAAO8L,aACP9L,EAAO+gB,oBAAiBvhB,EACpBgB,EAAOua,UAAY,IAAGxR,EAAKyX,oBAAqB,GACpD,IAAIhD,GAAiB,EACjBY,EAASvc,QAAQkH,EAAK0X,qBACxBjD,GAAiB,EACS,WAAtBY,EAAS3lB,WACXsQ,EAAK+V,WAAY,IAGjB5kB,EAAS3B,eAAiB2B,EAAS3B,cAAcsJ,QAAQkH,EAAK0X,oBAAsBvmB,EAAS3B,gBAAkB6lB,IAA+B,UAAlBta,EAAEqa,aAA6C,UAAlBra,EAAEqa,cAA4BC,EAASvc,QAAQkH,EAAK0X,qBAC/MvmB,EAAS3B,cAAcC,OAEzB,MAAMkoB,EAAuBlD,GAAkBhe,EAAOmhB,gBAAkB3gB,EAAO4gB,0BAC1E5gB,EAAO6gB,gCAAiCH,GAA0BtC,EAAS0C,mBAC9Ehd,EAAE0Z,iBAEAxd,EAAOga,UAAYha,EAAOga,SAASxN,SAAWhN,EAAOwa,UAAYxa,EAAO8X,YAActX,EAAO8N,SAC/FtO,EAAOwa,SAASyD,eAElBje,EAAOsJ,KAAK,aAAchF,EAC5B,CAEA,SAASid,EAAY7Y,GACnB,MAAMhO,EAAWF,IACXwF,EAAS5E,KACTmO,EAAOvJ,EAAOkd,iBACd1c,OACJA,EAAMie,QACNA,EACA9R,aAAcC,EAAGI,QACjBA,GACEhN,EACJ,IAAKgN,EAAS,OACd,IAAKxM,EAAOke,eAAuC,UAAtBhW,EAAMiW,YAAyB,OAC5D,IAOI6C,EAPAld,EAAIoE,EAER,GADIpE,EAAE4Z,gBAAe5Z,EAAIA,EAAE4Z,eACZ,gBAAX5Z,EAAE6Z,KAAwB,CAC5B,GAAqB,OAAjB5U,EAAK+U,QAAkB,OAE3B,GADWha,EAAE8Z,YACF7U,EAAK6U,UAAW,MAC7B,CAEA,GAAe,cAAX9Z,EAAE6Z,MAEJ,GADAqD,EAAc,IAAIld,EAAEmd,gBAAgB1M,KAAKiE,GAAKA,EAAEuF,aAAehV,EAAK+U,UAC/DkD,GAAeA,EAAYjD,aAAehV,EAAK+U,QAAS,YAE7DkD,EAAcld,EAEhB,IAAKiF,EAAK+V,UAIR,YAHI/V,EAAKsX,aAAetX,EAAKqX,aAC3B5gB,EAAOsJ,KAAK,oBAAqBhF,IAIrC,MAAMka,EAAQgD,EAAYhD,MACpBiC,EAAQe,EAAYf,MAC1B,GAAInc,EAAEod,wBAGJ,OAFAjD,EAAQb,OAASY,OACjBC,EAAQiC,OAASD,GAGnB,IAAKzgB,EAAOmhB,eAaV,OAZK7c,EAAEpM,OAAOmK,QAAQkH,EAAK0X,qBACzBjhB,EAAOqgB,YAAa,QAElB9W,EAAK+V,YACPtnB,OAAOqU,OAAOoS,EAAS,CACrBb,OAAQY,EACRkC,OAAQD,EACRF,SAAU/B,EACVgC,SAAUC,IAEZlX,EAAKuX,eAAiBnkB,MAI1B,GAAI6D,EAAOmhB,sBAAwBnhB,EAAOmL,KACxC,GAAI3L,EAAOkM,cAET,GAAIuU,EAAQhC,EAAQiC,QAAU1gB,EAAOI,WAAaJ,EAAO2T,gBAAkB8M,EAAQhC,EAAQiC,QAAU1gB,EAAOI,WAAaJ,EAAO+S,eAG9H,OAFAxJ,EAAK+V,WAAY,OACjB/V,EAAKgW,SAAU,OAGZ,IAAI3S,IAAQ4R,EAAQC,EAAQb,SAAW5d,EAAOI,WAAaJ,EAAO2T,gBAAkB6K,EAAQC,EAAQb,SAAW5d,EAAOI,WAAaJ,EAAO+S,gBAC/I,OACK,IAAKnG,IAAQ4R,EAAQC,EAAQb,QAAU5d,EAAOI,WAAaJ,EAAO2T,gBAAkB6K,EAAQC,EAAQb,QAAU5d,EAAOI,WAAaJ,EAAO+S,gBAC9I,MACF,CAKF,GAHIrY,EAAS3B,eAAiB2B,EAAS3B,cAAcsJ,QAAQkH,EAAK0X,oBAAsBvmB,EAAS3B,gBAAkBuL,EAAEpM,QAA4B,UAAlBoM,EAAEqa,aAC/HjkB,EAAS3B,cAAcC,OAErB0B,EAAS3B,eACPuL,EAAEpM,SAAWwC,EAAS3B,eAAiBuL,EAAEpM,OAAOmK,QAAQkH,EAAK0X,mBAG/D,OAFA1X,EAAKgW,SAAU,OACfvf,EAAOqgB,YAAa,GAIpB9W,EAAKoX,qBACP3gB,EAAOsJ,KAAK,YAAahF,GAE3Bma,EAAQmD,UAAYnD,EAAQ8B,SAC5B9B,EAAQoD,UAAYpD,EAAQ+B,SAC5B/B,EAAQ8B,SAAW/B,EACnBC,EAAQ+B,SAAWC,EACnB,MAAMqB,EAAQrD,EAAQ8B,SAAW9B,EAAQb,OACnCmE,EAAQtD,EAAQ+B,SAAW/B,EAAQiC,OACzC,GAAI1gB,EAAOQ,OAAOua,WAAa5Z,KAAK6gB,KAAKF,GAAS,EAAIC,GAAS,GAAK/hB,EAAOQ,OAAOua,UAAW,OAC7F,QAAgC,IAArBxR,EAAKqX,YAA6B,CAC3C,IAAIqB,EACAjiB,EAAOiM,gBAAkBwS,EAAQ+B,WAAa/B,EAAQiC,QAAU1gB,EAAOkM,cAAgBuS,EAAQ8B,WAAa9B,EAAQb,OACtHrU,EAAKqX,aAAc,EAGfkB,EAAQA,EAAQC,EAAQA,GAAS,KACnCE,EAA4D,IAA/C9gB,KAAK+gB,MAAM/gB,KAAK2D,IAAIid,GAAQ5gB,KAAK2D,IAAIgd,IAAgB3gB,KAAKK,GACvE+H,EAAKqX,YAAc5gB,EAAOiM,eAAiBgW,EAAazhB,EAAOyhB,WAAa,GAAKA,EAAazhB,EAAOyhB,WAG3G,CASA,GARI1Y,EAAKqX,aACP5gB,EAAOsJ,KAAK,oBAAqBhF,QAEH,IAArBiF,EAAKsX,cACVpC,EAAQ8B,WAAa9B,EAAQb,QAAUa,EAAQ+B,WAAa/B,EAAQiC,SACtEnX,EAAKsX,aAAc,IAGnBtX,EAAKqX,aAA0B,cAAXtc,EAAE6Z,MAAwB5U,EAAK4Y,gCAErD,YADA5Y,EAAK+V,WAAY,GAGnB,IAAK/V,EAAKsX,YACR,OAEF7gB,EAAOqgB,YAAa,GACf7f,EAAO8N,SAAWhK,EAAE8d,YACvB9d,EAAE0Z,iBAEAxd,EAAO6hB,2BAA6B7hB,EAAO8hB,QAC7Che,EAAEie,kBAEJ,IAAItF,EAAOjd,EAAOiM,eAAiB6V,EAAQC,EACvCS,EAAcxiB,EAAOiM,eAAiBwS,EAAQ8B,SAAW9B,EAAQmD,UAAYnD,EAAQ+B,SAAW/B,EAAQoD,UACxGrhB,EAAOiiB,iBACTxF,EAAO9b,KAAK2D,IAAImY,IAASrQ,EAAM,GAAK,GACpC4V,EAAcrhB,KAAK2D,IAAI0d,IAAgB5V,EAAM,GAAK,IAEpD6R,EAAQxB,KAAOA,EACfA,GAAQzc,EAAOkiB,WACX9V,IACFqQ,GAAQA,EACRuF,GAAeA,GAEjB,MAAMG,EAAuB3iB,EAAO4iB,iBACpC5iB,EAAO+gB,eAAiB9D,EAAO,EAAI,OAAS,OAC5Cjd,EAAO4iB,iBAAmBJ,EAAc,EAAI,OAAS,OACrD,MAAMK,EAAS7iB,EAAOQ,OAAOmL,OAASnL,EAAO8N,QACvCwU,EAA2C,SAA5B9iB,EAAO4iB,kBAA+B5iB,EAAO4Y,gBAA8C,SAA5B5Y,EAAO4iB,kBAA+B5iB,EAAO6Y,eACjI,IAAKtP,EAAKgW,QAAS,CAQjB,GAPIsD,GAAUC,GACZ9iB,EAAO2Z,QAAQ,CACbtB,UAAWrY,EAAO+gB,iBAGtBxX,EAAK4T,eAAiBnd,EAAOpD,eAC7BoD,EAAOgS,cAAc,GACjBhS,EAAO8X,UAAW,CACpB,MAAMiL,EAAM,IAAI5mB,OAAOhB,YAAY,gBAAiB,CAClD6nB,SAAS,EACTZ,YAAY,EACZa,OAAQ,CACNC,mBAAmB,KAGvBljB,EAAOU,UAAUyiB,cAAcJ,EACjC,CACAxZ,EAAK6Z,qBAAsB,GAEvB5iB,EAAO6iB,aAAyC,IAA1BrjB,EAAO4Y,iBAAqD,IAA1B5Y,EAAO6Y,gBACjE7Y,EAAOsjB,eAAc,GAEvBtjB,EAAOsJ,KAAK,kBAAmBhF,EACjC,CAGA,IADA,IAAI9I,MAAOyF,WACmB,IAA1BT,EAAO+iB,gBAA4Bha,EAAKgW,SAAWhW,EAAKyX,oBAAsB2B,IAAyB3iB,EAAO4iB,kBAAoBC,GAAUC,GAAgB3hB,KAAK2D,IAAImY,IAAS,EAUhL,OATAjlB,OAAOqU,OAAOoS,EAAS,CACrBb,OAAQY,EACRkC,OAAQD,EACRF,SAAU/B,EACVgC,SAAUC,EACVtD,eAAgB5T,EAAK4N,mBAEvB5N,EAAKia,eAAgB,OACrBja,EAAK4T,eAAiB5T,EAAK4N,kBAG7BnX,EAAOsJ,KAAK,aAAchF,GAC1BiF,EAAKgW,SAAU,EACfhW,EAAK4N,iBAAmB8F,EAAO1T,EAAK4T,eACpC,IAAIsG,GAAsB,EACtBC,EAAkBljB,EAAOkjB,gBAiD7B,GAhDIljB,EAAOmhB,sBACT+B,EAAkB,GAEhBzG,EAAO,GACL4F,GAAUC,GAA8BvZ,EAAKyX,oBAAsBzX,EAAK4N,kBAAoB3W,EAAO6N,eAAiBrO,EAAO+S,eAAiB/S,EAAOqN,gBAAgBrN,EAAOiL,YAAc,IAA+B,SAAzBzK,EAAOsK,eAA4B9K,EAAOyK,OAAO/R,OAAS8H,EAAOsK,eAAiB,EAAI9K,EAAOqN,gBAAgBrN,EAAOiL,YAAc,GAAKjL,EAAOQ,OAAOqN,aAAe,GAAK7N,EAAOQ,OAAOqN,aAAe7N,EAAO+S,iBAC7Y/S,EAAO2Z,QAAQ,CACbtB,UAAW,OACXjB,cAAc,EACdb,iBAAkB,IAGlBhN,EAAK4N,iBAAmBnX,EAAO+S,iBACjC0Q,GAAsB,EAClBjjB,EAAOmjB,aACTpa,EAAK4N,iBAAmBnX,EAAO+S,eAAiB,IAAM/S,EAAO+S,eAAiBxJ,EAAK4T,eAAiBF,IAASyG,KAGxGzG,EAAO,IACZ4F,GAAUC,GAA8BvZ,EAAKyX,oBAAsBzX,EAAK4N,kBAAoB3W,EAAO6N,eAAiBrO,EAAO2T,eAAiB3T,EAAOqN,gBAAgBrN,EAAOqN,gBAAgB3U,OAAS,GAAKsH,EAAOQ,OAAOqN,cAAyC,SAAzBrN,EAAOsK,eAA4B9K,EAAOyK,OAAO/R,OAAS8H,EAAOsK,eAAiB,EAAI9K,EAAOqN,gBAAgBrN,EAAOqN,gBAAgB3U,OAAS,GAAKsH,EAAOQ,OAAOqN,aAAe,GAAK7N,EAAO2T,iBACna3T,EAAO2Z,QAAQ,CACbtB,UAAW,OACXjB,cAAc,EACdb,iBAAkBvW,EAAOyK,OAAO/R,QAAmC,SAAzB8H,EAAOsK,cAA2B9K,EAAO+K,uBAAyB5J,KAAK6J,KAAK9M,WAAWsC,EAAOsK,cAAe,QAGvJvB,EAAK4N,iBAAmBnX,EAAO2T,iBACjC8P,GAAsB,EAClBjjB,EAAOmjB,aACTpa,EAAK4N,iBAAmBnX,EAAO2T,eAAiB,GAAK3T,EAAO2T,eAAiBpK,EAAK4T,eAAiBF,IAASyG,KAI9GD,IACFnf,EAAEod,yBAA0B,IAIzB1hB,EAAO4Y,gBAA4C,SAA1B5Y,EAAO+gB,gBAA6BxX,EAAK4N,iBAAmB5N,EAAK4T,iBAC7F5T,EAAK4N,iBAAmB5N,EAAK4T,iBAE1Bnd,EAAO6Y,gBAA4C,SAA1B7Y,EAAO+gB,gBAA6BxX,EAAK4N,iBAAmB5N,EAAK4T,iBAC7F5T,EAAK4N,iBAAmB5N,EAAK4T,gBAE1Bnd,EAAO6Y,gBAAmB7Y,EAAO4Y,iBACpCrP,EAAK4N,iBAAmB5N,EAAK4T,gBAI3B3c,EAAOua,UAAY,EAAG,CACxB,KAAI5Z,KAAK2D,IAAImY,GAAQzc,EAAOua,WAAaxR,EAAKyX,oBAW5C,YADAzX,EAAK4N,iBAAmB5N,EAAK4T,gBAT7B,IAAK5T,EAAKyX,mBAMR,OALAzX,EAAKyX,oBAAqB,EAC1BvC,EAAQb,OAASa,EAAQ8B,SACzB9B,EAAQiC,OAASjC,EAAQ+B,SACzBjX,EAAK4N,iBAAmB5N,EAAK4T,oBAC7BsB,EAAQxB,KAAOjd,EAAOiM,eAAiBwS,EAAQ8B,SAAW9B,EAAQb,OAASa,EAAQ+B,SAAW/B,EAAQiC,OAO5G,CACKlgB,EAAOojB,eAAgBpjB,EAAO8N,WAG/B9N,EAAOga,UAAYha,EAAOga,SAASxN,SAAWhN,EAAOwa,UAAYha,EAAO+Q,uBAC1EvR,EAAO4V,oBACP5V,EAAO0U,uBAELlU,EAAOga,UAAYha,EAAOga,SAASxN,SAAWhN,EAAOwa,UACvDxa,EAAOwa,SAAS+G,cAGlBvhB,EAAOwT,eAAejK,EAAK4N,kBAE3BnX,EAAOoX,aAAa7N,EAAK4N,kBAC3B,CAEA,SAAS0M,EAAWnb,GAClB,MAAM1I,EAAS5E,KACTmO,EAAOvJ,EAAOkd,gBACpB,IAEIsE,EAFAld,EAAIoE,EACJpE,EAAE4Z,gBAAe5Z,EAAIA,EAAE4Z,eAG3B,GADgC,aAAX5Z,EAAE6Z,MAAkC,gBAAX7Z,EAAE6Z,MAO9C,GADAqD,EAAc,IAAIld,EAAEmd,gBAAgB1M,KAAKiE,GAAKA,EAAEuF,aAAehV,EAAK+U,UAC/DkD,GAAeA,EAAYjD,aAAehV,EAAK+U,QAAS,WAN5C,CACjB,GAAqB,OAAjB/U,EAAK+U,QAAkB,OAC3B,GAAIha,EAAE8Z,YAAc7U,EAAK6U,UAAW,OACpCoD,EAAcld,CAChB,CAIA,GAAI,CAAC,gBAAiB,aAAc,eAAgB,eAAekD,SAASlD,EAAE6Z,MAAO,CAEnF,KADgB,CAAC,gBAAiB,eAAe3W,SAASlD,EAAE6Z,QAAUne,EAAO+E,QAAQsC,UAAYrH,EAAO+E,QAAQ8C,YAE9G,MAEJ,CACA0B,EAAK6U,UAAY,KACjB7U,EAAK+U,QAAU,KACf,MAAM9d,OACJA,EAAMie,QACNA,EACA9R,aAAcC,EAAGQ,WACjBA,EAAUJ,QACVA,GACEhN,EACJ,IAAKgN,EAAS,OACd,IAAKxM,EAAOke,eAAmC,UAAlBpa,EAAEqa,YAAyB,OAKxD,GAJIpV,EAAKoX,qBACP3gB,EAAOsJ,KAAK,WAAYhF,GAE1BiF,EAAKoX,qBAAsB,GACtBpX,EAAK+V,UAMR,OALI/V,EAAKgW,SAAW/e,EAAO6iB,YACzBrjB,EAAOsjB,eAAc,GAEvB/Z,EAAKgW,SAAU,OACfhW,EAAKsX,aAAc,GAKjBrgB,EAAO6iB,YAAc9Z,EAAKgW,SAAWhW,EAAK+V,aAAwC,IAA1Btf,EAAO4Y,iBAAqD,IAA1B5Y,EAAO6Y,iBACnG7Y,EAAOsjB,eAAc,GAIvB,MAAMQ,EAAennB,IACfonB,EAAWD,EAAeva,EAAKuX,eAGrC,GAAI9gB,EAAOqgB,WAAY,CACrB,MAAM2D,EAAW1f,EAAEsS,MAAQtS,EAAEqb,cAAgBrb,EAAEqb,eAC/C3f,EAAO2W,mBAAmBqN,GAAYA,EAAS,IAAM1f,EAAEpM,OAAQ8rB,GAC/DhkB,EAAOsJ,KAAK,YAAahF,GACrByf,EAAW,KAAOD,EAAeva,EAAK0a,cAAgB,KACxDjkB,EAAOsJ,KAAK,wBAAyBhF,EAEzC,CAKA,GAJAiF,EAAK0a,cAAgBtnB,IACrBF,EAAS,KACFuD,EAAOwI,YAAWxI,EAAOqgB,YAAa,MAExC9W,EAAK+V,YAAc/V,EAAKgW,UAAYvf,EAAO+gB,gBAAmC,IAAjBtC,EAAQxB,OAAe1T,EAAKia,eAAiBja,EAAK4N,mBAAqB5N,EAAK4T,iBAAmB5T,EAAKia,cAIpK,OAHAja,EAAK+V,WAAY,EACjB/V,EAAKgW,SAAU,OACfhW,EAAKsX,aAAc,GAMrB,IAAIqD,EAMJ,GATA3a,EAAK+V,WAAY,EACjB/V,EAAKgW,SAAU,EACfhW,EAAKsX,aAAc,EAGjBqD,EADE1jB,EAAOojB,aACIhX,EAAM5M,EAAOI,WAAaJ,EAAOI,WAEhCmJ,EAAK4N,iBAEjB3W,EAAO8N,QACT,OAEF,GAAI9N,EAAOga,UAAYha,EAAOga,SAASxN,QAIrC,YAHAhN,EAAOwa,SAASqJ,WAAW,CACzBK,eAMJ,MAAMC,EAAcD,IAAelkB,EAAO2T,iBAAmB3T,EAAOQ,OAAOmL,KAC3E,IAAIyY,EAAY,EACZ3T,EAAYzQ,EAAOqN,gBAAgB,GACvC,IAAK,IAAIrO,EAAI,EAAGA,EAAIoO,EAAW1U,OAAQsG,GAAKA,EAAIwB,EAAOkP,mBAAqB,EAAIlP,EAAOiP,eAAgB,CACrG,MAAMuK,EAAYhb,EAAIwB,EAAOkP,mBAAqB,EAAI,EAAIlP,EAAOiP,oBACxB,IAA9BrC,EAAWpO,EAAIgb,IACpBmK,GAAeD,GAAc9W,EAAWpO,IAAMklB,EAAa9W,EAAWpO,EAAIgb,MAC5EoK,EAAYplB,EACZyR,EAAYrD,EAAWpO,EAAIgb,GAAa5M,EAAWpO,KAE5CmlB,GAAeD,GAAc9W,EAAWpO,MACjDolB,EAAYplB,EACZyR,EAAYrD,EAAWA,EAAW1U,OAAS,GAAK0U,EAAWA,EAAW1U,OAAS,GAEnF,CACA,IAAI2rB,EAAmB,KACnBC,EAAkB,KAClB9jB,EAAOkL,SACL1L,EAAO4T,YACT0Q,EAAkB9jB,EAAOuM,SAAWvM,EAAOuM,QAAQC,SAAWhN,EAAO+M,QAAU/M,EAAO+M,QAAQtC,OAAO/R,OAAS,EAAIsH,EAAOyK,OAAO/R,OAAS,EAChIsH,EAAO6T,QAChBwQ,EAAmB,IAIvB,MAAME,GAASL,EAAa9W,EAAWgX,IAAc3T,EAC/CuJ,EAAYoK,EAAY5jB,EAAOkP,mBAAqB,EAAI,EAAIlP,EAAOiP,eACzE,GAAIsU,EAAWvjB,EAAOgkB,aAAc,CAElC,IAAKhkB,EAAOikB,WAEV,YADAzkB,EAAOuY,QAAQvY,EAAOiL,aAGM,SAA1BjL,EAAO+gB,iBACLwD,GAAS/jB,EAAOkkB,gBAAiB1kB,EAAOuY,QAAQ/X,EAAOkL,QAAU1L,EAAO6T,MAAQwQ,EAAmBD,EAAYpK,GAAgBha,EAAOuY,QAAQ6L,IAEtH,SAA1BpkB,EAAO+gB,iBACLwD,EAAQ,EAAI/jB,EAAOkkB,gBACrB1kB,EAAOuY,QAAQ6L,EAAYpK,GACE,OAApBsK,GAA4BC,EAAQ,GAAKpjB,KAAK2D,IAAIyf,GAAS/jB,EAAOkkB,gBAC3E1kB,EAAOuY,QAAQ+L,GAEftkB,EAAOuY,QAAQ6L,GAGrB,KAAO,CAEL,IAAK5jB,EAAOmkB,YAEV,YADA3kB,EAAOuY,QAAQvY,EAAOiL,aAGEjL,EAAO4kB,aAAetgB,EAAEpM,SAAW8H,EAAO4kB,WAAWC,QAAUvgB,EAAEpM,SAAW8H,EAAO4kB,WAAWE,QAQ7GxgB,EAAEpM,SAAW8H,EAAO4kB,WAAWC,OACxC7kB,EAAOuY,QAAQ6L,EAAYpK,GAE3Bha,EAAOuY,QAAQ6L,IATe,SAA1BpkB,EAAO+gB,gBACT/gB,EAAOuY,QAA6B,OAArB8L,EAA4BA,EAAmBD,EAAYpK,GAE9C,SAA1Bha,EAAO+gB,gBACT/gB,EAAOuY,QAA4B,OAApB+L,EAA2BA,EAAkBF,GAOlE,CACF,CAEA,SAASW,IACP,MAAM/kB,EAAS5E,MACToF,OACJA,EAAM3D,GACNA,GACEmD,EACJ,GAAInD,GAAyB,IAAnBA,EAAG6H,YAAmB,OAG5BlE,EAAOoO,aACT5O,EAAOglB,gBAIT,MAAMpM,eACJA,EAAcC,eACdA,EAAc1L,SACdA,GACEnN,EACE8M,EAAY9M,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAG1DhN,EAAO4Y,gBAAiB,EACxB5Y,EAAO6Y,gBAAiB,EACxB7Y,EAAO8L,aACP9L,EAAOsM,eACPtM,EAAO0U,sBACP,MAAMuQ,EAAgBnY,GAAatM,EAAOmL,OACZ,SAAzBnL,EAAOsK,eAA4BtK,EAAOsK,cAAgB,KAAM9K,EAAO6T,OAAU7T,EAAO4T,aAAgB5T,EAAOQ,OAAO6N,gBAAmB4W,EAGxIjlB,EAAOQ,OAAOmL,OAASmB,EACzB9M,EAAOqZ,YAAYrZ,EAAO4L,UAAW,GAAG,GAAO,GAE/C5L,EAAOuY,QAAQvY,EAAOiL,YAAa,GAAG,GAAO,GAL/CjL,EAAOuY,QAAQvY,EAAOyK,OAAO/R,OAAS,EAAG,GAAG,GAAO,GAQjDsH,EAAOklB,UAAYllB,EAAOklB,SAASC,SAAWnlB,EAAOklB,SAASE,SAChEzpB,aAAaqE,EAAOklB,SAASG,eAC7BrlB,EAAOklB,SAASG,cAAgB3pB,WAAW,KACrCsE,EAAOklB,UAAYllB,EAAOklB,SAASC,SAAWnlB,EAAOklB,SAASE,QAChEplB,EAAOklB,SAASI,UAEjB,MAGLtlB,EAAO6Y,eAAiBA,EACxB7Y,EAAO4Y,eAAiBA,EACpB5Y,EAAOQ,OAAO6Q,eAAiBlE,IAAanN,EAAOmN,UACrDnN,EAAOsR,eAEX,CAEA,SAASiU,EAAQjhB,GACf,MAAMtE,EAAS5E,KACV4E,EAAOgN,UACPhN,EAAOqgB,aACNrgB,EAAOQ,OAAOglB,eAAelhB,EAAE0Z,iBAC/Bhe,EAAOQ,OAAOilB,0BAA4BzlB,EAAO8X,YACnDxT,EAAEie,kBACFje,EAAEohB,6BAGR,CAEA,SAASC,IACP,MAAM3lB,EAAS5E,MACTsF,UACJA,EAASiM,aACTA,EAAYK,QACZA,GACEhN,EACJ,IAAKgN,EAAS,OAWd,IAAIsK,EAVJtX,EAAOyX,kBAAoBzX,EAAOI,UAC9BJ,EAAOiM,eACTjM,EAAOI,WAAaM,EAAU6C,WAE9BvD,EAAOI,WAAaM,EAAU2C,UAGP,IAArBrD,EAAOI,YAAiBJ,EAAOI,UAAY,GAC/CJ,EAAO4V,oBACP5V,EAAO0U,sBAEP,MAAMhB,EAAiB1T,EAAO2T,eAAiB3T,EAAO+S,eAEpDuE,EADqB,IAAnB5D,EACY,GAEC1T,EAAOI,UAAYJ,EAAO+S,gBAAkBW,EAEzD4D,IAAgBtX,EAAOkB,UACzBlB,EAAOwT,eAAe7G,GAAgB3M,EAAOI,UAAYJ,EAAOI,WAElEJ,EAAOsJ,KAAK,eAAgBtJ,EAAOI,WAAW,EAChD,CAEA,SAASwlB,EAAOthB,GACd,MAAMtE,EAAS5E,KACf4O,EAAqBhK,EAAQsE,EAAEpM,QAC3B8H,EAAOQ,OAAO8N,SAA2C,SAAhCtO,EAAOQ,OAAOsK,gBAA6B9K,EAAOQ,OAAOiU,YAGtFzU,EAAO6L,QACT,CAEA,SAASga,IACP,MAAM7lB,EAAS5E,KACX4E,EAAO8lB,gCACX9lB,EAAO8lB,+BAAgC,EACnC9lB,EAAOQ,OAAOmhB,sBAChB3hB,EAAOnD,GAAGnD,MAAMqsB,YAAc,QAElC,CAEA,MAAM5d,GAAS,CAACnI,EAAQyI,KACtB,MAAM/N,EAAWF,KACXgG,OACJA,EAAM3D,GACNA,EAAE6D,UACFA,EAAS0F,OACTA,GACEpG,EACEgmB,IAAYxlB,EAAO8hB,OACnB2D,EAAuB,OAAXxd,EAAkB,mBAAqB,sBACnDyd,EAAezd,EAChB5L,GAAoB,iBAAPA,IAGlBnC,EAASurB,GAAW,aAAcjmB,EAAO6lB,qBAAsB,CAC7DM,SAAS,EACTH,YAEFnpB,EAAGopB,GAAW,aAAcjmB,EAAOie,aAAc,CAC/CkI,SAAS,IAEXtpB,EAAGopB,GAAW,cAAejmB,EAAOie,aAAc,CAChDkI,SAAS,IAEXzrB,EAASurB,GAAW,YAAajmB,EAAOuhB,YAAa,CACnD4E,SAAS,EACTH,YAEFtrB,EAASurB,GAAW,cAAejmB,EAAOuhB,YAAa,CACrD4E,SAAS,EACTH,YAEFtrB,EAASurB,GAAW,WAAYjmB,EAAO6jB,WAAY,CACjDsC,SAAS,IAEXzrB,EAASurB,GAAW,YAAajmB,EAAO6jB,WAAY,CAClDsC,SAAS,IAEXzrB,EAASurB,GAAW,gBAAiBjmB,EAAO6jB,WAAY,CACtDsC,SAAS,IAEXzrB,EAASurB,GAAW,cAAejmB,EAAO6jB,WAAY,CACpDsC,SAAS,IAEXzrB,EAASurB,GAAW,aAAcjmB,EAAO6jB,WAAY,CACnDsC,SAAS,IAEXzrB,EAASurB,GAAW,eAAgBjmB,EAAO6jB,WAAY,CACrDsC,SAAS,IAEXzrB,EAASurB,GAAW,cAAejmB,EAAO6jB,WAAY,CACpDsC,SAAS,KAIP3lB,EAAOglB,eAAiBhlB,EAAOilB,2BACjC5oB,EAAGopB,GAAW,QAASjmB,EAAOulB,SAAS,GAErC/kB,EAAO8N,SACT5N,EAAUulB,GAAW,SAAUjmB,EAAO2lB,UAIpCnlB,EAAO4lB,qBACTpmB,EAAOkmB,GAAc9f,EAAOC,KAAOD,EAAOE,QAAU,0CAA4C,wBAAyBye,GAAU,GAEnI/kB,EAAOkmB,GAAc,iBAAkBnB,GAAU,GAInDloB,EAAGopB,GAAW,OAAQjmB,EAAO4lB,OAAQ,CACnCI,SAAS,MA4Bb,MAAMK,GAAgB,CAACrmB,EAAQQ,IACtBR,EAAOkL,MAAQ1K,EAAO0K,MAAQ1K,EAAO0K,KAAKC,KAAO,EAmO1D,IAIImb,GAAW,CACbC,MAAM,EACNlO,UAAW,aACXoK,gBAAgB,EAChB+D,sBAAuB,mBACvB3H,kBAAmB,UACnB1F,aAAc,EACd1Y,MAAO,IACP6N,SAAS,EACT8X,sBAAsB,EACtBK,gBAAgB,EAChBnE,QAAQ,EACRoE,gBAAgB,EAChBC,aAAc,SACd3Z,SAAS,EACTiU,kBAAmB,wDAEnBza,MAAO,KACPE,OAAQ,KAERqR,gCAAgC,EAEhCld,UAAW,KACX+rB,IAAK,KAEL/I,oBAAoB,EACpBC,mBAAoB,GAEpBrJ,YAAY,EAEZ7E,gBAAgB,EAEhBsH,kBAAkB,EAElBvH,OAAQ,QAIRf,iBAAapP,EACbqnB,gBAAiB,SAEjBhZ,aAAc,EACd/C,cAAe,EACf2E,eAAgB,EAChBC,mBAAoB,EACpBqK,oBAAoB,EACpB1L,gBAAgB,EAChBsC,sBAAsB,EACtBpD,mBAAoB,EAEpBE,kBAAmB,EAEnB0I,qBAAqB,EACrBnF,0BAA0B,EAC1BhB,iBAAiB,EAEjBqB,eAAe,EAEfrC,cAAc,EAEd0T,WAAY,EACZT,WAAY,GACZvD,eAAe,EACfiG,aAAa,EACbF,YAAY,EACZC,gBAAiB,GACjBF,aAAc,IACdZ,cAAc,EACdzC,gBAAgB,EAChBpG,UAAW,EACXsH,0BAA0B,EAC1BjB,0BAA0B,EAC1BC,+BAA+B,EAC/BM,qBAAqB,EAErBmF,mBAAmB,EAEnBnD,YAAY,EACZD,gBAAiB,IAEjBnS,qBAAqB,EAErB8R,YAAY,EAEZmC,eAAe,EACfC,0BAA0B,EAC1BxO,qBAAqB,EAErBtL,MAAM,EACN4P,oBAAoB,EACpBW,qBAAsB,EACtBjC,qBAAqB,EAErBvO,QAAQ,EAERmN,gBAAgB,EAChBD,gBAAgB,EAChB0H,aAAc,KAEdR,WAAW,EACXL,eAAgB,oBAChBG,kBAAmB,KAEnBmH,kBAAkB,EAClBnV,wBAAyB,GAEzBF,uBAAwB,UAExBtH,WAAY,eACZoR,gBAAiB,qBACjBhG,iBAAkB,sBAClBnC,kBAAmB,uBACnBC,uBAAwB,6BACxBmC,eAAgB,oBAChBC,eAAgB,oBAChBsR,aAAc,iBACd1c,mBAAoB,wBACpBO,oBAAqB,EAErB6L,oBAAoB,EAEpBuQ,cAAc,GAGhB,SAASC,GAAmB1mB,EAAQ2mB,GAClC,OAAO,SAAsBrvB,EAAM,CAAC,GAClC,MAAMsvB,EAAkBpvB,OAAOK,KAAKP,GAAK,GACnCuvB,EAAevvB,EAAIsvB,GACG,iBAAjBC,GAA8C,OAAjBA,IAIR,IAA5B7mB,EAAO4mB,KACT5mB,EAAO4mB,GAAmB,CACxBpa,SAAS,IAGW,eAApBoa,GAAoC5mB,EAAO4mB,IAAoB5mB,EAAO4mB,GAAiBpa,UAAYxM,EAAO4mB,GAAiBtC,SAAWtkB,EAAO4mB,GAAiBvC,SAChKrkB,EAAO4mB,GAAiBE,MAAO,GAE7B,CAAC,aAAc,aAAa9uB,QAAQ4uB,IAAoB,GAAK5mB,EAAO4mB,IAAoB5mB,EAAO4mB,GAAiBpa,UAAYxM,EAAO4mB,GAAiBvqB,KACtJ2D,EAAO4mB,GAAiBE,MAAO,GAE3BF,KAAmB5mB,GAAU,YAAa6mB,GAIT,iBAA5B7mB,EAAO4mB,IAAmC,YAAa5mB,EAAO4mB,KACvE5mB,EAAO4mB,GAAiBpa,SAAU,GAE/BxM,EAAO4mB,KAAkB5mB,EAAO4mB,GAAmB,CACtDpa,SAAS,IAEXnO,EAASsoB,EAAkBrvB,IATzB+G,EAASsoB,EAAkBrvB,IAf3B+G,EAASsoB,EAAkBrvB,EAyB/B,CACF,CAGA,MAAMyvB,GAAa,CACjBtf,gBACA4D,SACAzL,YACAonB,WA14De,CACfxV,cAtEF,SAAuBzR,EAAU8W,GAC/B,MAAMrX,EAAS5E,KACV4E,EAAOQ,OAAO8N,UACjBtO,EAAOU,UAAUhH,MAAM+tB,mBAAqB,GAAGlnB,MAC/CP,EAAOU,UAAUhH,MAAMguB,gBAA+B,IAAbnnB,EAAiB,MAAQ,IAEpEP,EAAOsJ,KAAK,gBAAiB/I,EAAU8W,EACzC,EAgEEyB,gBAnCF,SAAyBnB,GAAe,EAAMU,GAC5C,MAAMrY,EAAS5E,MACToF,OACJA,GACER,EACAQ,EAAO8N,UACP9N,EAAOiU,YACTzU,EAAO6R,mBAETuG,EAAe,CACbpY,SACA2X,eACAU,YACAC,KAAM,UAEV,EAqBES,cAnBF,SAAuBpB,GAAe,EAAMU,GAC1C,MAAMrY,EAAS5E,MACToF,OACJA,GACER,EACJA,EAAO8X,WAAY,EACftX,EAAO8N,UACXtO,EAAOgS,cAAc,GACrBoG,EAAe,CACbpY,SACA2X,eACAU,YACAC,KAAM,QAEV,GA64DEzJ,QACAlD,OACA0X,WAhpCe,CACfC,cAjCF,SAAuBqE,GACrB,MAAM3nB,EAAS5E,KACf,IAAK4E,EAAOQ,OAAOke,eAAiB1e,EAAOQ,OAAO6Q,eAAiBrR,EAAO4nB,UAAY5nB,EAAOQ,OAAO8N,QAAS,OAC7G,MAAMzR,EAAyC,cAApCmD,EAAOQ,OAAOqe,kBAAoC7e,EAAOnD,GAAKmD,EAAOU,UAC5EV,EAAOmK,YACTnK,EAAO6c,qBAAsB,GAE/BhgB,EAAGnD,MAAMmuB,OAAS,OAClBhrB,EAAGnD,MAAMmuB,OAASF,EAAS,WAAa,OACpC3nB,EAAOmK,WACTtO,sBAAsB,KACpBmE,EAAO6c,qBAAsB,GAGnC,EAoBEiL,gBAlBF,WACE,MAAM9nB,EAAS5E,KACX4E,EAAOQ,OAAO6Q,eAAiBrR,EAAO4nB,UAAY5nB,EAAOQ,OAAO8N,UAGhEtO,EAAOmK,YACTnK,EAAO6c,qBAAsB,GAE/B7c,EAA2C,cAApCA,EAAOQ,OAAOqe,kBAAoC,KAAO,aAAanlB,MAAMmuB,OAAS,GACxF7nB,EAAOmK,WACTtO,sBAAsB,KACpBmE,EAAO6c,qBAAsB,IAGnC,GAmpCE1U,OAnZa,CACb4f,aArBF,WACE,MAAM/nB,EAAS5E,MACToF,OACJA,GACER,EACJA,EAAOie,aAAeA,EAAa+J,KAAKhoB,GACxCA,EAAOuhB,YAAcA,EAAYyG,KAAKhoB,GACtCA,EAAO6jB,WAAaA,EAAWmE,KAAKhoB,GACpCA,EAAO6lB,qBAAuBA,EAAqBmC,KAAKhoB,GACpDQ,EAAO8N,UACTtO,EAAO2lB,SAAWA,EAASqC,KAAKhoB,IAElCA,EAAOulB,QAAUA,EAAQyC,KAAKhoB,GAC9BA,EAAO4lB,OAASA,EAAOoC,KAAKhoB,GAC5BmI,GAAOnI,EAAQ,KACjB,EAOEioB,aANF,WAEE9f,GADe/M,KACA,MACjB,GAqZEwT,YAhRgB,CAChBoW,cA7HF,WACE,MAAMhlB,EAAS5E,MACTwQ,UACJA,EAAS6K,YACTA,EAAWjW,OACXA,EAAM3D,GACNA,GACEmD,EACE4O,EAAcpO,EAAOoO,YAC3B,IAAKA,GAAeA,GAAmD,IAApC5W,OAAOK,KAAKuW,GAAalW,OAAc,OAC1E,MAAMgC,EAAWF,IAGXqsB,EAA6C,WAA3BrmB,EAAOqmB,iBAAiCrmB,EAAOqmB,gBAA2C,YAAzBrmB,EAAOqmB,gBAC1FqB,EAAsB,CAAC,SAAU,aAAa1gB,SAAShH,EAAOqmB,mBAAqBrmB,EAAOqmB,gBAAkB7mB,EAAOnD,GAAKnC,EAASxB,cAAcsH,EAAOqmB,iBACtJsB,EAAanoB,EAAOooB,cAAcxZ,EAAaiY,EAAiBqB,GACtE,IAAKC,GAAcnoB,EAAOqoB,oBAAsBF,EAAY,OAC5D,MACMG,GADuBH,KAAcvZ,EAAcA,EAAYuZ,QAAc3oB,IAClCQ,EAAOuoB,eAClDC,EAAcnC,GAAcrmB,EAAQQ,GACpCioB,EAAapC,GAAcrmB,EAAQsoB,GACnCI,EAAgB1oB,EAAOQ,OAAO6iB,WAC9BsF,EAAeL,EAAiBjF,WAChCuF,EAAapoB,EAAOwM,QACtBwb,IAAgBC,GAClB5rB,EAAG+F,UAAUkH,OAAO,GAAGtJ,EAAOkR,6BAA8B,GAAGlR,EAAOkR,qCACtE1R,EAAO6oB,yBACGL,GAAeC,IACzB5rB,EAAG+F,UAAUC,IAAI,GAAGrC,EAAOkR,+BACvB4W,EAAiBpd,KAAKiR,MAAuC,WAA/BmM,EAAiBpd,KAAKiR,OAAsBmM,EAAiBpd,KAAKiR,MAA6B,WAArB3b,EAAO0K,KAAKiR,OACtHtf,EAAG+F,UAAUC,IAAI,GAAGrC,EAAOkR,qCAE7B1R,EAAO6oB,wBAELH,IAAkBC,EACpB3oB,EAAO8nB,mBACGY,GAAiBC,GAC3B3oB,EAAOsjB,gBAIT,CAAC,aAAc,aAAc,aAAa7qB,QAAQmL,IAChD,QAAsC,IAA3B0kB,EAAiB1kB,GAAuB,OACnD,MAAMklB,EAAmBtoB,EAAOoD,IAASpD,EAAOoD,GAAMoJ,QAChD+b,EAAkBT,EAAiB1kB,IAAS0kB,EAAiB1kB,GAAMoJ,QACrE8b,IAAqBC,GACvB/oB,EAAO4D,GAAMolB,WAEVF,GAAoBC,GACvB/oB,EAAO4D,GAAMqlB,WAGjB,MAAMC,EAAmBZ,EAAiBjQ,WAAaiQ,EAAiBjQ,YAAc7X,EAAO6X,UACvF8Q,EAAc3oB,EAAOmL,OAAS2c,EAAiBxd,gBAAkBtK,EAAOsK,eAAiBoe,GACzFE,EAAU5oB,EAAOmL,KACnBud,GAAoBzS,GACtBzW,EAAOqpB,kBAETxqB,EAASmB,EAAOQ,OAAQ8nB,GACxB,MAAMgB,EAAYtpB,EAAOQ,OAAOwM,QAC1Buc,EAAUvpB,EAAOQ,OAAOmL,KAC9B3T,OAAOqU,OAAOrM,EAAQ,CACpBmhB,eAAgBnhB,EAAOQ,OAAO2gB,eAC9BvI,eAAgB5Y,EAAOQ,OAAOoY,eAC9BC,eAAgB7Y,EAAOQ,OAAOqY,iBAE5B+P,IAAeU,EACjBtpB,EAAOgpB,WACGJ,GAAcU,GACxBtpB,EAAOipB,SAETjpB,EAAOqoB,kBAAoBF,EAC3BnoB,EAAOsJ,KAAK,oBAAqBgf,GAC7B7R,IACE0S,GACFnpB,EAAOwd,cACPxd,EAAOsb,WAAW1P,GAClB5L,EAAOsM,iBACG8c,GAAWG,GACrBvpB,EAAOsb,WAAW1P,GAClB5L,EAAOsM,gBACE8c,IAAYG,GACrBvpB,EAAOwd,eAGXxd,EAAOsJ,KAAK,aAAcgf,EAC5B,EAwCEF,cAtCF,SAAuBxZ,EAAamR,EAAO,SAAUyJ,GACnD,IAAK5a,GAAwB,cAATmR,IAAyByJ,EAAa,OAC1D,IAAIrB,GAAa,EACjB,MAAMhsB,EAASF,IACTwtB,EAAyB,WAAT1J,EAAoB5jB,EAAOutB,YAAcF,EAAYxd,aACrE2d,EAAS3xB,OAAOK,KAAKuW,GAAapR,IAAIosB,IAC1C,GAAqB,iBAAVA,GAA6C,IAAvBA,EAAMpxB,QAAQ,KAAY,CACzD,MAAMqxB,EAAW3rB,WAAW0rB,EAAME,OAAO,IAEzC,MAAO,CACLC,MAFYN,EAAgBI,EAG5BD,QAEJ,CACA,MAAO,CACLG,MAAOH,EACPA,WAGJD,EAAOK,KAAK,CAACvsB,EAAGwsB,IAAM9d,SAAS1O,EAAEssB,MAAO,IAAM5d,SAAS8d,EAAEF,MAAO,KAChE,IAAK,IAAI/qB,EAAI,EAAGA,EAAI2qB,EAAOjxB,OAAQsG,GAAK,EAAG,CACzC,MAAM4qB,MACJA,EAAKG,MACLA,GACEJ,EAAO3qB,GACE,WAAT+gB,EACE5jB,EAAOP,WAAW,eAAemuB,QAAY1nB,UAC/C8lB,EAAayB,GAENG,GAASP,EAAYzd,cAC9Boc,EAAayB,EAEjB,CACA,OAAOzB,GAAc,KACvB,GAmRE7W,cA5KoB,CACpBA,cA9BF,WACE,MAAMtR,EAAS5E,MAEbwsB,SAAUsC,EAAS1pB,OACnBA,GACER,GACEuN,mBACJA,GACE/M,EACJ,GAAI+M,EAAoB,CACtB,MAAM6G,EAAiBpU,EAAOyK,OAAO/R,OAAS,EACxCyxB,EAAqBnqB,EAAOoN,WAAWgH,GAAkBpU,EAAOqN,gBAAgB+G,GAAuC,EAArB7G,EACxGvN,EAAO4nB,SAAW5nB,EAAOwE,KAAO2lB,CAClC,MACEnqB,EAAO4nB,SAAsC,IAA3B5nB,EAAOmN,SAASzU,QAEN,IAA1B8H,EAAOoY,iBACT5Y,EAAO4Y,gBAAkB5Y,EAAO4nB,WAEJ,IAA1BpnB,EAAOqY,iBACT7Y,EAAO6Y,gBAAkB7Y,EAAO4nB,UAE9BsC,GAAaA,IAAclqB,EAAO4nB,WACpC5nB,EAAO6T,OAAQ,GAEbqW,IAAclqB,EAAO4nB,UACvB5nB,EAAOsJ,KAAKtJ,EAAO4nB,SAAW,OAAS,SAE3C,GA8KEvrB,QA/MY,CACZ+tB,WAhDF,WACE,MAAMpqB,EAAS5E,MACTivB,WACJA,EAAU7pB,OACVA,EAAMoM,IACNA,EAAG/P,GACHA,EAAEuJ,OACFA,GACEpG,EAEEsqB,EAzBR,SAAwBC,EAASC,GAC/B,MAAMC,EAAgB,GAYtB,OAXAF,EAAQ9xB,QAAQiyB,IACM,iBAATA,EACT1yB,OAAOK,KAAKqyB,GAAMjyB,QAAQ4xB,IACpBK,EAAKL,IACPI,EAActoB,KAAKqoB,EAASH,KAGP,iBAATK,GAChBD,EAActoB,KAAKqoB,EAASE,KAGzBD,CACT,CAWmBE,CAAe,CAAC,cAAenqB,EAAO6X,UAAW,CAChE,YAAarY,EAAOQ,OAAOga,UAAYha,EAAOga,SAASxN,SACtD,CACD4d,WAAcpqB,EAAOiU,YACpB,CACD7H,IAAOA,GACN,CACD1B,KAAQ1K,EAAO0K,MAAQ1K,EAAO0K,KAAKC,KAAO,GACzC,CACD,cAAe3K,EAAO0K,MAAQ1K,EAAO0K,KAAKC,KAAO,GAA0B,WAArB3K,EAAO0K,KAAKiR,MACjE,CACD7V,QAAWF,EAAOE,SACjB,CACDD,IAAOD,EAAOC,KACb,CACD,WAAY7F,EAAO8N,SAClB,CACDuc,SAAYrqB,EAAO8N,SAAW9N,EAAO6N,gBACpC,CACD,iBAAkB7N,EAAO+Q,sBACvB/Q,EAAOkR,wBACX2Y,EAAWloB,QAAQmoB,GACnBztB,EAAG+F,UAAUC,OAAOwnB,GACpBrqB,EAAO6oB,sBACT,EAeEiC,cAbF,WACE,MACMjuB,GACJA,EAAEwtB,WACFA,GAHajvB,KAKVyB,GAAoB,iBAAPA,IAClBA,EAAG+F,UAAUkH,UAAUugB,GANRjvB,KAORytB,uBACT,IAmNMkC,GAAmB,CAAC,EAC1B,MAAMC,GACJ,WAAAjzB,IAAe+G,GACb,IAAIjC,EACA2D,EACgB,IAAhB1B,EAAKpG,QAAgBoG,EAAK,GAAG/G,aAAwE,WAAzDC,OAAOsG,UAAUN,SAASO,KAAKO,EAAK,IAAIN,MAAM,GAAI,GAChGgC,EAAS1B,EAAK,IAEbjC,EAAI2D,GAAU1B,EAEZ0B,IAAQA,EAAS,CAAC,GACvBA,EAAS3B,EAAS,CAAC,EAAG2B,GAClB3D,IAAO2D,EAAO3D,KAAI2D,EAAO3D,GAAKA,GAClC,MAAMnC,EAAWF,IACjB,GAAIgG,EAAO3D,IAA2B,iBAAd2D,EAAO3D,IAAmBnC,EAASvB,iBAAiBqH,EAAO3D,IAAInE,OAAS,EAAG,CACjG,MAAMuyB,EAAU,GAQhB,OAPAvwB,EAASvB,iBAAiBqH,EAAO3D,IAAIpE,QAAQ+wB,IAC3C,MAAM0B,EAAYrsB,EAAS,CAAC,EAAG2B,EAAQ,CACrC3D,GAAI2sB,IAENyB,EAAQ9oB,KAAK,IAAI6oB,GAAOE,MAGnBD,CACT,CAGA,MAAMjrB,EAAS5E,KACf4E,EAAON,YAAa,EACpBM,EAAOwF,QAAUE,IACjB1F,EAAOoG,OAASJ,EAAU,CACxBnL,UAAW2F,EAAO3F,YAEpBmF,EAAO+E,QAAUoC,IACjBnH,EAAOuI,gBAAkB,CAAC,EAC1BvI,EAAOiJ,mBAAqB,GAC5BjJ,EAAOmrB,QAAU,IAAInrB,EAAOorB,aACxB5qB,EAAO2qB,SAAWroB,MAAMC,QAAQvC,EAAO2qB,UACzC3qB,EAAO2qB,QAAQ1yB,QAAQ4yB,IACF,mBAARA,GAAsBrrB,EAAOmrB,QAAQ3yB,QAAQ6yB,GAAO,GAC7DrrB,EAAOmrB,QAAQhpB,KAAKkpB,KAI1B,MAAMlE,EAAmB,CAAC,EAC1BnnB,EAAOmrB,QAAQ1yB,QAAQ4yB,IACrBA,EAAI,CACF7qB,SACAR,SACAsrB,aAAcpE,GAAmB1mB,EAAQ2mB,GACzCjf,GAAIlI,EAAOkI,GAAG8f,KAAKhoB,GACnB2I,KAAM3I,EAAO2I,KAAKqf,KAAKhoB,GACvB6I,IAAK7I,EAAO6I,IAAImf,KAAKhoB,GACrBsJ,KAAMtJ,EAAOsJ,KAAK0e,KAAKhoB,OAK3B,MAAMurB,EAAe1sB,EAAS,CAAC,EAAGynB,GAAUa,GAqG5C,OAlGAnnB,EAAOQ,OAAS3B,EAAS,CAAC,EAAG0sB,EAAcR,GAAkBvqB,GAC7DR,EAAOuoB,eAAiB1pB,EAAS,CAAC,EAAGmB,EAAOQ,QAC5CR,EAAOwrB,aAAe3sB,EAAS,CAAC,EAAG2B,GAG/BR,EAAOQ,QAAUR,EAAOQ,OAAO0H,IACjClQ,OAAOK,KAAK2H,EAAOQ,OAAO0H,IAAIzP,QAAQgzB,IACpCzrB,EAAOkI,GAAGujB,EAAWzrB,EAAOQ,OAAO0H,GAAGujB,MAGtCzrB,EAAOQ,QAAUR,EAAOQ,OAAOwI,OACjChJ,EAAOgJ,MAAMhJ,EAAOQ,OAAOwI,OAI7BhR,OAAOqU,OAAOrM,EAAQ,CACpBgN,QAAShN,EAAOQ,OAAOwM,QACvBnQ,KAEAwtB,WAAY,GAEZ5f,OAAQ,GACR2C,WAAY,GACZD,SAAU,GACVE,gBAAiB,GAEjBpB,aAAY,IACyB,eAA5BjM,EAAOQ,OAAO6X,UAEvBnM,WAAU,IAC2B,aAA5BlM,EAAOQ,OAAO6X,UAGvBpN,YAAa,EACbW,UAAW,EAEXgI,aAAa,EACbC,OAAO,EAEPzT,UAAW,EACXqX,kBAAmB,EACnBvW,SAAU,EACVwqB,SAAU,EACV5T,WAAW,EACX,qBAAArF,GAGE,OAAOtR,KAAKwqB,MAAMvwB,KAAKgF,UAAY,GAAK,IAAM,GAAK,EACrD,EAEAwY,eAAgB5Y,EAAOQ,OAAOoY,eAC9BC,eAAgB7Y,EAAOQ,OAAOqY,eAE9BqE,gBAAiB,CACfoC,eAAW9f,EACX+f,aAAS/f,EACTmhB,yBAAqBnhB,EACrBshB,oBAAgBthB,EAChBohB,iBAAaphB,EACb2X,sBAAkB3X,EAClB2d,oBAAgB3d,EAChBwhB,wBAAoBxhB,EAEpByhB,kBAAmBjhB,EAAOQ,OAAOygB,kBAEjCgD,cAAe,EACf2H,kBAAcpsB,EAEdqsB,WAAY,GACZzI,yBAAqB5jB,EACrBqhB,iBAAarhB,EACb4e,UAAW,KACXE,QAAS,MAGX+B,YAAY,EAEZc,eAAgBnhB,EAAOQ,OAAO2gB,eAC9B1C,QAAS,CACPb,OAAQ,EACR8C,OAAQ,EACRH,SAAU,EACVC,SAAU,EACVvD,KAAM,GAGR6O,aAAc,GACdC,aAAc,IAEhB/rB,EAAOsJ,KAAK,WAGRtJ,EAAOQ,OAAO+lB,MAChBvmB,EAAOumB,OAKFvmB,CACT,CACA,iBAAAyM,CAAkBuf,GAChB,OAAI5wB,KAAK6Q,eACA+f,EAGF,CACLxlB,MAAS,SACT,aAAc,cACd,iBAAkB,eAClB,cAAe,aACf,eAAgB,gBAChB,eAAgB,cAChB,gBAAiB,iBACjB0H,YAAe,gBACf8d,EACJ,CACA,aAAA3Q,CAAcxZ,GACZ,MAAM6K,SACJA,EAAQlM,OACRA,GACEpF,KAEE+Y,EAAkBtQ,EADT9B,EAAgB2K,EAAU,IAAIlM,EAAO4J,4BACR,IAC5C,OAAOvG,EAAahC,GAAWsS,CACjC,CACA,mBAAAjC,CAAoB/I,GAClB,OAAO/N,KAAKigB,cAAcjgB,KAAKqP,OAAOsK,KAAKlT,GAA6D,EAAlDA,EAAQ2U,aAAa,6BAAmCrN,GAChH,CACA,qBAAA+R,CAAsB/R,GAQpB,OAPI/N,KAAK8P,MAAQ9P,KAAKoF,OAAO0K,MAAQ9P,KAAKoF,OAAO0K,KAAKC,KAAO,IAC7B,WAA1B/P,KAAKoF,OAAO0K,KAAKiR,KACnBhT,EAAQhI,KAAK8N,MAAM9F,EAAQ/N,KAAKoF,OAAO0K,KAAKC,MACT,QAA1B/P,KAAKoF,OAAO0K,KAAKiR,OAC1BhT,GAAgBhI,KAAK6J,KAAK5P,KAAKqP,OAAO/R,OAAS0C,KAAKoF,OAAO0K,KAAKC,QAG7DhC,CACT,CACA,YAAAsS,GACE,MACM/O,SACJA,EAAQlM,OACRA,GAHapF,UAKRqP,OAAS1I,EAAgB2K,EAAU,IAAIlM,EAAO4J,2BACvD,CACA,MAAA6e,GACE,MAAMjpB,EAAS5E,KACX4E,EAAOgN,UACXhN,EAAOgN,SAAU,EACbhN,EAAOQ,OAAO6iB,YAChBrjB,EAAOsjB,gBAETtjB,EAAOsJ,KAAK,UACd,CACA,OAAA0f,GACE,MAAMhpB,EAAS5E,KACV4E,EAAOgN,UACZhN,EAAOgN,SAAU,EACbhN,EAAOQ,OAAO6iB,YAChBrjB,EAAO8nB,kBAET9nB,EAAOsJ,KAAK,WACd,CACA,WAAA2iB,CAAY/qB,EAAUT,GACpB,MAAMT,EAAS5E,KACf8F,EAAWC,KAAKE,IAAIF,KAAKC,IAAIF,EAAU,GAAI,GAC3C,MAAMG,EAAMrB,EAAO+S,eAEbhS,GADMf,EAAO2T,eACItS,GAAOH,EAAWG,EACzCrB,EAAO0X,YAAY3W,OAA0B,IAAVN,EAAwB,EAAIA,GAC/DT,EAAO4V,oBACP5V,EAAO0U,qBACT,CACA,oBAAAmU,GACE,MAAM7oB,EAAS5E,KACf,IAAK4E,EAAOQ,OAAOymB,eAAiBjnB,EAAOnD,GAAI,OAC/C,MAAMqvB,EAAMlsB,EAAOnD,GAAG+M,UAAUrN,MAAM,KAAKjE,OAAOsR,GACT,IAAhCA,EAAUpR,QAAQ,WAA+E,IAA5DoR,EAAUpR,QAAQwH,EAAOQ,OAAOkR,yBAE9E1R,EAAOsJ,KAAK,oBAAqB4iB,EAAIvuB,KAAK,KAC5C,CACA,eAAAwuB,CAAgBtqB,GACd,MAAM7B,EAAS5E,KACf,OAAI4E,EAAOwI,UAAkB,GACtB3G,EAAQ+H,UAAUrN,MAAM,KAAKjE,OAAOsR,GACI,IAAtCA,EAAUpR,QAAQ,iBAAyE,IAAhDoR,EAAUpR,QAAQwH,EAAOQ,OAAO4J,aACjFzM,KAAK,IACV,CACA,iBAAAgY,GACE,MAAM3V,EAAS5E,KACf,IAAK4E,EAAOQ,OAAOymB,eAAiBjnB,EAAOnD,GAAI,OAC/C,MAAMuvB,EAAU,GAChBpsB,EAAOyK,OAAOhS,QAAQoJ,IACpB,MAAMwoB,EAAarqB,EAAOmsB,gBAAgBtqB,GAC1CuqB,EAAQjqB,KAAK,CACXN,UACAwoB,eAEFrqB,EAAOsJ,KAAK,cAAezH,EAASwoB,KAEtCrqB,EAAOsJ,KAAK,gBAAiB8iB,EAC/B,CACA,oBAAArhB,CAAqBshB,EAAO,UAAWC,GAAQ,GAC7C,MACM9rB,OACJA,EAAMiK,OACNA,EAAM2C,WACNA,EAAUC,gBACVA,EACA7I,KAAMoJ,EAAU3C,YAChBA,GAPa7P,KASf,IAAImxB,EAAM,EACV,GAAoC,iBAAzB/rB,EAAOsK,cAA4B,OAAOtK,EAAOsK,cAC5D,GAAItK,EAAO6N,eAAgB,CACzB,IACIme,EADAhe,EAAY/D,EAAOQ,GAAe9J,KAAK6J,KAAKP,EAAOQ,GAAauE,iBAAmB,EAEvF,IAAK,IAAIxQ,EAAIiM,EAAc,EAAGjM,EAAIyL,EAAO/R,OAAQsG,GAAK,EAChDyL,EAAOzL,KAAOwtB,IAChBhe,GAAarN,KAAK6J,KAAKP,EAAOzL,GAAGwQ,iBACjC+c,GAAO,EACH/d,EAAYZ,IAAY4e,GAAY,IAG5C,IAAK,IAAIxtB,EAAIiM,EAAc,EAAGjM,GAAK,EAAGA,GAAK,EACrCyL,EAAOzL,KAAOwtB,IAChBhe,GAAa/D,EAAOzL,GAAGwQ,gBACvB+c,GAAO,EACH/d,EAAYZ,IAAY4e,GAAY,GAG9C,MAEE,GAAa,YAATH,EACF,IAAK,IAAIrtB,EAAIiM,EAAc,EAAGjM,EAAIyL,EAAO/R,OAAQsG,GAAK,EAAG,EACnCstB,EAAQlf,EAAWpO,GAAKqO,EAAgBrO,GAAKoO,EAAWnC,GAAe2C,EAAaR,EAAWpO,GAAKoO,EAAWnC,GAAe2C,KAEhJ2e,GAAO,EAEX,MAGA,IAAK,IAAIvtB,EAAIiM,EAAc,EAAGjM,GAAK,EAAGA,GAAK,EAAG,CACxBoO,EAAWnC,GAAemC,EAAWpO,GAAK4O,IAE5D2e,GAAO,EAEX,CAGJ,OAAOA,CACT,CACA,MAAA1gB,GACE,MAAM7L,EAAS5E,KACf,IAAK4E,GAAUA,EAAOwI,UAAW,OACjC,MAAM2E,SACJA,EAAQ3M,OACRA,GACER,EAcJ,SAASoX,IACP,MAAMqV,EAAiBzsB,EAAO2M,cAAmC,EAApB3M,EAAOI,UAAiBJ,EAAOI,UACtE4X,EAAe7W,KAAKE,IAAIF,KAAKC,IAAIqrB,EAAgBzsB,EAAO2T,gBAAiB3T,EAAO+S,gBACtF/S,EAAOoX,aAAaY,GACpBhY,EAAO4V,oBACP5V,EAAO0U,qBACT,CACA,IAAIgY,EACJ,GApBIlsB,EAAOoO,aACT5O,EAAOglB,gBAET,IAAIhlB,EAAOnD,GAAG1D,iBAAiB,qBAAqBV,QAAQwR,IACtDA,EAAQ0iB,UACV3iB,EAAqBhK,EAAQiK,KAGjCjK,EAAO8L,aACP9L,EAAOsM,eACPtM,EAAOwT,iBACPxT,EAAO0U,sBASHlU,EAAOga,UAAYha,EAAOga,SAASxN,UAAYxM,EAAO8N,QACxD8I,IACI5W,EAAOiU,YACTzU,EAAO6R,uBAEJ,CACL,IAA8B,SAAzBrR,EAAOsK,eAA4BtK,EAAOsK,cAAgB,IAAM9K,EAAO6T,QAAUrT,EAAO6N,eAAgB,CAC3G,MAAM5D,EAASzK,EAAO+M,SAAWvM,EAAOuM,QAAQC,QAAUhN,EAAO+M,QAAQtC,OAASzK,EAAOyK,OACzFiiB,EAAa1sB,EAAOuY,QAAQ9N,EAAO/R,OAAS,EAAG,GAAG,GAAO,EAC3D,MACEg0B,EAAa1sB,EAAOuY,QAAQvY,EAAOiL,YAAa,GAAG,GAAO,GAEvDyhB,GACHtV,GAEJ,CACI5W,EAAO6Q,eAAiBlE,IAAanN,EAAOmN,UAC9CnN,EAAOsR,gBAETtR,EAAOsJ,KAAK,SACd,CACA,eAAA+f,CAAgBuD,EAAcC,GAAa,GACzC,MAAM7sB,EAAS5E,KACT0xB,EAAmB9sB,EAAOQ,OAAO6X,UAKvC,OAJKuU,IAEHA,EAAoC,eAArBE,EAAoC,WAAa,cAE9DF,IAAiBE,GAAqC,eAAjBF,GAAkD,aAAjBA,IAG1E5sB,EAAOnD,GAAG+F,UAAUkH,OAAO,GAAG9J,EAAOQ,OAAOkR,yBAAyBob,KACrE9sB,EAAOnD,GAAG+F,UAAUC,IAAI,GAAG7C,EAAOQ,OAAOkR,yBAAyBkb,KAClE5sB,EAAO6oB,uBACP7oB,EAAOQ,OAAO6X,UAAYuU,EAC1B5sB,EAAOyK,OAAOhS,QAAQoJ,IACC,aAAjB+qB,EACF/qB,EAAQnI,MAAM8M,MAAQ,GAEtB3E,EAAQnI,MAAMgN,OAAS,KAG3B1G,EAAOsJ,KAAK,mBACRujB,GAAY7sB,EAAO6L,UAdd7L,CAgBX,CACA,uBAAA+sB,CAAwB1U,GACtB,MAAMrY,EAAS5E,KACX4E,EAAO4M,KAAqB,QAAdyL,IAAwBrY,EAAO4M,KAAqB,QAAdyL,IACxDrY,EAAO4M,IAAoB,QAAdyL,EACbrY,EAAO2M,aAA2C,eAA5B3M,EAAOQ,OAAO6X,WAA8BrY,EAAO4M,IACrE5M,EAAO4M,KACT5M,EAAOnD,GAAG+F,UAAUC,IAAI,GAAG7C,EAAOQ,OAAOkR,6BACzC1R,EAAOnD,GAAGgE,IAAM,QAEhBb,EAAOnD,GAAG+F,UAAUkH,OAAO,GAAG9J,EAAOQ,OAAOkR,6BAC5C1R,EAAOnD,GAAGgE,IAAM,OAElBb,EAAO6L,SACT,CACA,KAAAmhB,CAAMhrB,GACJ,MAAMhC,EAAS5E,KACf,GAAI4E,EAAOitB,QAAS,OAAO,EAG3B,IAAIpwB,EAAKmF,GAAWhC,EAAOQ,OAAO3D,GAIlC,GAHkB,iBAAPA,IACTA,EAAKnC,SAASxB,cAAc2D,KAEzBA,EACH,OAAO,EAETA,EAAGmD,OAASA,EACRnD,EAAGqwB,YAAcrwB,EAAGqwB,WAAWjzB,MAAQ4C,EAAGqwB,WAAWjzB,KAAKhB,WAAa+G,EAAOQ,OAAOgmB,sBAAsB2G,gBAC7GntB,EAAOmK,WAAY,GAErB,MAAMijB,EAAqB,IAClB,KAAKptB,EAAOQ,OAAOwmB,cAAgB,IAAI1qB,OAAOC,MAAM,KAAKoB,KAAK,OAWvE,IAAI+C,EATe,MACjB,GAAI7D,GAAMA,EAAGiF,YAAcjF,EAAGiF,WAAW5I,cAAe,CAGtD,OAFY2D,EAAGiF,WAAW5I,cAAck0B,IAG1C,CACA,OAAOrrB,EAAgBlF,EAAIuwB,KAAsB,IAGnCC,GAmBhB,OAlBK3sB,GAAaV,EAAOQ,OAAOkmB,iBAC9BhmB,EAAYnH,EAAc,MAAOyG,EAAOQ,OAAOwmB,cAC/CnqB,EAAGkf,OAAOrb,GACVqB,EAAgBlF,EAAI,IAAImD,EAAOQ,OAAO4J,cAAc3R,QAAQoJ,IAC1DnB,EAAUqb,OAAOla,MAGrB7J,OAAOqU,OAAOrM,EAAQ,CACpBnD,KACA6D,YACAgM,SAAU1M,EAAOmK,YAActN,EAAGqwB,WAAWjzB,KAAKqzB,WAAazwB,EAAGqwB,WAAWjzB,KAAOyG,EACpF6sB,OAAQvtB,EAAOmK,UAAYtN,EAAGqwB,WAAWjzB,KAAO4C,EAChDowB,SAAS,EAETrgB,IAA8B,QAAzB/P,EAAGgE,IAAIyG,eAA6D,QAAlC3D,EAAa9G,EAAI,aACxD8P,aAA0C,eAA5B3M,EAAOQ,OAAO6X,YAAwD,QAAzBxb,EAAGgE,IAAIyG,eAA6D,QAAlC3D,EAAa9G,EAAI,cAC9GgQ,SAAiD,gBAAvClJ,EAAajD,EAAW,cAE7B,CACT,CACA,IAAA6lB,CAAK1pB,GACH,MAAMmD,EAAS5E,KACf,GAAI4E,EAAOyW,YAAa,OAAOzW,EAE/B,IAAgB,IADAA,EAAOgtB,MAAMnwB,GACN,OAAOmD,EAC9BA,EAAOsJ,KAAK,cAGRtJ,EAAOQ,OAAOoO,aAChB5O,EAAOglB,gBAIThlB,EAAOoqB,aAGPpqB,EAAO8L,aAGP9L,EAAOsM,eACHtM,EAAOQ,OAAO6Q,eAChBrR,EAAOsR,gBAILtR,EAAOQ,OAAO6iB,YAAcrjB,EAAOgN,SACrChN,EAAOsjB,gBAILtjB,EAAOQ,OAAOmL,MAAQ3L,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAChEhN,EAAOuY,QAAQvY,EAAOQ,OAAO2Y,aAAenZ,EAAO+M,QAAQwD,aAAc,EAAGvQ,EAAOQ,OAAOkW,oBAAoB,GAAO,GAErH1W,EAAOuY,QAAQvY,EAAOQ,OAAO2Y,aAAc,EAAGnZ,EAAOQ,OAAOkW,oBAAoB,GAAO,GAIrF1W,EAAOQ,OAAOmL,MAChB3L,EAAOsb,gBAAW9b,GAAW,GAI/BQ,EAAO+nB,eACP,MAAMyF,EAAe,IAAIxtB,EAAOnD,GAAG1D,iBAAiB,qBAsBpD,OArBI6G,EAAOmK,WACTqjB,EAAarrB,QAAQnC,EAAOutB,OAAOp0B,iBAAiB,qBAEtDq0B,EAAa/0B,QAAQwR,IACfA,EAAQ0iB,SACV3iB,EAAqBhK,EAAQiK,GAE7BA,EAAQpR,iBAAiB,OAAQyL,IAC/B0F,EAAqBhK,EAAQsE,EAAEpM,YAIrCyS,EAAQ3K,GAGRA,EAAOyW,aAAc,EACrB9L,EAAQ3K,GAGRA,EAAOsJ,KAAK,QACZtJ,EAAOsJ,KAAK,aACLtJ,CACT,CACA,OAAAytB,CAAQC,GAAiB,EAAMC,GAAc,GAC3C,MAAM3tB,EAAS5E,MACToF,OACJA,EAAM3D,GACNA,EAAE6D,UACFA,EAAS+J,OACTA,GACEzK,EACJ,YAA6B,IAAlBA,EAAOQ,QAA0BR,EAAOwI,YAGnDxI,EAAOsJ,KAAK,iBAGZtJ,EAAOyW,aAAc,EAGrBzW,EAAOioB,eAGHznB,EAAOmL,MACT3L,EAAOwd,cAILmQ,IACF3tB,EAAO8qB,gBACHjuB,GAAoB,iBAAPA,GACfA,EAAG6N,gBAAgB,SAEjBhK,GACFA,EAAUgK,gBAAgB,SAExBD,GAAUA,EAAO/R,QACnB+R,EAAOhS,QAAQoJ,IACbA,EAAQe,UAAUkH,OAAOtJ,EAAO6S,kBAAmB7S,EAAO8S,uBAAwB9S,EAAOgV,iBAAkBhV,EAAOiV,eAAgBjV,EAAOkV,gBACzI7T,EAAQ6I,gBAAgB,SACxB7I,EAAQ6I,gBAAgB,8BAI9B1K,EAAOsJ,KAAK,WAGZtR,OAAOK,KAAK2H,EAAOuI,iBAAiB9P,QAAQgzB,IAC1CzrB,EAAO6I,IAAI4iB,MAEU,IAAnBiC,IACE1tB,EAAOnD,IAA2B,iBAAdmD,EAAOnD,KAC7BmD,EAAOnD,GAAGmD,OAAS,MAnmI3B,SAAqBlI,GACnB,MAAM81B,EAAS91B,EACfE,OAAOK,KAAKu1B,GAAQn1B,QAAQF,IAC1B,IACEq1B,EAAOr1B,GAAO,IAChB,CAAE,MAAO+L,GAET,CACA,WACSspB,EAAOr1B,EAChB,CAAE,MAAO+L,GAET,GAEJ,CAulIMupB,CAAY7tB,IAEdA,EAAOwI,WAAY,GA5CV,IA8CX,CACA,qBAAOslB,CAAeC,GACpBlvB,EAASksB,GAAkBgD,EAC7B,CACA,2BAAWhD,GACT,OAAOA,EACT,CACA,mBAAWzE,GACT,OAAOA,EACT,CACA,oBAAO0H,CAAc3C,GACdL,GAAO1sB,UAAU8sB,cAAaJ,GAAO1sB,UAAU8sB,YAAc,IAClE,MAAMD,EAAUH,GAAO1sB,UAAU8sB,YACd,mBAARC,GAAsBF,EAAQ3yB,QAAQ6yB,GAAO,GACtDF,EAAQhpB,KAAKkpB,EAEjB,CACA,UAAO4C,CAAIC,GACT,OAAIprB,MAAMC,QAAQmrB,IAChBA,EAAOz1B,QAAQ01B,GAAKnD,GAAOgD,cAAcG,IAClCnD,KAETA,GAAOgD,cAAcE,GACdlD,GACT,EAy2BF,SAASoD,GAA0BpuB,EAAQuoB,EAAgB/nB,EAAQ6tB,GAejE,OAdIruB,EAAOQ,OAAOkmB,gBAChB1uB,OAAOK,KAAKg2B,GAAY51B,QAAQF,IAC9B,IAAKiI,EAAOjI,KAAwB,IAAhBiI,EAAO8mB,KAAe,CACxC,IAAItlB,EAAUD,EAAgB/B,EAAOnD,GAAI,IAAIwxB,EAAW91B,MAAQ,GAC3DyJ,IACHA,EAAUzI,EAAc,MAAO80B,EAAW91B,IAC1CyJ,EAAQ4H,UAAYykB,EAAW91B,GAC/ByH,EAAOnD,GAAGkf,OAAO/Z,IAEnBxB,EAAOjI,GAAOyJ,EACdumB,EAAehwB,GAAOyJ,CACxB,IAGGxB,CACT,CAv3BAxI,OAAOK,KAAKkvB,IAAY9uB,QAAQ61B,IAC9Bt2B,OAAOK,KAAKkvB,GAAW+G,IAAiB71B,QAAQ81B,IAC9CvD,GAAO1sB,UAAUiwB,GAAehH,GAAW+G,GAAgBC,OAG/DvD,GAAOiD,IAAI,CA1uHX,UAAgBjuB,OACdA,EAAMkI,GACNA,EAAEoB,KACFA,IAEA,MAAMnN,EAASF,IACf,IAAIuyB,EAAW,KACXC,EAAiB,KACrB,MAAMC,EAAgB,KACf1uB,IAAUA,EAAOwI,WAAcxI,EAAOyW,cAC3CnN,EAAK,gBACLA,EAAK,YAqCDqlB,EAA2B,KAC1B3uB,IAAUA,EAAOwI,WAAcxI,EAAOyW,aAC3CnN,EAAK,sBAEPpB,EAAG,OAAQ,KACLlI,EAAOQ,OAAOimB,qBAAmD,IAA1BtqB,EAAOyyB,eAvC7C5uB,IAAUA,EAAOwI,WAAcxI,EAAOyW,cAC3C+X,EAAW,IAAII,eAAerE,IAC5BkE,EAAiBtyB,EAAON,sBAAsB,KAC5C,MAAM2K,MACJA,EAAKE,OACLA,GACE1G,EACJ,IAAI6uB,EAAWroB,EACXuL,EAAYrL,EAChB6jB,EAAQ9xB,QAAQ,EACdq2B,iBACAC,cACA72B,aAEIA,GAAUA,IAAW8H,EAAOnD,KAChCgyB,EAAWE,EAAcA,EAAYvoB,OAASsoB,EAAe,IAAMA,GAAgBE,WACnFjd,EAAYgd,EAAcA,EAAYroB,QAAUooB,EAAe,IAAMA,GAAgBG,aAEnFJ,IAAaroB,GAASuL,IAAcrL,GACtCgoB,QAINF,EAASU,QAAQlvB,EAAOnD,MAoBxBV,EAAOtD,iBAAiB,SAAU61B,GAClCvyB,EAAOtD,iBAAiB,oBAAqB81B,MAE/CzmB,EAAG,UAAW,KApBRumB,GACFtyB,EAAOJ,qBAAqB0yB,GAE1BD,GAAYA,EAASW,WAAanvB,EAAOnD,KAC3C2xB,EAASW,UAAUnvB,EAAOnD,IAC1B2xB,EAAW,MAiBbryB,EAAOrD,oBAAoB,SAAU41B,GACrCvyB,EAAOrD,oBAAoB,oBAAqB61B,IAEpD,EAEA,UAAkB3uB,OAChBA,EAAMsrB,aACNA,EAAYpjB,GACZA,EAAEoB,KACFA,IAEA,MAAM8lB,EAAY,GACZjzB,EAASF,IACTozB,EAAS,CAACn3B,EAAQo3B,EAAU,CAAC,KACjC,MACMd,EAAW,IADIryB,EAAOozB,kBAAoBpzB,EAAOqzB,wBACrBC,IAIhC,GAAIzvB,EAAO6c,oBAAqB,OAChC,GAAyB,IAArB4S,EAAU/2B,OAEZ,YADA4Q,EAAK,iBAAkBmmB,EAAU,IAGnC,MAAMC,EAAiB,WACrBpmB,EAAK,iBAAkBmmB,EAAU,GACnC,EACItzB,EAAON,sBACTM,EAAON,sBAAsB6zB,GAE7BvzB,EAAOT,WAAWg0B,EAAgB,KAGtClB,EAASU,QAAQh3B,EAAQ,CACvBy3B,gBAA0C,IAAvBL,EAAQK,YAAoCL,EAAQK,WACvEC,UAAW5vB,EAAOmK,iBAA2C,IAAtBmlB,EAAQM,WAAmCN,GAASM,UAC3FC,mBAAgD,IAA1BP,EAAQO,eAAuCP,EAAQO,gBAE/ET,EAAUjtB,KAAKqsB,IA0BjBlD,EAAa,CACXkD,UAAU,EACVsB,gBAAgB,EAChBC,sBAAsB,IAExB7nB,EAAG,OA7BU,KACX,GAAKlI,EAAOQ,OAAOguB,SAAnB,CACA,GAAIxuB,EAAOQ,OAAOsvB,eAAgB,CAChC,MAAME,EAAmBhsB,EAAehE,EAAOutB,QAC/C,IAAK,IAAIvuB,EAAI,EAAGA,EAAIgxB,EAAiBt3B,OAAQsG,GAAK,EAChDqwB,EAAOW,EAAiBhxB,GAE5B,CAEAqwB,EAAOrvB,EAAOutB,OAAQ,CACpBqC,UAAW5vB,EAAOQ,OAAOuvB,uBAI3BV,EAAOrvB,EAAOU,UAAW,CACvBivB,YAAY,GAdqB,IA6BrCznB,EAAG,UAZa,KACdknB,EAAU32B,QAAQ+1B,IAChBA,EAASyB,eAEXb,EAAUhmB,OAAO,EAAGgmB,EAAU12B,SASlC,IAy9IA,MAAMw3B,GAAW,gfA4MjB,SAASC,GAAkB9zB,EAAU,IAEnC,MAAO,IAAIA,EAAQC,OAAOoB,QAAQ,oCAAqC,QACxEA,QAAQ,KAAM,MACf,CAmvGA,SAAS0yB,GAAY3lB,GACnB,MAAMzK,EAAS5E,MACToF,OACJA,EAAMkM,SACNA,GACE1M,EACAQ,EAAOmL,MACT3L,EAAOwd,cAET,MAAM6S,EAAgBxuB,IACpB,GAAuB,iBAAZA,EAAsB,CAC/B,MAAMyuB,EAAU51B,SAASnB,cAAc,OACvC0L,EAAaqrB,EAASzuB,GACtB6K,EAASqP,OAAOuU,EAAQ92B,SAAS,IACjCyL,EAAaqrB,EAAS,GACxB,MACE5jB,EAASqP,OAAOla,IAGpB,GAAsB,iBAAX4I,GAAuB,WAAYA,EAC5C,IAAK,IAAIzL,EAAI,EAAGA,EAAIyL,EAAO/R,OAAQsG,GAAK,EAClCyL,EAAOzL,IAAIqxB,EAAc5lB,EAAOzL,SAGtCqxB,EAAc5lB,GAEhBzK,EAAOyb,eACHjb,EAAOmL,MACT3L,EAAOsb,aAEJ9a,EAAOguB,WAAYxuB,EAAOmK,WAC7BnK,EAAO6L,QAEX,CAEA,SAAS0kB,GAAa9lB,GACpB,MAAMzK,EAAS5E,MACToF,OACJA,EAAMyK,YACNA,EAAWyB,SACXA,GACE1M,EACAQ,EAAOmL,MACT3L,EAAOwd,cAET,IAAI3H,EAAiB5K,EAAc,EACnC,MAAMulB,EAAiB3uB,IACrB,GAAuB,iBAAZA,EAAsB,CAC/B,MAAMyuB,EAAU51B,SAASnB,cAAc,OACvC0L,EAAaqrB,EAASzuB,GACtB6K,EAASqQ,QAAQuT,EAAQ92B,SAAS,IAClCyL,EAAaqrB,EAAS,GACxB,MACE5jB,EAASqQ,QAAQlb,IAGrB,GAAsB,iBAAX4I,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAIzL,EAAI,EAAGA,EAAIyL,EAAO/R,OAAQsG,GAAK,EAClCyL,EAAOzL,IAAIwxB,EAAe/lB,EAAOzL,IAEvC6W,EAAiB5K,EAAcR,EAAO/R,MACxC,MACE83B,EAAe/lB,GAEjBzK,EAAOyb,eACHjb,EAAOmL,MACT3L,EAAOsb,aAEJ9a,EAAOguB,WAAYxuB,EAAOmK,WAC7BnK,EAAO6L,SAET7L,EAAOuY,QAAQ1C,EAAgB,GAAG,EACpC,CAEA,SAAS4a,GAAStnB,EAAOsB,GACvB,MAAMzK,EAAS5E,MACToF,OACJA,EAAMyK,YACNA,EAAWyB,SACXA,GACE1M,EACJ,IAAI0wB,EAAoBzlB,EACpBzK,EAAOmL,OACT+kB,GAAqB1wB,EAAOic,aAC5Bjc,EAAOwd,cACPxd,EAAOyb,gBAET,MAAMkV,EAAa3wB,EAAOyK,OAAO/R,OACjC,GAAIyQ,GAAS,EAEX,YADAnJ,EAAOuwB,aAAa9lB,GAGtB,GAAItB,GAASwnB,EAEX,YADA3wB,EAAOowB,YAAY3lB,GAGrB,IAAIoL,EAAiB6a,EAAoBvnB,EAAQunB,EAAoB,EAAIA,EACzE,MAAME,EAAe,GACrB,IAAK,IAAI5xB,EAAI2xB,EAAa,EAAG3xB,GAAKmK,EAAOnK,GAAK,EAAG,CAC/C,MAAM6xB,EAAe7wB,EAAOyK,OAAOzL,GACnC6xB,EAAa/mB,SACb8mB,EAAannB,QAAQonB,EACvB,CACA,GAAsB,iBAAXpmB,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAIzL,EAAI,EAAGA,EAAIyL,EAAO/R,OAAQsG,GAAK,EAClCyL,EAAOzL,IAAI0N,EAASqP,OAAOtR,EAAOzL,IAExC6W,EAAiB6a,EAAoBvnB,EAAQunB,EAAoBjmB,EAAO/R,OAASg4B,CACnF,MACEhkB,EAASqP,OAAOtR,GAElB,IAAK,IAAIzL,EAAI,EAAGA,EAAI4xB,EAAal4B,OAAQsG,GAAK,EAC5C0N,EAASqP,OAAO6U,EAAa5xB,IAE/BgB,EAAOyb,eACHjb,EAAOmL,MACT3L,EAAOsb,aAEJ9a,EAAOguB,WAAYxuB,EAAOmK,WAC7BnK,EAAO6L,SAELrL,EAAOmL,KACT3L,EAAOuY,QAAQ1C,EAAiB7V,EAAOic,aAAc,GAAG,GAExDjc,EAAOuY,QAAQ1C,EAAgB,GAAG,EAEtC,CAEA,SAASib,GAAYC,GACnB,MAAM/wB,EAAS5E,MACToF,OACJA,EAAMyK,YACNA,GACEjL,EACJ,IAAI0wB,EAAoBzlB,EACpBzK,EAAOmL,OACT+kB,GAAqB1wB,EAAOic,aAC5Bjc,EAAOwd,eAET,IACIwT,EADAnb,EAAiB6a,EAErB,GAA6B,iBAAlBK,GAA8B,WAAYA,EAAe,CAClE,IAAK,IAAI/xB,EAAI,EAAGA,EAAI+xB,EAAcr4B,OAAQsG,GAAK,EAC7CgyB,EAAgBD,EAAc/xB,GAC1BgB,EAAOyK,OAAOumB,IAAgBhxB,EAAOyK,OAAOumB,GAAelnB,SAC3DknB,EAAgBnb,IAAgBA,GAAkB,GAExDA,EAAiB1U,KAAKC,IAAIyU,EAAgB,EAC5C,MACEmb,EAAgBD,EACZ/wB,EAAOyK,OAAOumB,IAAgBhxB,EAAOyK,OAAOumB,GAAelnB,SAC3DknB,EAAgBnb,IAAgBA,GAAkB,GACtDA,EAAiB1U,KAAKC,IAAIyU,EAAgB,GAE5C7V,EAAOyb,eACHjb,EAAOmL,MACT3L,EAAOsb,aAEJ9a,EAAOguB,WAAYxuB,EAAOmK,WAC7BnK,EAAO6L,SAELrL,EAAOmL,KACT3L,EAAOuY,QAAQ1C,EAAiB7V,EAAOic,aAAc,GAAG,GAExDjc,EAAOuY,QAAQ1C,EAAgB,GAAG,EAEtC,CAEA,SAASob,KACP,MAAMjxB,EAAS5E,KACT21B,EAAgB,GACtB,IAAK,IAAI/xB,EAAI,EAAGA,EAAIgB,EAAOyK,OAAO/R,OAAQsG,GAAK,EAC7C+xB,EAAc5uB,KAAKnD,GAErBgB,EAAO8wB,YAAYC,EACrB,CAcA,SAASG,GAAW1wB,GAClB,MAAMmP,OACJA,EAAM3P,OACNA,EAAMkI,GACNA,EAAEkP,aACFA,EAAYpF,cACZA,EAAamf,gBACbA,EAAeC,YACfA,EAAWC,gBACXA,EAAeC,gBACfA,GACE9wB,EA+BJ,IAAI+wB,EA9BJrpB,EAAG,aAAc,KACf,GAAIlI,EAAOQ,OAAOmP,SAAWA,EAAQ,OACrC3P,EAAOqqB,WAAWloB,KAAK,GAAGnC,EAAOQ,OAAOkR,yBAAyB/B,KAC7DyhB,GAAeA,KACjBpxB,EAAOqqB,WAAWloB,KAAK,GAAGnC,EAAOQ,OAAOkR,4BAE1C,MAAM8f,EAAwBL,EAAkBA,IAAoB,CAAC,EACrEn5B,OAAOqU,OAAOrM,EAAOQ,OAAQgxB,GAC7Bx5B,OAAOqU,OAAOrM,EAAOuoB,eAAgBiJ,KAEvCtpB,EAAG,+BAAgC,KAC7BlI,EAAOQ,OAAOmP,SAAWA,GAC7ByH,MAEFlP,EAAG,gBAAiB,CAACupB,EAAIlxB,KACnBP,EAAOQ,OAAOmP,SAAWA,GAC7BqC,EAAczR,KAEhB2H,EAAG,gBAAiB,KAClB,GAAIlI,EAAOQ,OAAOmP,SAAWA,GACzB0hB,EAAiB,CACnB,IAAKC,IAAoBA,IAAkBI,aAAc,OAEzD1xB,EAAOyK,OAAOhS,QAAQoJ,IACpBA,EAAQ1I,iBAAiB,gHAAgHV,QAAQk5B,GAAYA,EAAS7nB,YAGxKunB,GACF,IAGFnpB,EAAG,gBAAiB,KACdlI,EAAOQ,OAAOmP,SAAWA,IACxB3P,EAAOyK,OAAO/R,SACjB64B,GAAyB,GAE3B11B,sBAAsB,KAChB01B,GAA0BvxB,EAAOyK,QAAUzK,EAAOyK,OAAO/R,SAC3D0e,IACAma,GAAyB,OAIjC,CAEA,SAASK,GAAaC,EAAchwB,GAClC,MAAMiwB,EAAclwB,EAAoBC,GAKxC,OAJIiwB,IAAgBjwB,IAClBiwB,EAAYp4B,MAAMq4B,mBAAqB,SACvCD,EAAYp4B,MAAM,+BAAiC,UAE9Co4B,CACT,CAEA,SAASE,IAA2BhyB,OAClCA,EAAMO,SACNA,EAAQ0xB,kBACRA,EAAiBC,UACjBA,IAEA,MAAMjnB,YACJA,GACEjL,EASJ,GAAIA,EAAOQ,OAAO0W,kBAAiC,IAAb3W,EAAgB,CACpD,IACI4xB,EADAC,GAAiB,EAGnBD,EADED,EACoBD,EAEAA,EAAkB35B,OAAOw5B,IAC7C,MAAMj1B,EAAKi1B,EAAYlvB,UAAUiH,SAAS,0BAf/BhN,KACf,IAAKA,EAAGsH,cAGN,OADcnE,EAAOyK,OAAOsK,KAAKlT,GAAWA,EAAQC,YAAcD,EAAQC,aAAejF,EAAGqwB,YAG9F,OAAOrwB,EAAGsH,eASgEkuB,CAASP,GAAeA,EAC9F,OAAO9xB,EAAOqb,cAAcxe,KAAQoO,IAGxCknB,EAAoB15B,QAAQoE,IAC1BuH,EAAqBvH,EAAI,KACvB,GAAIu1B,EAAgB,OACpB,IAAKpyB,GAAUA,EAAOwI,UAAW,OACjC4pB,GAAiB,EACjBpyB,EAAO8X,WAAY,EACnB,MAAMiL,EAAM,IAAI5mB,OAAOhB,YAAY,gBAAiB,CAClD6nB,SAAS,EACTZ,YAAY,IAEdpiB,EAAOU,UAAUyiB,cAAcJ,MAGrC,CACF,CAsOA,SAASuP,GAAaC,EAAQ1wB,EAAS3B,GACrC,MAAMsyB,EAAc,sBAAsBtyB,EAAO,IAAIA,IAAS,KAAKqyB,EAAS,wBAAwBA,IAAW,KACzGE,EAAkB7wB,EAAoBC,GAC5C,IAAI8vB,EAAWc,EAAgBv5B,cAAc,IAAIs5B,EAAYj2B,MAAM,KAAKoB,KAAK,QAK7E,OAJKg0B,IACHA,EAAWp4B,EAAc,MAAOi5B,EAAYj2B,MAAM,MAClDk2B,EAAgB1W,OAAO4V,IAElBA,CACT,CA0dA,MAAMxG,GAAU,CAvyKhB,UAAiBnrB,OACfA,EAAMsrB,aACNA,EAAYpjB,GACZA,EAAEoB,KACFA,IAeA,IAAIopB,EAbJpH,EAAa,CACXve,QAAS,CACPC,SAAS,EACTvC,OAAQ,GACRkoB,OAAO,EACP5jB,2BAA4B,IAC5B6jB,YAAa,KACbC,eAAgB,KAChBC,sBAAsB,EACtBC,gBAAiB,EACjBC,eAAgB,KAIpB,MAAMt4B,EAAWF,IACjBwF,EAAO+M,QAAU,CACf4lB,MAAO,CAAC,EACRrnB,UAAM9L,EACNT,QAAIS,EACJiL,OAAQ,GACRwoB,OAAQ,EACR7lB,WAAY,IAEd,MAAMkjB,EAAU51B,EAASnB,cAAc,OACvC,SAASq5B,EAAY/jB,EAAO1F,GAC1B,MAAM3I,EAASR,EAAOQ,OAAOuM,QAC7B,GAAIvM,EAAOmyB,OAAS3yB,EAAO+M,QAAQ4lB,MAAMxpB,GACvC,OAAOnJ,EAAO+M,QAAQ4lB,MAAMxpB,GAG9B,IAAItH,EAmBJ,OAlBIrB,EAAOoyB,aACT/wB,EAAUrB,EAAOoyB,YAAYr0B,KAAKyB,EAAQ6O,EAAO1F,GAC1B,iBAAZtH,IACToD,EAAaqrB,EAASzuB,GACtBA,EAAUyuB,EAAQ92B,SAAS,KAG7BqI,EADS7B,EAAOmK,UACN5Q,EAAc,gBAEdA,EAAc,MAAOyG,EAAOQ,OAAO4J,YAE/CvI,EAAQlI,aAAa,0BAA2BwP,GAC3C3I,EAAOoyB,aACV3tB,EAAapD,EAASgN,GAEpBrO,EAAOmyB,QACT3yB,EAAO+M,QAAQ4lB,MAAMxpB,GAAStH,GAEzBA,CACT,CACA,SAASgK,EAAOqnB,EAAOC,EAAYC,GACjC,MAAM3jB,eACJA,EAAcpB,eACdA,EAAcvD,cACdA,EACAa,KAAMkX,EAAM1J,aACZA,GACEnZ,EAAOQ,OACX,GAAI2yB,IAAetQ,GAAU1J,EAAe,EAC1C,OAEF,MAAM4Z,gBACJA,EAAeC,eACfA,EAAcjkB,2BACdA,GACE/O,EAAOQ,OAAOuM,SAEhBzB,KAAM+nB,EACNt0B,GAAIu0B,EAAU7oB,OACdA,EACA2C,WAAYmmB,EACZN,OAAQO,GACNxzB,EAAO+M,QACN/M,EAAOQ,OAAO8N,SACjBtO,EAAO4V,oBAET,MAAM3K,OAA0C,IAArBmoB,EAAmCpzB,EAAOiL,aAAe,EAAImoB,EACxF,IAAIK,EAEAC,EAcAljB,EACAD,EAdJ,GAFyBkjB,EAArBzzB,EAAO2M,aAA2B,QAA0B3M,EAAOiM,eAAiB,OAAS,MAE3E,SAAlBnB,EACF,GAAIiE,EAA4B,CAC9B,IAAInB,EAAa5N,EAAOwE,KACnBoJ,IACHA,EAAa5N,EAAOiM,eAAiBjM,EAAOnD,GAAGqG,wBAAwBsD,MAAQxG,EAAOnD,GAAGqG,wBAAwBwD,QAEnHgtB,EAAuBvyB,KAAKC,IAAI,EAAGD,KAAK6J,KAAK4C,EAAamB,GAC5D,MACE2kB,EAAuB,OAGzBA,EAAuB5oB,EAIrBuD,GACFmC,EAAcrP,KAAK8N,MAAMykB,EAAuB,GAAKjkB,EAAiBujB,EACtEziB,EAAepP,KAAK8N,MAAMykB,EAAuB,GAAKjkB,EAAiBsjB,IAEvEviB,EAAckjB,GAAwBjkB,EAAiB,GAAKujB,EAC5DziB,GAAgBsS,EAAS6Q,EAAuBjkB,GAAkBsjB,GAEpE,IAAIznB,EAAOL,EAAcsF,EACrBxR,EAAKkM,EAAcuF,EAClBqS,IACHvX,EAAOnK,KAAKC,IAAIkK,EAAM,GACtBvM,EAAKoC,KAAKE,IAAItC,EAAI0L,EAAO/R,OAAS,IAEpC,IAAIu6B,GAAUjzB,EAAOoN,WAAW9B,IAAS,IAAMtL,EAAOoN,WAAW,IAAM,GAgBvE,SAASumB,IACP3zB,EAAOsM,eACPtM,EAAOwT,iBACPxT,EAAO0U,sBACPpL,EAAK,gBACP,CACA,GArBIuZ,GAAU5X,GAAesF,GAC3BjF,GAAQiF,EACHlC,IAAgB4kB,GAAUjzB,EAAOoN,WAAW,KACxCyV,GAAU5X,EAAcsF,IACjCjF,GAAQiF,EACJlC,IAAgB4kB,GAAUjzB,EAAOoN,WAAW,KAElDpV,OAAOqU,OAAOrM,EAAO+M,QAAS,CAC5BzB,OACAvM,KACAk0B,SACA7lB,WAAYpN,EAAOoN,WACnBmD,eACAC,gBAQE6iB,IAAiB/nB,GAAQgoB,IAAev0B,IAAOm0B,EAQjD,OAPIlzB,EAAOoN,aAAemmB,GAAsBN,IAAWO,GACzDxzB,EAAOyK,OAAOhS,QAAQoJ,IACpBA,EAAQnI,MAAM+5B,GAAiBR,EAAS9xB,KAAK2D,IAAI9E,EAAOyS,yBAA5B,OAGhCzS,EAAOwT,sBACPlK,EAAK,iBAGP,GAAItJ,EAAOQ,OAAOuM,QAAQ8lB,eAkBxB,OAjBA7yB,EAAOQ,OAAOuM,QAAQ8lB,eAAet0B,KAAKyB,EAAQ,CAChDizB,SACA3nB,OACAvM,KACA0L,OAAQ,WACN,MAAMmpB,EAAiB,GACvB,IAAK,IAAI50B,EAAIsM,EAAMtM,GAAKD,EAAIC,GAAK,EAC/B40B,EAAezxB,KAAKsI,EAAOzL,IAE7B,OAAO40B,CACT,CANQ,UAQN5zB,EAAOQ,OAAOuM,QAAQ+lB,qBACxBa,IAEArqB,EAAK,kBAIT,MAAMuqB,EAAiB,GACjBC,EAAgB,GAChBzY,EAAgBlS,IACpB,IAAIuH,EAAavH,EAOjB,OANIA,EAAQ,EACVuH,EAAajG,EAAO/R,OAASyQ,EACpBuH,GAAcjG,EAAO/R,SAE9BgY,GAA0BjG,EAAO/R,QAE5BgY,GAET,GAAIwiB,EACFlzB,EAAOyK,OAAOnS,OAAOuE,GAAMA,EAAGwF,QAAQ,IAAIrC,EAAOQ,OAAO4J,6BAA6B3R,QAAQoJ,IAC3FA,EAAQiI,gBAGV,IAAK,IAAI9K,EAAIq0B,EAAcr0B,GAAKs0B,EAAYt0B,GAAK,EAC/C,GAAIA,EAAIsM,GAAQtM,EAAID,EAAI,CACtB,MAAM2R,EAAa2K,EAAcrc,GACjCgB,EAAOyK,OAAOnS,OAAOuE,GAAMA,EAAGwF,QAAQ,IAAIrC,EAAOQ,OAAO4J,uCAAuCsG,8CAAuDA,QAAiBjY,QAAQoJ,IAC7KA,EAAQiI,UAEZ,CAGJ,MAAMiqB,EAAWlR,GAAUpY,EAAO/R,OAAS,EACrCs7B,EAASnR,EAAyB,EAAhBpY,EAAO/R,OAAa+R,EAAO/R,OACnD,IAAK,IAAIsG,EAAI+0B,EAAU/0B,EAAIg1B,EAAQh1B,GAAK,EACtC,GAAIA,GAAKsM,GAAQtM,GAAKD,EAAI,CACxB,MAAM2R,EAAa2K,EAAcrc,QACP,IAAfs0B,GAA8BJ,EACvCY,EAAc3xB,KAAKuO,IAEf1R,EAAIs0B,GAAYQ,EAAc3xB,KAAKuO,GACnC1R,EAAIq0B,GAAcQ,EAAe1xB,KAAKuO,GAE9C,CAKF,GAHAojB,EAAcr7B,QAAQ0Q,IACpBnJ,EAAO0M,SAASqP,OAAO6W,EAAYnoB,EAAOtB,GAAQA,MAEhD0Z,EACF,IAAK,IAAI7jB,EAAI60B,EAAen7B,OAAS,EAAGsG,GAAK,EAAGA,GAAK,EAAG,CACtD,MAAMmK,EAAQ0qB,EAAe70B,GAC7BgB,EAAO0M,SAASqQ,QAAQ6V,EAAYnoB,EAAOtB,GAAQA,GACrD,MAEA0qB,EAAe7J,KAAK,CAACvsB,EAAGwsB,IAAMA,EAAIxsB,GAClCo2B,EAAep7B,QAAQ0Q,IACrBnJ,EAAO0M,SAASqQ,QAAQ6V,EAAYnoB,EAAOtB,GAAQA,MAGvDpH,EAAgB/B,EAAO0M,SAAU,+BAA+BjU,QAAQoJ,IACtEA,EAAQnI,MAAM+5B,GAAiBR,EAAS9xB,KAAK2D,IAAI9E,EAAOyS,yBAA5B,OAE9BkhB,GACF,CAuFAzrB,EAAG,aAAc,KACf,IAAKlI,EAAOQ,OAAOuM,QAAQC,QAAS,OACpC,IAAIinB,EACJ,QAAkD,IAAvCj0B,EAAOwrB,aAAaze,QAAQtC,OAAwB,CAC7D,MAAMA,EAAS,IAAIzK,EAAO0M,SAASlT,UAAUlB,OAAOuE,GAAMA,EAAGwF,QAAQ,IAAIrC,EAAOQ,OAAO4J,6BACnFK,GAAUA,EAAO/R,SACnBsH,EAAO+M,QAAQtC,OAAS,IAAIA,GAC5BwpB,GAAoB,EACpBxpB,EAAOhS,QAAQ,CAACoJ,EAAS6O,KACvB7O,EAAQlI,aAAa,0BAA2B+W,GAChD1Q,EAAO+M,QAAQ4lB,MAAMjiB,GAAc7O,EACnCA,EAAQiI,WAGd,CACKmqB,IACHj0B,EAAO+M,QAAQtC,OAASzK,EAAOQ,OAAOuM,QAAQtC,QAEhDzK,EAAOqqB,WAAWloB,KAAK,GAAGnC,EAAOQ,OAAOkR,iCACxC1R,EAAOQ,OAAO+Q,qBAAsB,EACpCvR,EAAOuoB,eAAehX,qBAAsB,EAC5C1F,GAAO,GAAO,KAEhB3D,EAAG,eAAgB,KACZlI,EAAOQ,OAAOuM,QAAQC,UACvBhN,EAAOQ,OAAO8N,UAAYtO,EAAOiZ,mBACnCtd,aAAa+2B,GACbA,EAAiBh3B,WAAW,KAC1BmQ,KACC,MAEHA,OAGJ3D,EAAG,qBAAsB,KAClBlI,EAAOQ,OAAOuM,QAAQC,SACvBhN,EAAOQ,OAAO8N,SAChB3O,EAAeK,EAAOU,UAAW,wBAAyB,GAAGV,EAAOgO,mBAGxEhW,OAAOqU,OAAOrM,EAAO+M,QAAS,CAC5BqjB,YA/HF,SAAqB3lB,GACnB,GAAsB,iBAAXA,GAAuB,WAAYA,EAC5C,IAAK,IAAIzL,EAAI,EAAGA,EAAIyL,EAAO/R,OAAQsG,GAAK,EAClCyL,EAAOzL,IAAIgB,EAAO+M,QAAQtC,OAAOtI,KAAKsI,EAAOzL,SAGnDgB,EAAO+M,QAAQtC,OAAOtI,KAAKsI,GAE7BoB,GAAO,EACT,EAuHE0kB,aAtHF,SAAsB9lB,GACpB,MAAMQ,EAAcjL,EAAOiL,YAC3B,IAAI4K,EAAiB5K,EAAc,EAC/BipB,EAAoB,EACxB,GAAIpxB,MAAMC,QAAQ0H,GAAS,CACzB,IAAK,IAAIzL,EAAI,EAAGA,EAAIyL,EAAO/R,OAAQsG,GAAK,EAClCyL,EAAOzL,IAAIgB,EAAO+M,QAAQtC,OAAOhB,QAAQgB,EAAOzL,IAEtD6W,EAAiB5K,EAAcR,EAAO/R,OACtCw7B,EAAoBzpB,EAAO/R,MAC7B,MACEsH,EAAO+M,QAAQtC,OAAOhB,QAAQgB,GAEhC,GAAIzK,EAAOQ,OAAOuM,QAAQ4lB,MAAO,CAC/B,MAAMA,EAAQ3yB,EAAO+M,QAAQ4lB,MACvBwB,EAAW,CAAC,EAClBn8B,OAAOK,KAAKs6B,GAAOl6B,QAAQ27B,IACzB,MAAMC,EAAW1B,EAAMyB,GACjBE,EAAgBD,EAAS7d,aAAa,2BACxC8d,GACFD,EAAS16B,aAAa,0BAA2BwS,SAASmoB,EAAe,IAAMJ,GAEjFC,EAAShoB,SAASioB,EAAa,IAAMF,GAAqBG,IAE5Dr0B,EAAO+M,QAAQ4lB,MAAQwB,CACzB,CACAtoB,GAAO,GACP7L,EAAOuY,QAAQ1C,EAAgB,EACjC,EA2FEib,YA1FF,SAAqBC,GACnB,GAAI,MAAOA,EAAyD,OACpE,IAAI9lB,EAAcjL,EAAOiL,YACzB,GAAInI,MAAMC,QAAQguB,GAChB,IAAK,IAAI/xB,EAAI+xB,EAAcr4B,OAAS,EAAGsG,GAAK,EAAGA,GAAK,EAC9CgB,EAAOQ,OAAOuM,QAAQ4lB,eACjB3yB,EAAO+M,QAAQ4lB,MAAM5B,EAAc/xB,IAE1ChH,OAAOK,KAAK2H,EAAO+M,QAAQ4lB,OAAOl6B,QAAQF,IACpCA,EAAMw4B,IACR/wB,EAAO+M,QAAQ4lB,MAAMp6B,EAAM,GAAKyH,EAAO+M,QAAQ4lB,MAAMp6B,GACrDyH,EAAO+M,QAAQ4lB,MAAMp6B,EAAM,GAAGoB,aAAa,0BAA2BpB,EAAM,UACrEyH,EAAO+M,QAAQ4lB,MAAMp6B,OAIlCyH,EAAO+M,QAAQtC,OAAOrB,OAAO2nB,EAAc/xB,GAAI,GAC3C+xB,EAAc/xB,GAAKiM,IAAaA,GAAe,GACnDA,EAAc9J,KAAKC,IAAI6J,EAAa,QAGlCjL,EAAOQ,OAAOuM,QAAQ4lB,eACjB3yB,EAAO+M,QAAQ4lB,MAAM5B,GAE5B/4B,OAAOK,KAAK2H,EAAO+M,QAAQ4lB,OAAOl6B,QAAQF,IACpCA,EAAMw4B,IACR/wB,EAAO+M,QAAQ4lB,MAAMp6B,EAAM,GAAKyH,EAAO+M,QAAQ4lB,MAAMp6B,GACrDyH,EAAO+M,QAAQ4lB,MAAMp6B,EAAM,GAAGoB,aAAa,0BAA2BpB,EAAM,UACrEyH,EAAO+M,QAAQ4lB,MAAMp6B,OAIlCyH,EAAO+M,QAAQtC,OAAOrB,OAAO2nB,EAAe,GACxCA,EAAgB9lB,IAAaA,GAAe,GAChDA,EAAc9J,KAAKC,IAAI6J,EAAa,GAEtCY,GAAO,GACP7L,EAAOuY,QAAQtN,EAAa,EAC9B,EAqDEgmB,gBApDF,WACEjxB,EAAO+M,QAAQtC,OAAS,GACpBzK,EAAOQ,OAAOuM,QAAQ4lB,QACxB3yB,EAAO+M,QAAQ4lB,MAAQ,CAAC,GAE1B9mB,GAAO,GACP7L,EAAOuY,QAAQ,EAAG,EACpB,EA8CE1M,UAEJ,EAGA,UAAkB7L,OAChBA,EAAMsrB,aACNA,EAAYpjB,GACZA,EAAEoB,KACFA,IAEA,MAAM5O,EAAWF,IACX2B,EAASF,IAYf,SAASs4B,EAAO7rB,GACd,IAAK1I,EAAOgN,QAAS,OACrB,MACEL,aAAcC,GACZ5M,EACJ,IAAIsE,EAAIoE,EACJpE,EAAE4Z,gBAAe5Z,EAAIA,EAAE4Z,eAC3B,MAAMsW,EAAKlwB,EAAEmwB,SAAWnwB,EAAEowB,SACpBC,EAAa30B,EAAOQ,OAAOo0B,SAASD,WACpCE,EAAWF,GAAqB,KAAPH,EACzBM,EAAaH,GAAqB,KAAPH,EAC3BO,EAAqB,KAAPP,EACdQ,EAAsB,KAAPR,EACfS,EAAmB,KAAPT,EACZU,EAAqB,KAAPV,EAEpB,IAAKx0B,EAAO4Y,iBAAmB5Y,EAAOiM,gBAAkB+oB,GAAgBh1B,EAAOkM,cAAgBgpB,GAAeJ,GAC5G,OAAO,EAET,IAAK90B,EAAO6Y,iBAAmB7Y,EAAOiM,gBAAkB8oB,GAAe/0B,EAAOkM,cAAgB+oB,GAAaJ,GACzG,OAAO,EAET,GAAIvwB,EAAE6wB,UAAY7wB,EAAE8wB,QAAU9wB,EAAE+wB,SAAW/wB,EAAEgxB,QAC3C,OAEF,GAAI56B,EAAS3B,gBAAkB2B,EAAS3B,cAAcuoB,mBAAqB5mB,EAAS3B,cAAcE,WAA+D,UAAlDyB,EAAS3B,cAAcE,SAASqO,eAA+E,aAAlD5M,EAAS3B,cAAcE,SAASqO,gBAC1M,OAEF,GAAItH,EAAOQ,OAAOo0B,SAASW,iBAAmBV,GAAYC,GAAcC,GAAeC,GAAgBC,GAAaC,GAAc,CAChI,IAAIM,GAAS,EAEb,GAAIxxB,EAAehE,EAAOnD,GAAI,IAAImD,EAAOQ,OAAO4J,4BAA4B1R,OAAS,GAAgF,IAA3EsL,EAAehE,EAAOnD,GAAI,IAAImD,EAAOQ,OAAOgV,oBAAoB9c,OACxJ,OAEF,MAAMmE,EAAKmD,EAAOnD,GACZ44B,EAAc54B,EAAGkP,YACjB2pB,EAAe74B,EAAGmP,aAClB2pB,EAAcx5B,EAAO4hB,WACrB6X,EAAez5B,EAAOutB,YACtBmM,EAAe7yB,EAAcnG,GAC/B+P,IAAKipB,EAAanyB,MAAQ7G,EAAG0G,YACjC,MAAMuyB,EAAc,CAAC,CAACD,EAAanyB,KAAMmyB,EAAapyB,KAAM,CAACoyB,EAAanyB,KAAO+xB,EAAaI,EAAapyB,KAAM,CAACoyB,EAAanyB,KAAMmyB,EAAapyB,IAAMiyB,GAAe,CAACG,EAAanyB,KAAO+xB,EAAaI,EAAapyB,IAAMiyB,IAC5N,IAAK,IAAI12B,EAAI,EAAGA,EAAI82B,EAAYp9B,OAAQsG,GAAK,EAAG,CAC9C,MAAM4qB,EAAQkM,EAAY92B,GAC1B,GAAI4qB,EAAM,IAAM,GAAKA,EAAM,IAAM+L,GAAe/L,EAAM,IAAM,GAAKA,EAAM,IAAMgM,EAAc,CACzF,GAAiB,IAAbhM,EAAM,IAAyB,IAAbA,EAAM,GAAU,SACtC4L,GAAS,CACX,CACF,CACA,IAAKA,EAAQ,MACf,CACA,MAAM/0B,EAAQT,EAAOQ,OAAOo0B,SAASn0B,MACjCT,EAAOiM,iBACL4oB,GAAYC,GAAcC,GAAeC,KACvC1wB,EAAE0Z,eAAgB1Z,EAAE0Z,iBAAsB1Z,EAAEyxB,aAAc,KAE3DjB,GAAcE,KAAkBpoB,IAAQioB,GAAYE,IAAgBnoB,IAAK5M,EAAO6Z,UAAUpZ,KAC1Fo0B,GAAYE,KAAiBnoB,IAAQkoB,GAAcE,IAAiBpoB,IAAK5M,EAAOma,UAAU1Z,MAE3Fo0B,GAAYC,GAAcG,GAAaC,KACrC5wB,EAAE0Z,eAAgB1Z,EAAE0Z,iBAAsB1Z,EAAEyxB,aAAc,IAE5DjB,GAAcI,IAAal1B,EAAO6Z,UAAUpZ,IAC5Co0B,GAAYI,IAAWj1B,EAAOma,UAAU1Z,IAE9C6I,EAAK,WAAYkrB,EAEnB,CACA,SAASvL,IACHjpB,EAAO40B,SAAS5nB,UACpBtS,EAAS7B,iBAAiB,UAAW07B,GACrCv0B,EAAO40B,SAAS5nB,SAAU,EAC5B,CACA,SAASgc,IACFhpB,EAAO40B,SAAS5nB,UACrBtS,EAAS5B,oBAAoB,UAAWy7B,GACxCv0B,EAAO40B,SAAS5nB,SAAU,EAC5B,CAxFAhN,EAAO40B,SAAW,CAChB5nB,SAAS,GAEXse,EAAa,CACXsJ,SAAU,CACR5nB,SAAS,EACTuoB,gBAAgB,EAChBZ,YAAY,EACZl0B,WAAOjB,KAiFX0I,EAAG,OAAQ,KACLlI,EAAOQ,OAAOo0B,SAAS5nB,SACzBic,MAGJ/gB,EAAG,UAAW,KACRlI,EAAO40B,SAAS5nB,SAClBgc,MAGJhxB,OAAOqU,OAAOrM,EAAO40B,SAAU,CAC7B3L,SACAD,WAEJ,EAGA,UAAoBhpB,OAClBA,EAAMsrB,aACNA,EAAYpjB,GACZA,EAAEoB,KACFA,IAEA,MAAMnN,EAASF,IAiBf,IAAI+5B,EAhBJ1K,EAAa,CACX2K,WAAY,CACVjpB,SAAS,EACTkpB,gBAAgB,EAChBC,QAAQ,EACRC,aAAa,EACbC,YAAa,EACbC,aAAc,YACdC,eAAgB,KAChBC,cAAe,KACfC,kBAAmB,0BAGvBz2B,EAAOi2B,WAAa,CAClBjpB,SAAS,GAGX,IACI0pB,EADAC,EAAiBh6B,IAErB,MAAMi6B,EAAoB,GAqE1B,SAASC,IACF72B,EAAOgN,UACZhN,EAAO82B,cAAe,EACxB,CACA,SAASC,IACF/2B,EAAOgN,UACZhN,EAAO82B,cAAe,EACxB,CACA,SAASE,EAAcC,GACrB,QAAIj3B,EAAOQ,OAAOy1B,WAAWM,gBAAkBU,EAASC,MAAQl3B,EAAOQ,OAAOy1B,WAAWM,oBAIrFv2B,EAAOQ,OAAOy1B,WAAWO,eAAiB75B,IAAQg6B,EAAiB32B,EAAOQ,OAAOy1B,WAAWO,iBAQ5FS,EAASC,OAAS,GAAKv6B,IAAQg6B,EAAiB,KAgBhDM,EAAS5e,UAAY,EACjBrY,EAAO6T,QAAS7T,EAAOQ,OAAOmL,MAAU3L,EAAO8X,YACnD9X,EAAO6Z,YACPvQ,EAAK,SAAU2tB,EAASE,MAEfn3B,EAAO4T,cAAe5T,EAAOQ,OAAOmL,MAAU3L,EAAO8X,YAChE9X,EAAOma,YACP7Q,EAAK,SAAU2tB,EAASE,MAG1BR,GAAiB,IAAIx6B,EAAOX,MAAOyF,WAE5B,IACT,CAcA,SAASszB,EAAO7rB,GACd,IAAIpE,EAAIoE,EACJ+a,GAAsB,EAC1B,IAAKzjB,EAAOgN,QAAS,OAGrB,GAAItE,EAAMxQ,OAAOgS,QAAQ,IAAIlK,EAAOQ,OAAOy1B,WAAWQ,qBAAsB,OAC5E,MAAMj2B,EAASR,EAAOQ,OAAOy1B,WACzBj2B,EAAOQ,OAAO8N,SAChBhK,EAAE0Z,iBAEJ,IAAIY,EAAW5e,EAAOnD,GACwB,cAA1CmD,EAAOQ,OAAOy1B,WAAWK,eAC3B1X,EAAWlkB,SAASxB,cAAc8G,EAAOQ,OAAOy1B,WAAWK,eAE7D,MAAMc,EAAyBxY,GAAYA,EAAS/U,SAASvF,EAAEpM,QAC/D,IAAK8H,EAAO82B,eAAiBM,IAA2B52B,EAAO01B,eAAgB,OAAO,EAClF5xB,EAAE4Z,gBAAe5Z,EAAIA,EAAE4Z,eAC3B,IAAIgZ,EAAQ,EACZ,MAAMG,EAAYr3B,EAAO2M,cAAgB,EAAI,EACvCpD,EAxJR,SAAmBjF,GAKjB,IAAIgzB,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EAqDT,MAlDI,WAAYnzB,IACdizB,EAAKjzB,EAAE2e,QAEL,eAAgB3e,IAClBizB,GAAMjzB,EAAEozB,WAAa,KAEnB,gBAAiBpzB,IACnBizB,GAAMjzB,EAAEqzB,YAAc,KAEpB,gBAAiBrzB,IACnBgzB,GAAMhzB,EAAEszB,YAAc,KAIpB,SAAUtzB,GAAKA,EAAExH,OAASwH,EAAEuzB,kBAC9BP,EAAKC,EACLA,EAAK,GAEPC,EA3BmB,GA2BdF,EACLG,EA5BmB,GA4BdF,EACD,WAAYjzB,IACdmzB,EAAKnzB,EAAEwzB,QAEL,WAAYxzB,IACdkzB,EAAKlzB,EAAEyzB,QAELzzB,EAAE6wB,WAAaqC,IAEjBA,EAAKC,EACLA,EAAK,IAEFD,GAAMC,IAAOnzB,EAAE0zB,YACE,IAAhB1zB,EAAE0zB,WAEJR,GA1CgB,GA2ChBC,GA3CgB,KA8ChBD,GA7CgB,IA8ChBC,GA9CgB,MAmDhBD,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAEjBC,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAEd,CACLQ,MAAOX,EACPY,MAAOX,EACPY,OAAQX,EACRY,OAAQX,EAEZ,CAqFerd,CAAU9V,GACvB,GAAI9D,EAAO41B,YACT,GAAIp2B,EAAOiM,eAAgB,CACzB,KAAI9K,KAAK2D,IAAIyE,EAAK4uB,QAAUh3B,KAAK2D,IAAIyE,EAAK6uB,SAA+C,OAAO,EAA7ClB,GAAS3tB,EAAK4uB,OAASd,CAC5E,KAAO,MAAIl2B,KAAK2D,IAAIyE,EAAK6uB,QAAUj3B,KAAK2D,IAAIyE,EAAK4uB,SAAmC,OAAO,EAAjCjB,GAAS3tB,EAAK6uB,MAAuB,MAE/FlB,EAAQ/1B,KAAK2D,IAAIyE,EAAK4uB,QAAUh3B,KAAK2D,IAAIyE,EAAK6uB,SAAW7uB,EAAK4uB,OAASd,GAAa9tB,EAAK6uB,OAE3F,GAAc,IAAVlB,EAAa,OAAO,EACpB12B,EAAO21B,SAAQe,GAASA,GAG5B,IAAImB,EAAYr4B,EAAOpD,eAAiBs6B,EAAQ12B,EAAO61B,YAavD,GAZIgC,GAAar4B,EAAO+S,iBAAgBslB,EAAYr4B,EAAO+S,gBACvDslB,GAAar4B,EAAO2T,iBAAgB0kB,EAAYr4B,EAAO2T,gBAS3D8P,IAAsBzjB,EAAOQ,OAAOmL,QAAgB0sB,IAAcr4B,EAAO+S,gBAAkBslB,IAAcr4B,EAAO2T,gBAC5G8P,GAAuBzjB,EAAOQ,OAAO8hB,QAAQhe,EAAEie,kBAC9CviB,EAAOQ,OAAOga,UAAaxa,EAAOQ,OAAOga,SAASxN,QAoChD,CAOL,MAAMiqB,EAAW,CACf52B,KAAM1D,IACNu6B,MAAO/1B,KAAK2D,IAAIoyB,GAChB7e,UAAWlX,KAAKm3B,KAAKpB,IAEjBqB,EAAoB7B,GAAuBO,EAAS52B,KAAOq2B,EAAoBr2B,KAAO,KAAO42B,EAASC,OAASR,EAAoBQ,OAASD,EAAS5e,YAAcqe,EAAoBre,UAC7L,IAAKkgB,EAAmB,CACtB7B,OAAsBl3B,EACtB,IAAIg5B,EAAWx4B,EAAOpD,eAAiBs6B,EAAQ12B,EAAO61B,YACtD,MAAMtiB,EAAe/T,EAAO4T,YACtBI,EAAShU,EAAO6T,MAiBtB,GAhBI2kB,GAAYx4B,EAAO+S,iBAAgBylB,EAAWx4B,EAAO+S,gBACrDylB,GAAYx4B,EAAO2T,iBAAgB6kB,EAAWx4B,EAAO2T,gBACzD3T,EAAOgS,cAAc,GACrBhS,EAAOoX,aAAaohB,GACpBx4B,EAAOwT,iBACPxT,EAAO4V,oBACP5V,EAAO0U,wBACFX,GAAgB/T,EAAO4T,cAAgBI,GAAUhU,EAAO6T,QAC3D7T,EAAO0U,sBAEL1U,EAAOQ,OAAOmL,MAChB3L,EAAO2Z,QAAQ,CACbtB,UAAW4e,EAAS5e,UAAY,EAAI,OAAS,OAC7C2D,cAAc,IAGdhc,EAAOQ,OAAOga,SAASie,OAAQ,CAYjC98B,aAAaq6B,GACbA,OAAUx2B,EACNo3B,EAAkBl+B,QAAU,IAC9Bk+B,EAAkBxZ,QAGpB,MAAMsb,EAAY9B,EAAkBl+B,OAASk+B,EAAkBA,EAAkBl+B,OAAS,QAAK8G,EACzFm5B,EAAa/B,EAAkB,GAErC,GADAA,EAAkBz0B,KAAK80B,GACnByB,IAAczB,EAASC,MAAQwB,EAAUxB,OAASD,EAAS5e,YAAcqgB,EAAUrgB,WAErFue,EAAkBxtB,OAAO,QACpB,GAAIwtB,EAAkBl+B,QAAU,IAAMu+B,EAAS52B,KAAOs4B,EAAWt4B,KAAO,KAAOs4B,EAAWzB,MAAQD,EAASC,OAAS,GAAKD,EAASC,OAAS,EAAG,CAOnJ,MAAM0B,EAAkB1B,EAAQ,EAAI,GAAM,GAC1CR,EAAsBO,EACtBL,EAAkBxtB,OAAO,GACzB4sB,EAAUv5B,EAAS,MACbuD,EAAOwI,WAAcxI,EAAOQ,QAChCR,EAAO8a,eAAe9a,EAAOQ,OAAOC,OAAO,OAAMjB,EAAWo5B,IAC3D,EACL,CAEK5C,IAIHA,EAAUv5B,EAAS,KACjB,GAAIuD,EAAOwI,YAAcxI,EAAOQ,OAAQ,OAExCk2B,EAAsBO,EACtBL,EAAkBxtB,OAAO,GACzBpJ,EAAO8a,eAAe9a,EAAOQ,OAAOC,OAAO,OAAMjB,EAHzB,KAIvB,KAEP,CAQA,GALK+4B,GAAmBjvB,EAAK,SAAUhF,GAGnCtE,EAAOQ,OAAO0kB,UAAYllB,EAAOQ,OAAO0kB,SAAS2T,sBAAsB74B,EAAOklB,SAAS4T,OAEvFt4B,EAAO01B,iBAAmBsC,IAAax4B,EAAO+S,gBAAkBylB,IAAax4B,EAAO2T,gBACtF,OAAO,CAEX,CACF,KAtIgE,CAE9D,MAAMsjB,EAAW,CACf52B,KAAM1D,IACNu6B,MAAO/1B,KAAK2D,IAAIoyB,GAChB7e,UAAWlX,KAAKm3B,KAAKpB,GACrBC,IAAKzuB,GAIHkuB,EAAkBl+B,QAAU,GAC9Bk+B,EAAkBxZ,QAGpB,MAAMsb,EAAY9B,EAAkBl+B,OAASk+B,EAAkBA,EAAkBl+B,OAAS,QAAK8G,EAmB/F,GAlBAo3B,EAAkBz0B,KAAK80B,GAQnByB,GACEzB,EAAS5e,YAAcqgB,EAAUrgB,WAAa4e,EAASC,MAAQwB,EAAUxB,OAASD,EAAS52B,KAAOq4B,EAAUr4B,KAAO,MACrH22B,EAAcC,GAGhBD,EAAcC,GAtFpB,SAAuBA,GACrB,MAAMz2B,EAASR,EAAOQ,OAAOy1B,WAC7B,GAAIgB,EAAS5e,UAAY,GACvB,GAAIrY,EAAO6T,QAAU7T,EAAOQ,OAAOmL,MAAQnL,EAAO01B,eAEhD,OAAO,OAEJ,GAAIl2B,EAAO4T,cAAgB5T,EAAOQ,OAAOmL,MAAQnL,EAAO01B,eAE7D,OAAO,EAET,OAAO,CACT,CA+EQ6C,CAAc9B,GAChB,OAAO,CAEX,CAoGA,OADI3yB,EAAE0Z,eAAgB1Z,EAAE0Z,iBAAsB1Z,EAAEyxB,aAAc,GACvD,CACT,CACA,SAAS5tB,EAAOM,GACd,IAAImW,EAAW5e,EAAOnD,GACwB,cAA1CmD,EAAOQ,OAAOy1B,WAAWK,eAC3B1X,EAAWlkB,SAASxB,cAAc8G,EAAOQ,OAAOy1B,WAAWK,eAE7D1X,EAASnW,GAAQ,aAAcouB,GAC/BjY,EAASnW,GAAQ,aAAcsuB,GAC/BnY,EAASnW,GAAQ,QAAS8rB,EAC5B,CACA,SAAStL,IACP,OAAIjpB,EAAOQ,OAAO8N,SAChBtO,EAAOU,UAAU5H,oBAAoB,QAASy7B,IACvC,IAELv0B,EAAOi2B,WAAWjpB,UACtB7E,EAAO,oBACPnI,EAAOi2B,WAAWjpB,SAAU,GACrB,EACT,CACA,SAASgc,IACP,OAAIhpB,EAAOQ,OAAO8N,SAChBtO,EAAOU,UAAU7H,iBAAiB6P,MAAO6rB,IAClC,KAEJv0B,EAAOi2B,WAAWjpB,UACvB7E,EAAO,uBACPnI,EAAOi2B,WAAWjpB,SAAU,GACrB,EACT,CACA9E,EAAG,OAAQ,MACJlI,EAAOQ,OAAOy1B,WAAWjpB,SAAWhN,EAAOQ,OAAO8N,SACrD0a,IAEEhpB,EAAOQ,OAAOy1B,WAAWjpB,SAASic,MAExC/gB,EAAG,UAAW,KACRlI,EAAOQ,OAAO8N,SAChB2a,IAEEjpB,EAAOi2B,WAAWjpB,SAASgc,MAEjChxB,OAAOqU,OAAOrM,EAAOi2B,WAAY,CAC/BhN,SACAD,WAEJ,EAqBA,UAAoBhpB,OAClBA,EAAMsrB,aACNA,EAAYpjB,GACZA,EAAEoB,KACFA,IAmBA,SAAS0vB,EAAMn8B,GACb,IAAIo8B,EACJ,OAAIp8B,GAAoB,iBAAPA,GAAmBmD,EAAOmK,YACzC8uB,EAAMj5B,EAAOnD,GAAG3D,cAAc2D,IAAOmD,EAAOutB,OAAOr0B,cAAc2D,GAC7Do8B,GAAYA,GAEdp8B,IACgB,iBAAPA,IAAiBo8B,EAAM,IAAIv+B,SAASvB,iBAAiB0D,KAC5DmD,EAAOQ,OAAOsmB,mBAAmC,iBAAPjqB,GAAmBo8B,GAAOA,EAAIvgC,OAAS,GAA+C,IAA1CsH,EAAOnD,GAAG1D,iBAAiB0D,GAAInE,OACvHugC,EAAMj5B,EAAOnD,GAAG3D,cAAc2D,GACrBo8B,GAAsB,IAAfA,EAAIvgC,SACpBugC,EAAMA,EAAI,KAGVp8B,IAAOo8B,EAAYp8B,EAEhBo8B,EACT,CACA,SAASC,EAASr8B,EAAIs8B,GACpB,MAAM34B,EAASR,EAAOQ,OAAOokB,YAC7B/nB,EAAK8H,EAAkB9H,IACpBpE,QAAQ2gC,IACLA,IACFA,EAAMx2B,UAAUu2B,EAAW,MAAQ,aAAa34B,EAAO64B,cAAc98B,MAAM,MACrD,WAAlB68B,EAAME,UAAsBF,EAAMD,SAAWA,GAC7Cn5B,EAAOQ,OAAO6Q,eAAiBrR,EAAOgN,SACxCosB,EAAMx2B,UAAU5C,EAAO4nB,SAAW,MAAQ,UAAUpnB,EAAO+4B,aAInE,CACA,SAAS1tB,IAEP,MAAMgZ,OACJA,EAAMC,OACNA,GACE9kB,EAAO4kB,WACX,GAAI5kB,EAAOQ,OAAOmL,KAGhB,OAFAutB,EAASpU,GAAQ,QACjBoU,EAASrU,GAAQ,GAGnBqU,EAASpU,EAAQ9kB,EAAO4T,cAAgB5T,EAAOQ,OAAOkL,QACtDwtB,EAASrU,EAAQ7kB,EAAO6T,QAAU7T,EAAOQ,OAAOkL,OAClD,CACA,SAAS8tB,EAAYl1B,GACnBA,EAAE0Z,mBACEhe,EAAO4T,aAAgB5T,EAAOQ,OAAOmL,MAAS3L,EAAOQ,OAAOkL,UAChE1L,EAAOma,YACP7Q,EAAK,kBACP,CACA,SAASmwB,EAAYn1B,GACnBA,EAAE0Z,mBACEhe,EAAO6T,OAAU7T,EAAOQ,OAAOmL,MAAS3L,EAAOQ,OAAOkL,UAC1D1L,EAAO6Z,YACPvQ,EAAK,kBACP,CACA,SAASid,IACP,MAAM/lB,EAASR,EAAOQ,OAAOokB,WAK7B,GAJA5kB,EAAOQ,OAAOokB,WAAawJ,GAA0BpuB,EAAQA,EAAOuoB,eAAe3D,WAAY5kB,EAAOQ,OAAOokB,WAAY,CACvHC,OAAQ,qBACRC,OAAQ,wBAEJtkB,EAAOqkB,SAAUrkB,EAAOskB,OAAS,OACvC,IAAID,EAASmU,EAAMx4B,EAAOqkB,QACtBC,EAASkU,EAAMx4B,EAAOskB,QAC1B9sB,OAAOqU,OAAOrM,EAAO4kB,WAAY,CAC/BC,SACAC,WAEFD,EAASlgB,EAAkBkgB,GAC3BC,EAASngB,EAAkBmgB,GAC3B,MAAM4U,EAAa,CAAC78B,EAAIgE,KACtB,GAAIhE,EAAI,CACN,GAAI2D,EAAOm5B,UAAY98B,EAAGwF,QAAQ,6CAA+CxF,EAAG3D,cAAc,OAAQ,CACxG,MAAM0gC,EAASl/B,SAASnB,cAAc,OACtC0L,EAAa20B,EAAQ1J,IACrBrzB,EAAGg9B,YAAYD,EAAO1gC,cAAc,QACpC0gC,EAAO9vB,QACT,CACAjN,EAAGhE,iBAAiB,QAAiB,SAARgI,EAAiB44B,EAAcD,EAC9D,EACKx5B,EAAOgN,SAAWnQ,GACrBA,EAAG+F,UAAUC,OAAOrC,EAAO+4B,UAAUh9B,MAAM,OAG/CsoB,EAAOpsB,QAAQoE,GAAM68B,EAAW78B,EAAI,SACpCioB,EAAOrsB,QAAQoE,GAAM68B,EAAW78B,EAAI,QACtC,CACA,SAAS4wB,IACP,IAAI5I,OACFA,EAAMC,OACNA,GACE9kB,EAAO4kB,WACXC,EAASlgB,EAAkBkgB,GAC3BC,EAASngB,EAAkBmgB,GAC3B,MAAMgV,EAAgB,CAACj9B,EAAIgE,KACzBhE,EAAG/D,oBAAoB,QAAiB,SAAR+H,EAAiB44B,EAAcD,GAC/D38B,EAAG+F,UAAUkH,UAAU9J,EAAOQ,OAAOokB,WAAWyU,cAAc98B,MAAM,OAEtEsoB,EAAOpsB,QAAQoE,GAAMi9B,EAAcj9B,EAAI,SACvCioB,EAAOrsB,QAAQoE,GAAMi9B,EAAcj9B,EAAI,QACzC,CAvHAyuB,EAAa,CACX1G,WAAY,CACVC,OAAQ,KACRC,OAAQ,KACR6U,UAAU,EACVI,aAAa,EACbV,cAAe,yBACfW,YAAa,uBACbT,UAAW,qBACXU,wBAAyB,gCAG7Bj6B,EAAO4kB,WAAa,CAClBC,OAAQ,KACRC,OAAQ,KACRoL,aAyGFhoB,EAAG,OAAQ,MACgC,IAArClI,EAAOQ,OAAOokB,WAAW5X,QAE3Bgc,KAEAzC,IACA1a,OAGJ3D,EAAG,8BAA+B,KAChC2D,MAEF3D,EAAG,UAAW,KACZulB,MAEFvlB,EAAG,iBAAkB,KACnB,IAAI2c,OACFA,EAAMC,OACNA,GACE9kB,EAAO4kB,WACXC,EAASlgB,EAAkBkgB,GAC3BC,EAASngB,EAAkBmgB,GACvB9kB,EAAOgN,QACTnB,IAGF,IAAIgZ,KAAWC,GAAQxsB,OAAOuE,KAAQA,GAAIpE,QAAQoE,GAAMA,EAAG+F,UAAUC,IAAI7C,EAAOQ,OAAOokB,WAAW2U,cAEpGrxB,EAAG,QAAS,CAACupB,EAAIntB,KACf,IAAIugB,OACFA,EAAMC,OACNA,GACE9kB,EAAO4kB,WACXC,EAASlgB,EAAkBkgB,GAC3BC,EAASngB,EAAkBmgB,GAC3B,MAAMlG,EAAWta,EAAEpM,OACnB,IAAIgiC,EAAiBpV,EAAOtd,SAASoX,IAAaiG,EAAOrd,SAASoX,GAClE,GAAI5e,EAAOmK,YAAc+vB,EAAgB,CACvC,MAAMtjB,EAAOtS,EAAEsS,MAAQtS,EAAEqb,cAAgBrb,EAAEqb,eACvC/I,IACFsjB,EAAiBtjB,EAAK7B,KAAK8B,GAAUgO,EAAOrd,SAASqP,IAAWiO,EAAOtd,SAASqP,IAEpF,CACA,GAAI7W,EAAOQ,OAAOokB,WAAWmV,cAAgBG,EAAgB,CAC3D,GAAIl6B,EAAOm6B,YAAcn6B,EAAOQ,OAAO25B,YAAcn6B,EAAOQ,OAAO25B,WAAWC,YAAcp6B,EAAOm6B,WAAWt9B,KAAO+hB,GAAY5e,EAAOm6B,WAAWt9B,GAAGgN,SAAS+U,IAAY,OAC3K,IAAIyb,EACAxV,EAAOnsB,OACT2hC,EAAWxV,EAAO,GAAGjiB,UAAUiH,SAAS7J,EAAOQ,OAAOokB,WAAWoV,aACxDlV,EAAOpsB,SAChB2hC,EAAWvV,EAAO,GAAGliB,UAAUiH,SAAS7J,EAAOQ,OAAOokB,WAAWoV,cAGjE1wB,GADe,IAAb+wB,EACG,iBAEA,kBAEP,IAAIxV,KAAWC,GAAQxsB,OAAOuE,KAAQA,GAAIpE,QAAQoE,GAAMA,EAAG+F,UAAU03B,OAAOt6B,EAAOQ,OAAOokB,WAAWoV,aACvG,IAEF,MAKMhR,EAAU,KACdhpB,EAAOnD,GAAG+F,UAAUC,OAAO7C,EAAOQ,OAAOokB,WAAWqV,wBAAwB19B,MAAM,MAClFkxB,KAEFz1B,OAAOqU,OAAOrM,EAAO4kB,WAAY,CAC/BqE,OAVa,KACbjpB,EAAOnD,GAAG+F,UAAUkH,UAAU9J,EAAOQ,OAAOokB,WAAWqV,wBAAwB19B,MAAM,MACrFgqB,IACA1a,KAQAmd,UACAnd,SACA0a,OACAkH,WAEJ,EAQA,UAAoBztB,OAClBA,EAAMsrB,aACNA,EAAYpjB,GACZA,EAAEoB,KACFA,IAEA,MAAMixB,EAAM,oBAqCZ,IAAIC,EApCJlP,EAAa,CACX6O,WAAY,CACVt9B,GAAI,KACJ49B,cAAe,OACfL,WAAW,EACXL,aAAa,EACbW,aAAc,KACdC,kBAAmB,KACnBC,eAAgB,KAChBC,aAAc,KACdC,qBAAqB,EACrB3c,KAAM,UAEN4c,gBAAgB,EAChBC,mBAAoB,EACpBC,sBAAuBC,GAAUA,EACjCC,oBAAqBD,GAAUA,EAC/BE,YAAa,GAAGb,WAChBc,kBAAmB,GAAGd,kBACtBe,cAAe,GAAGf,KAClBgB,aAAc,GAAGhB,YACjBiB,WAAY,GAAGjB,UACfP,YAAa,GAAGO,WAChBkB,qBAAsB,GAAGlB,qBACzBmB,yBAA0B,GAAGnB,yBAC7BoB,eAAgB,GAAGpB,cACnBhB,UAAW,GAAGgB,SACdqB,gBAAiB,GAAGrB,eACpBsB,cAAe,GAAGtB,aAClBuB,wBAAyB,GAAGvB,gBAGhCv6B,EAAOm6B,WAAa,CAClBt9B,GAAI,KACJk/B,QAAS,IAGX,IAAIC,EAAqB,EACzB,SAASC,IACP,OAAQj8B,EAAOQ,OAAO25B,WAAWt9B,KAAOmD,EAAOm6B,WAAWt9B,IAAMiG,MAAMC,QAAQ/C,EAAOm6B,WAAWt9B,KAAuC,IAAhCmD,EAAOm6B,WAAWt9B,GAAGnE,MAC9H,CACA,SAASwjC,EAAeC,EAAU3D,GAChC,MAAM6C,kBACJA,GACEr7B,EAAOQ,OAAO25B,WACbgC,IACLA,EAAWA,GAAyB,SAAb3D,EAAsB,WAAa,QAAtC,qBAElB2D,EAASv5B,UAAUC,IAAI,GAAGw4B,KAAqB7C,MAC/C2D,EAAWA,GAAyB,SAAb3D,EAAsB,WAAa,QAAtC,oBAElB2D,EAASv5B,UAAUC,IAAI,GAAGw4B,KAAqB7C,KAAYA,KAGjE,CAWA,SAAS4D,EAAc93B,GACrB,MAAM63B,EAAW73B,EAAEpM,OAAOgS,QAAQimB,GAAkBnwB,EAAOQ,OAAO25B,WAAWiB,cAC7E,IAAKe,EACH,OAEF73B,EAAE0Z,iBACF,MAAM7U,EAAQtF,EAAas4B,GAAYn8B,EAAOQ,OAAOiP,eACrD,GAAIzP,EAAOQ,OAAOmL,KAAM,CACtB,GAAI3L,EAAO4L,YAAczC,EAAO,OAChC,MAAMkzB,GAnBgB1hB,EAmBiB3a,EAAO4L,UAnBbzM,EAmBwBgK,EAnBbzQ,EAmBoBsH,EAAOyK,OAAO/R,QAjBhFyG,GAAwBzG,KACM,GAF9BiiB,GAAwBjiB,GAGf,OACEyG,IAAcwb,EAAY,EAC5B,gBADF,GAeiB,SAAlB0hB,EACFr8B,EAAO6Z,YACoB,aAAlBwiB,EACTr8B,EAAOma,YAEPna,EAAOqZ,YAAYlQ,EAEvB,MACEnJ,EAAOuY,QAAQpP,GA5BnB,IAA0BwR,EAAWxb,EAAWzG,CA8BhD,CACA,SAASmT,IAEP,MAAMe,EAAM5M,EAAO4M,IACbpM,EAASR,EAAOQ,OAAO25B,WAC7B,GAAI8B,IAAwB,OAC5B,IAGIl7B,EACA+U,EAJAjZ,EAAKmD,EAAOm6B,WAAWt9B,GAC3BA,EAAK8H,EAAkB9H,GAIvB,MAAMqQ,EAAelN,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAAUhN,EAAO+M,QAAQtC,OAAO/R,OAASsH,EAAOyK,OAAO/R,OAC9G4jC,EAAQt8B,EAAOQ,OAAOmL,KAAOxK,KAAK6J,KAAKkC,EAAelN,EAAOQ,OAAOiP,gBAAkBzP,EAAOmN,SAASzU,OAY5G,GAXIsH,EAAOQ,OAAOmL,MAChBmK,EAAgB9V,EAAO+V,mBAAqB,EAC5ChV,EAAUf,EAAOQ,OAAOiP,eAAiB,EAAItO,KAAK8N,MAAMjP,EAAO4L,UAAY5L,EAAOQ,OAAOiP,gBAAkBzP,EAAO4L,gBAC7E,IAArB5L,EAAOkR,WACvBnQ,EAAUf,EAAOkR,UACjB4E,EAAgB9V,EAAOgW,oBAEvBF,EAAgB9V,EAAO8V,eAAiB,EACxC/U,EAAUf,EAAOiL,aAAe,GAGd,YAAhBzK,EAAO2d,MAAsBne,EAAOm6B,WAAW4B,SAAW/7B,EAAOm6B,WAAW4B,QAAQrjC,OAAS,EAAG,CAClG,MAAMqjC,EAAU/7B,EAAOm6B,WAAW4B,QAClC,IAAIQ,EACA3hB,EACA4hB,EAsBJ,GArBIh8B,EAAOu6B,iBACTP,EAAaj2B,EAAiBw3B,EAAQ,GAAI/7B,EAAOiM,eAAiB,QAAU,UAAU,GACtFpP,EAAGpE,QAAQ2gC,IACTA,EAAM1/B,MAAMsG,EAAOiM,eAAiB,QAAU,UAAeuuB,GAAch6B,EAAOw6B,mBAAqB,GAA7C,OAExDx6B,EAAOw6B,mBAAqB,QAAuBx7B,IAAlBsW,IACnCkmB,GAAsBj7B,GAAW+U,GAAiB,GAC9CkmB,EAAqBx7B,EAAOw6B,mBAAqB,EACnDgB,EAAqBx7B,EAAOw6B,mBAAqB,EACxCgB,EAAqB,IAC9BA,EAAqB,IAGzBO,EAAap7B,KAAKC,IAAIL,EAAUi7B,EAAoB,GACpDphB,EAAY2hB,GAAcp7B,KAAKE,IAAI06B,EAAQrjC,OAAQ8H,EAAOw6B,oBAAsB,GAChFwB,GAAY5hB,EAAY2hB,GAAc,GAExCR,EAAQtjC,QAAQ0jC,IACd,MAAMM,EAAkB,IAAI,CAAC,GAAI,QAAS,aAAc,QAAS,aAAc,SAASj/B,IAAI+0B,GAAU,GAAG/xB,EAAO66B,oBAAoB9I,MAAW/0B,IAAI+H,GAAkB,iBAANA,GAAkBA,EAAEiC,SAAS,KAAOjC,EAAEhJ,MAAM,KAAOgJ,GAAGm3B,OACrNP,EAASv5B,UAAUkH,UAAU2yB,KAE3B5/B,EAAGnE,OAAS,EACdqjC,EAAQtjC,QAAQkkC,IACd,MAAMC,EAAc/4B,EAAa84B,GAC7BC,IAAgB77B,EAClB47B,EAAO/5B,UAAUC,OAAOrC,EAAO66B,kBAAkB9+B,MAAM,MAC9CyD,EAAOmK,WAChBwyB,EAAOhjC,aAAa,OAAQ,UAE1B6G,EAAOu6B,iBACL6B,GAAeL,GAAcK,GAAehiB,GAC9C+hB,EAAO/5B,UAAUC,OAAO,GAAGrC,EAAO66B,yBAAyB9+B,MAAM,MAE/DqgC,IAAgBL,GAClBL,EAAeS,EAAQ,QAErBC,IAAgBhiB,GAClBshB,EAAeS,EAAQ,eAIxB,CACL,MAAMA,EAASZ,EAAQh7B,GASvB,GARI47B,GACFA,EAAO/5B,UAAUC,OAAOrC,EAAO66B,kBAAkB9+B,MAAM,MAErDyD,EAAOmK,WACT4xB,EAAQtjC,QAAQ,CAAC0jC,EAAUS,KACzBT,EAASxiC,aAAa,OAAQijC,IAAgB77B,EAAU,gBAAkB,YAG1EP,EAAOu6B,eAAgB,CACzB,MAAM8B,EAAuBd,EAAQQ,GAC/BO,EAAsBf,EAAQnhB,GACpC,IAAK,IAAI5b,EAAIu9B,EAAYv9B,GAAK4b,EAAW5b,GAAK,EACxC+8B,EAAQ/8B,IACV+8B,EAAQ/8B,GAAG4D,UAAUC,OAAO,GAAGrC,EAAO66B,yBAAyB9+B,MAAM,MAGzE2/B,EAAeW,EAAsB,QACrCX,EAAeY,EAAqB,OACtC,CACF,CACA,GAAIt8B,EAAOu6B,eAAgB,CACzB,MAAMgC,EAAuB57B,KAAKE,IAAI06B,EAAQrjC,OAAQ8H,EAAOw6B,mBAAqB,GAC5EgC,GAAiBxC,EAAauC,EAAuBvC,GAAc,EAAIgC,EAAWhC,EAClF/G,EAAa7mB,EAAM,QAAU,OACnCmvB,EAAQtjC,QAAQkkC,IACdA,EAAOjjC,MAAMsG,EAAOiM,eAAiBwnB,EAAa,OAAS,GAAGuJ,OAElE,CACF,CACAngC,EAAGpE,QAAQ,CAAC2gC,EAAO6D,KASjB,GARoB,aAAhBz8B,EAAO2d,OACTib,EAAMjgC,iBAAiBg3B,GAAkB3vB,EAAO+6B,eAAe9iC,QAAQykC,IACrEA,EAAWC,YAAc38B,EAAOy6B,sBAAsBl6B,EAAU,KAElEq4B,EAAMjgC,iBAAiBg3B,GAAkB3vB,EAAOg7B,aAAa/iC,QAAQ2kC,IACnEA,EAAQD,YAAc38B,EAAO26B,oBAAoBmB,MAGjC,gBAAhB97B,EAAO2d,KAAwB,CACjC,IAAIkf,EAEFA,EADE78B,EAAOs6B,oBACc96B,EAAOiM,eAAiB,WAAa,aAErCjM,EAAOiM,eAAiB,aAAe,WAEhE,MAAMqxB,GAASv8B,EAAU,GAAKu7B,EAC9B,IAAIiB,EAAS,EACTC,EAAS,EACgB,eAAzBH,EACFE,EAASD,EAETE,EAASF,EAEXlE,EAAMjgC,iBAAiBg3B,GAAkB3vB,EAAOi7B,uBAAuBhjC,QAAQglC,IAC7EA,EAAW/jC,MAAM4D,UAAY,6BAA6BigC,aAAkBC,KAC5EC,EAAW/jC,MAAM+tB,mBAAqB,GAAGznB,EAAOQ,OAAOC,WAE3D,CACoB,WAAhBD,EAAO2d,MAAqB3d,EAAOq6B,cACrC51B,EAAam0B,EAAO54B,EAAOq6B,aAAa76B,EAAQe,EAAU,EAAGu7B,IAC1C,IAAfW,GAAkB3zB,EAAK,mBAAoB8vB,KAE5B,IAAf6D,GAAkB3zB,EAAK,mBAAoB8vB,GAC/C9vB,EAAK,mBAAoB8vB,IAEvBp5B,EAAOQ,OAAO6Q,eAAiBrR,EAAOgN,SACxCosB,EAAMx2B,UAAU5C,EAAO4nB,SAAW,MAAQ,UAAUpnB,EAAO+4B,YAGjE,CACA,SAASmE,IAEP,MAAMl9B,EAASR,EAAOQ,OAAO25B,WAC7B,GAAI8B,IAAwB,OAC5B,MAAM/uB,EAAelN,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAAUhN,EAAO+M,QAAQtC,OAAO/R,OAASsH,EAAOkL,MAAQlL,EAAOQ,OAAO0K,KAAKC,KAAO,EAAInL,EAAOyK,OAAO/R,OAASyI,KAAK6J,KAAKhL,EAAOQ,OAAO0K,KAAKC,MAAQnL,EAAOyK,OAAO/R,OAC7N,IAAImE,EAAKmD,EAAOm6B,WAAWt9B,GAC3BA,EAAK8H,EAAkB9H,GACvB,IAAI8gC,EAAiB,GACrB,GAAoB,YAAhBn9B,EAAO2d,KAAoB,CAC7B,IAAIyf,EAAkB59B,EAAOQ,OAAOmL,KAAOxK,KAAK6J,KAAKkC,EAAelN,EAAOQ,OAAOiP,gBAAkBzP,EAAOmN,SAASzU,OAChHsH,EAAOQ,OAAOga,UAAYxa,EAAOQ,OAAOga,SAASxN,SAAW4wB,EAAkB1wB,IAChF0wB,EAAkB1wB,GAEpB,IAAK,IAAIlO,EAAI,EAAGA,EAAI4+B,EAAiB5+B,GAAK,EACpCwB,EAAOk6B,aACTiD,GAAkBn9B,EAAOk6B,aAAan8B,KAAKyB,EAAQhB,EAAGwB,EAAO46B,aAG7DuC,GAAkB,IAAIn9B,EAAOi6B,iBAAiBz6B,EAAOmK,UAAY,gBAAkB,aAAa3J,EAAO46B,kBAAkB56B,EAAOi6B,gBAGtI,CACoB,aAAhBj6B,EAAO2d,OAEPwf,EADEn9B,EAAOo6B,eACQp6B,EAAOo6B,eAAer8B,KAAKyB,EAAQQ,EAAO+6B,aAAc/6B,EAAOg7B,YAE/D,gBAAgBh7B,EAAO+6B,wCAAkD/6B,EAAOg7B,uBAGjF,gBAAhBh7B,EAAO2d,OAEPwf,EADEn9B,EAAOm6B,kBACQn6B,EAAOm6B,kBAAkBp8B,KAAKyB,EAAQQ,EAAOi7B,sBAE7C,gBAAgBj7B,EAAOi7B,iCAG5Cz7B,EAAOm6B,WAAW4B,QAAU,GAC5Bl/B,EAAGpE,QAAQ2gC,IACW,WAAhB54B,EAAO2d,MACTlZ,EAAam0B,EAAOuE,GAAkB,IAEpB,YAAhBn9B,EAAO2d,MACTne,EAAOm6B,WAAW4B,QAAQ55B,QAAQi3B,EAAMjgC,iBAAiBg3B,GAAkB3vB,EAAO46B,iBAGlE,WAAhB56B,EAAO2d,MACT7U,EAAK,mBAAoBzM,EAAG,GAEhC,CACA,SAAS0pB,IACPvmB,EAAOQ,OAAO25B,WAAa/L,GAA0BpuB,EAAQA,EAAOuoB,eAAe4R,WAAYn6B,EAAOQ,OAAO25B,WAAY,CACvHt9B,GAAI,sBAEN,MAAM2D,EAASR,EAAOQ,OAAO25B,WAC7B,IAAK35B,EAAO3D,GAAI,OAChB,IAAIA,EACqB,iBAAd2D,EAAO3D,IAAmBmD,EAAOmK,YAC1CtN,EAAKmD,EAAOnD,GAAG3D,cAAcsH,EAAO3D,KAEjCA,GAA2B,iBAAd2D,EAAO3D,KACvBA,EAAK,IAAInC,SAASvB,iBAAiBqH,EAAO3D,MAEvCA,IACHA,EAAK2D,EAAO3D,IAETA,GAAoB,IAAdA,EAAGnE,SACVsH,EAAOQ,OAAOsmB,mBAA0C,iBAAdtmB,EAAO3D,IAAmBiG,MAAMC,QAAQlG,IAAOA,EAAGnE,OAAS,IACvGmE,EAAK,IAAImD,EAAOnD,GAAG1D,iBAAiBqH,EAAO3D,KAEvCA,EAAGnE,OAAS,IACdmE,EAAKA,EAAGkY,KAAKqkB,GACPp1B,EAAeo1B,EAAO,WAAW,KAAOp5B,EAAOnD,MAKrDiG,MAAMC,QAAQlG,IAAqB,IAAdA,EAAGnE,SAAcmE,EAAKA,EAAG,IAClD7E,OAAOqU,OAAOrM,EAAOm6B,WAAY,CAC/Bt9B,OAEFA,EAAK8H,EAAkB9H,GACvBA,EAAGpE,QAAQ2gC,IACW,YAAhB54B,EAAO2d,MAAsB3d,EAAO45B,WACtChB,EAAMx2B,UAAUC,QAAQrC,EAAOm7B,gBAAkB,IAAIp/B,MAAM,MAE7D68B,EAAMx2B,UAAUC,IAAIrC,EAAO86B,cAAgB96B,EAAO2d,MAClDib,EAAMx2B,UAAUC,IAAI7C,EAAOiM,eAAiBzL,EAAOo7B,gBAAkBp7B,EAAOq7B,eACxD,YAAhBr7B,EAAO2d,MAAsB3d,EAAOu6B,iBACtC3B,EAAMx2B,UAAUC,IAAI,GAAGrC,EAAO86B,gBAAgB96B,EAAO2d,gBACrD6d,EAAqB,EACjBx7B,EAAOw6B,mBAAqB,IAC9Bx6B,EAAOw6B,mBAAqB,IAGZ,gBAAhBx6B,EAAO2d,MAA0B3d,EAAOs6B,qBAC1C1B,EAAMx2B,UAAUC,IAAIrC,EAAOk7B,0BAEzBl7B,EAAO45B,WACThB,EAAMvgC,iBAAiB,QAASujC,GAE7Bp8B,EAAOgN,SACVosB,EAAMx2B,UAAUC,IAAIrC,EAAO+4B,aAGjC,CACA,SAAS9L,IACP,MAAMjtB,EAASR,EAAOQ,OAAO25B,WAC7B,GAAI8B,IAAwB,OAC5B,IAAIp/B,EAAKmD,EAAOm6B,WAAWt9B,GACvBA,IACFA,EAAK8H,EAAkB9H,GACvBA,EAAGpE,QAAQ2gC,IACTA,EAAMx2B,UAAUkH,OAAOtJ,EAAOw5B,aAC9BZ,EAAMx2B,UAAUkH,OAAOtJ,EAAO86B,cAAgB96B,EAAO2d,MACrDib,EAAMx2B,UAAUkH,OAAO9J,EAAOiM,eAAiBzL,EAAOo7B,gBAAkBp7B,EAAOq7B,eAC3Er7B,EAAO45B,YACThB,EAAMx2B,UAAUkH,WAAWtJ,EAAOm7B,gBAAkB,IAAIp/B,MAAM,MAC9D68B,EAAMtgC,oBAAoB,QAASsjC,OAIrCp8B,EAAOm6B,WAAW4B,SAAS/7B,EAAOm6B,WAAW4B,QAAQtjC,QAAQ2gC,GAASA,EAAMx2B,UAAUkH,UAAUtJ,EAAO66B,kBAAkB9+B,MAAM,MACrI,CACA2L,EAAG,kBAAmB,KACpB,IAAKlI,EAAOm6B,aAAen6B,EAAOm6B,WAAWt9B,GAAI,OACjD,MAAM2D,EAASR,EAAOQ,OAAO25B,WAC7B,IAAIt9B,GACFA,GACEmD,EAAOm6B,WACXt9B,EAAK8H,EAAkB9H,GACvBA,EAAGpE,QAAQ2gC,IACTA,EAAMx2B,UAAUkH,OAAOtJ,EAAOo7B,gBAAiBp7B,EAAOq7B,eACtDzC,EAAMx2B,UAAUC,IAAI7C,EAAOiM,eAAiBzL,EAAOo7B,gBAAkBp7B,EAAOq7B,mBAGhF3zB,EAAG,OAAQ,MACgC,IAArClI,EAAOQ,OAAO25B,WAAWntB,QAE3Bgc,KAEAzC,IACAmX,IACA7xB,OAGJ3D,EAAG,oBAAqB,UACU,IAArBlI,EAAOkR,WAChBrF,MAGJ3D,EAAG,kBAAmB,KACpB2D,MAEF3D,EAAG,uBAAwB,KACzBw1B,IACA7xB,MAEF3D,EAAG,UAAW,KACZulB,MAEFvlB,EAAG,iBAAkB,KACnB,IAAIrL,GACFA,GACEmD,EAAOm6B,WACPt9B,IACFA,EAAK8H,EAAkB9H,GACvBA,EAAGpE,QAAQ2gC,GAASA,EAAMx2B,UAAU5C,EAAOgN,QAAU,SAAW,OAAOhN,EAAOQ,OAAO25B,WAAWZ,eAGpGrxB,EAAG,cAAe,KAChB2D,MAEF3D,EAAG,QAAS,CAACupB,EAAIntB,KACf,MAAMsa,EAAWta,EAAEpM,OACb2E,EAAK8H,EAAkB3E,EAAOm6B,WAAWt9B,IAC/C,GAAImD,EAAOQ,OAAO25B,WAAWt9B,IAAMmD,EAAOQ,OAAO25B,WAAWJ,aAAel9B,GAAMA,EAAGnE,OAAS,IAAMkmB,EAAShc,UAAUiH,SAAS7J,EAAOQ,OAAO25B,WAAWiB,aAAc,CACpK,GAAIp7B,EAAO4kB,aAAe5kB,EAAO4kB,WAAWC,QAAUjG,IAAa5e,EAAO4kB,WAAWC,QAAU7kB,EAAO4kB,WAAWE,QAAUlG,IAAa5e,EAAO4kB,WAAWE,QAAS,OACnK,MAAMuV,EAAWx9B,EAAG,GAAG+F,UAAUiH,SAAS7J,EAAOQ,OAAO25B,WAAWH,aAEjE1wB,GADe,IAAb+wB,EACG,iBAEA,kBAEPx9B,EAAGpE,QAAQ2gC,GAASA,EAAMx2B,UAAU03B,OAAOt6B,EAAOQ,OAAO25B,WAAWH,aACtE,IAEF,MAaMhR,EAAU,KACdhpB,EAAOnD,GAAG+F,UAAUC,IAAI7C,EAAOQ,OAAO25B,WAAW2B,yBACjD,IAAIj/B,GACFA,GACEmD,EAAOm6B,WACPt9B,IACFA,EAAK8H,EAAkB9H,GACvBA,EAAGpE,QAAQ2gC,GAASA,EAAMx2B,UAAUC,IAAI7C,EAAOQ,OAAO25B,WAAW2B,2BAEnErO,KAEFz1B,OAAOqU,OAAOrM,EAAOm6B,WAAY,CAC/BlR,OAzBa,KACbjpB,EAAOnD,GAAG+F,UAAUkH,OAAO9J,EAAOQ,OAAO25B,WAAW2B,yBACpD,IAAIj/B,GACFA,GACEmD,EAAOm6B,WACPt9B,IACFA,EAAK8H,EAAkB9H,GACvBA,EAAGpE,QAAQ2gC,GAASA,EAAMx2B,UAAUkH,OAAO9J,EAAOQ,OAAO25B,WAAW2B,2BAEtEvV,IACAmX,IACA7xB,KAeAmd,UACA0U,SACA7xB,SACA0a,OACAkH,WAEJ,EAEA,UAAmBztB,OACjBA,EAAMsrB,aACNA,EAAYpjB,GACZA,EAAEoB,KACFA,IAEA,MAAM5O,EAAWF,IACjB,IAGIqjC,EACAC,EACAC,EACAC,EANA1e,GAAY,EACZ0W,EAAU,KACViI,EAAc,KAuBlB,SAAS7mB,IACP,IAAKpX,EAAOQ,OAAO09B,UAAUrhC,KAAOmD,EAAOk+B,UAAUrhC,GAAI,OACzD,MAAMqhC,UACJA,EACAvxB,aAAcC,GACZ5M,GACEm+B,OACJA,EAAMthC,GACNA,GACEqhC,EACE19B,EAASR,EAAOQ,OAAO09B,UACvBh9B,EAAWlB,EAAOQ,OAAOmL,KAAO3L,EAAO8T,aAAe9T,EAAOkB,SACnE,IAAIk9B,EAAUN,EACVO,GAAUN,EAAYD,GAAY58B,EAClC0L,GACFyxB,GAAUA,EACNA,EAAS,GACXD,EAAUN,EAAWO,EACrBA,EAAS,IACCA,EAASP,EAAWC,IAC9BK,EAAUL,EAAYM,IAEfA,EAAS,GAClBD,EAAUN,EAAWO,EACrBA,EAAS,GACAA,EAASP,EAAWC,IAC7BK,EAAUL,EAAYM,GAEpBr+B,EAAOiM,gBACTkyB,EAAOzkC,MAAM4D,UAAY,eAAe+gC,aACxCF,EAAOzkC,MAAM8M,MAAQ,GAAG43B,QAExBD,EAAOzkC,MAAM4D,UAAY,oBAAoB+gC,UAC7CF,EAAOzkC,MAAMgN,OAAS,GAAG03B,OAEvB59B,EAAO89B,OACT3iC,aAAaq6B,GACbn5B,EAAGnD,MAAM6kC,QAAU,EACnBvI,EAAUt6B,WAAW,KACnBmB,EAAGnD,MAAM6kC,QAAU,EACnB1hC,EAAGnD,MAAM+tB,mBAAqB,SAC7B,KAEP,CAKA,SAAS3b,IACP,IAAK9L,EAAOQ,OAAO09B,UAAUrhC,KAAOmD,EAAOk+B,UAAUrhC,GAAI,OACzD,MAAMqhC,UACJA,GACEl+B,GACEm+B,OACJA,EAAMthC,GACNA,GACEqhC,EACJC,EAAOzkC,MAAM8M,MAAQ,GACrB23B,EAAOzkC,MAAMgN,OAAS,GACtBq3B,EAAY/9B,EAAOiM,eAAiBpP,EAAG6H,YAAc7H,EAAGuV,aACxD4rB,EAAUh+B,EAAOwE,MAAQxE,EAAOgO,YAAchO,EAAOQ,OAAO+M,oBAAsBvN,EAAOQ,OAAO6N,eAAiBrO,EAAOmN,SAAS,GAAK,IAEpI2wB,EADuC,SAArC99B,EAAOQ,OAAO09B,UAAUJ,SACfC,EAAYC,EAEZ7xB,SAASnM,EAAOQ,OAAO09B,UAAUJ,SAAU,IAEpD99B,EAAOiM,eACTkyB,EAAOzkC,MAAM8M,MAAQ,GAAGs3B,MAExBK,EAAOzkC,MAAMgN,OAAS,GAAGo3B,MAGzBjhC,EAAGnD,MAAM8kC,QADPR,GAAW,EACM,OAEA,GAEjBh+B,EAAOQ,OAAO09B,UAAUI,OAC1BzhC,EAAGnD,MAAM6kC,QAAU,GAEjBv+B,EAAOQ,OAAO6Q,eAAiBrR,EAAOgN,SACxCkxB,EAAUrhC,GAAG+F,UAAU5C,EAAO4nB,SAAW,MAAQ,UAAU5nB,EAAOQ,OAAO09B,UAAU3E,UAEvF,CACA,SAASkF,EAAmBn6B,GAC1B,OAAOtE,EAAOiM,eAAiB3H,EAAEo6B,QAAUp6B,EAAEq6B,OAC/C,CACA,SAASC,EAAgBt6B,GACvB,MAAM45B,UACJA,EACAvxB,aAAcC,GACZ5M,GACEnD,GACJA,GACEqhC,EACJ,IAAIW,EACJA,GAAiBJ,EAAmBn6B,GAAKtB,EAAcnG,GAAImD,EAAOiM,eAAiB,OAAS,QAA2B,OAAjB4xB,EAAwBA,EAAeC,EAAW,KAAOC,EAAYD,GAC3Ke,EAAgB19B,KAAKC,IAAID,KAAKE,IAAIw9B,EAAe,GAAI,GACjDjyB,IACFiyB,EAAgB,EAAIA,GAEtB,MAAMrG,EAAWx4B,EAAO+S,gBAAkB/S,EAAO2T,eAAiB3T,EAAO+S,gBAAkB8rB,EAC3F7+B,EAAOwT,eAAeglB,GACtBx4B,EAAOoX,aAAaohB,GACpBx4B,EAAO4V,oBACP5V,EAAO0U,qBACT,CACA,SAASoqB,EAAYx6B,GACnB,MAAM9D,EAASR,EAAOQ,OAAO09B,WACvBA,UACJA,EAASx9B,UACTA,GACEV,GACEnD,GACJA,EAAEshC,OACFA,GACED,EACJ5e,GAAY,EACZue,EAAev5B,EAAEpM,SAAWimC,EAASM,EAAmBn6B,GAAKA,EAAEpM,OAAOgL,wBAAwBlD,EAAOiM,eAAiB,OAAS,OAAS,KACxI3H,EAAE0Z,iBACF1Z,EAAEie,kBACF7hB,EAAUhH,MAAM+tB,mBAAqB,QACrC0W,EAAOzkC,MAAM+tB,mBAAqB,QAClCmX,EAAgBt6B,GAChB3I,aAAasiC,GACbphC,EAAGnD,MAAM+tB,mBAAqB,MAC1BjnB,EAAO89B,OACTzhC,EAAGnD,MAAM6kC,QAAU,GAEjBv+B,EAAOQ,OAAO8N,UAChBtO,EAAOU,UAAUhH,MAAM,oBAAsB,QAE/C4P,EAAK,qBAAsBhF,EAC7B,CACA,SAASy6B,EAAWz6B,GAClB,MAAM45B,UACJA,EAASx9B,UACTA,GACEV,GACEnD,GACJA,EAAEshC,OACFA,GACED,EACC5e,IACDhb,EAAE0Z,gBAAkB1Z,EAAE8d,WAAY9d,EAAE0Z,iBAAsB1Z,EAAEyxB,aAAc,EAC9E6I,EAAgBt6B,GAChB5D,EAAUhH,MAAM+tB,mBAAqB,MACrC5qB,EAAGnD,MAAM+tB,mBAAqB,MAC9B0W,EAAOzkC,MAAM+tB,mBAAqB,MAClCne,EAAK,oBAAqBhF,GAC5B,CACA,SAAS06B,EAAU16B,GACjB,MAAM9D,EAASR,EAAOQ,OAAO09B,WACvBA,UACJA,EAASx9B,UACTA,GACEV,GACEnD,GACJA,GACEqhC,EACC5e,IACLA,GAAY,EACRtf,EAAOQ,OAAO8N,UAChBtO,EAAOU,UAAUhH,MAAM,oBAAsB,GAC7CgH,EAAUhH,MAAM+tB,mBAAqB,IAEnCjnB,EAAO89B,OACT3iC,aAAasiC,GACbA,EAAcxhC,EAAS,KACrBI,EAAGnD,MAAM6kC,QAAU,EACnB1hC,EAAGnD,MAAM+tB,mBAAqB,SAC7B,MAELne,EAAK,mBAAoBhF,GACrB9D,EAAOy+B,eACTj/B,EAAO8a,iBAEX,CACA,SAAS3S,EAAOM,GACd,MAAMy1B,UACJA,EAAS19B,OACTA,GACER,EACEnD,EAAKqhC,EAAUrhC,GACrB,IAAKA,EAAI,OACT,MAAM3E,EAAS2E,EACTqiC,IAAiB1+B,EAAOumB,kBAAmB,CAC/CZ,SAAS,EACTH,SAAS,GAELmZ,IAAkB3+B,EAAOumB,kBAAmB,CAChDZ,SAAS,EACTH,SAAS,GAEX,IAAK9tB,EAAQ,OACb,MAAMknC,EAAyB,OAAX32B,EAAkB,mBAAqB,sBAC3DvQ,EAAOknC,GAAa,cAAeN,EAAaI,GAChDxkC,EAAS0kC,GAAa,cAAeL,EAAYG,GACjDxkC,EAAS0kC,GAAa,YAAaJ,EAAWG,EAChD,CASA,SAAS5Y,IACP,MAAM2X,UACJA,EACArhC,GAAIwiC,GACFr/B,EACJA,EAAOQ,OAAO09B,UAAY9P,GAA0BpuB,EAAQA,EAAOuoB,eAAe2V,UAAWl+B,EAAOQ,OAAO09B,UAAW,CACpHrhC,GAAI,qBAEN,MAAM2D,EAASR,EAAOQ,OAAO09B,UAC7B,IAAK19B,EAAO3D,GAAI,OAChB,IAAIA,EAeAshC,EAXJ,GAHyB,iBAAd39B,EAAO3D,IAAmBmD,EAAOmK,YAC1CtN,EAAKmD,EAAOnD,GAAG3D,cAAcsH,EAAO3D,KAEjCA,GAA2B,iBAAd2D,EAAO3D,GAGbA,IACVA,EAAK2D,EAAO3D,SAFZ,GADAA,EAAKnC,EAASvB,iBAAiBqH,EAAO3D,KACjCA,EAAGnE,OAAQ,OAIdsH,EAAOQ,OAAOsmB,mBAA0C,iBAAdtmB,EAAO3D,IAAmBA,EAAGnE,OAAS,GAAqD,IAAhD2mC,EAASlmC,iBAAiBqH,EAAO3D,IAAInE,SAC5HmE,EAAKwiC,EAASnmC,cAAcsH,EAAO3D,KAEjCA,EAAGnE,OAAS,IAAGmE,EAAKA,EAAG,IAC3BA,EAAG+F,UAAUC,IAAI7C,EAAOiM,eAAiBzL,EAAOo7B,gBAAkBp7B,EAAOq7B,eAErEh/B,IACFshC,EAASthC,EAAG3D,cAAci3B,GAAkBnwB,EAAOQ,OAAO09B,UAAUoB,YAC/DnB,IACHA,EAAS5kC,EAAc,MAAOyG,EAAOQ,OAAO09B,UAAUoB,WACtDziC,EAAGkf,OAAOoiB,KAGdnmC,OAAOqU,OAAO6xB,EAAW,CACvBrhC,KACAshC,WAEE39B,EAAO++B,WA5CNv/B,EAAOQ,OAAO09B,UAAUrhC,IAAOmD,EAAOk+B,UAAUrhC,IACrDsL,EAAO,MA8CHtL,GACFA,EAAG+F,UAAU5C,EAAOgN,QAAU,SAAW,UAAU5Q,EAAgB4D,EAAOQ,OAAO09B,UAAU3E,WAE/F,CACA,SAAS9L,IACP,MAAMjtB,EAASR,EAAOQ,OAAO09B,UACvBrhC,EAAKmD,EAAOk+B,UAAUrhC,GACxBA,GACFA,EAAG+F,UAAUkH,UAAU1N,EAAgB4D,EAAOiM,eAAiBzL,EAAOo7B,gBAAkBp7B,EAAOq7B,gBAnD5F77B,EAAOQ,OAAO09B,UAAUrhC,IAAOmD,EAAOk+B,UAAUrhC,IACrDsL,EAAO,MAqDT,CApRAmjB,EAAa,CACX4S,UAAW,CACTrhC,GAAI,KACJihC,SAAU,OACVQ,MAAM,EACNiB,WAAW,EACXN,eAAe,EACf1F,UAAW,wBACX+F,UAAW,wBACXE,uBAAwB,4BACxB5D,gBAAiB,8BACjBC,cAAe,+BAGnB77B,EAAOk+B,UAAY,CACjBrhC,GAAI,KACJshC,OAAQ,MAqQVj2B,EAAG,kBAAmB,KACpB,IAAKlI,EAAOk+B,YAAcl+B,EAAOk+B,UAAUrhC,GAAI,OAC/C,MAAM2D,EAASR,EAAOQ,OAAO09B,UAC7B,IAAIrhC,GACFA,GACEmD,EAAOk+B,UACXrhC,EAAK8H,EAAkB9H,GACvBA,EAAGpE,QAAQ2gC,IACTA,EAAMx2B,UAAUkH,OAAOtJ,EAAOo7B,gBAAiBp7B,EAAOq7B,eACtDzC,EAAMx2B,UAAUC,IAAI7C,EAAOiM,eAAiBzL,EAAOo7B,gBAAkBp7B,EAAOq7B,mBAGhF3zB,EAAG,OAAQ,MAC+B,IAApClI,EAAOQ,OAAO09B,UAAUlxB,QAE1Bgc,KAEAzC,IACAza,IACAsL,OAGJlP,EAAG,2DAA4D,KAC7D4D,MAEF5D,EAAG,eAAgB,KACjBkP,MAEFlP,EAAG,gBAAiB,CAACupB,EAAIlxB,MAnPzB,SAAuBA,GAChBP,EAAOQ,OAAO09B,UAAUrhC,IAAOmD,EAAOk+B,UAAUrhC,KACrDmD,EAAOk+B,UAAUC,OAAOzkC,MAAM+tB,mBAAqB,GAAGlnB,MACxD,CAiPEyR,CAAczR,KAEhB2H,EAAG,iBAAkB,KACnB,MAAMrL,GACJA,GACEmD,EAAOk+B,UACPrhC,GACFA,EAAG+F,UAAU5C,EAAOgN,QAAU,SAAW,UAAU5Q,EAAgB4D,EAAOQ,OAAO09B,UAAU3E,cAG/FrxB,EAAG,UAAW,KACZulB,MAEF,MASMzE,EAAU,KACdhpB,EAAOnD,GAAG+F,UAAUC,OAAOzG,EAAgB4D,EAAOQ,OAAO09B,UAAUsB,yBAC/Dx/B,EAAOk+B,UAAUrhC,IACnBmD,EAAOk+B,UAAUrhC,GAAG+F,UAAUC,OAAOzG,EAAgB4D,EAAOQ,OAAO09B,UAAUsB,yBAE/E/R,KAEFz1B,OAAOqU,OAAOrM,EAAOk+B,UAAW,CAC9BjV,OAjBa,KACbjpB,EAAOnD,GAAG+F,UAAUkH,UAAU1N,EAAgB4D,EAAOQ,OAAO09B,UAAUsB,yBAClEx/B,EAAOk+B,UAAUrhC,IACnBmD,EAAOk+B,UAAUrhC,GAAG+F,UAAUkH,UAAU1N,EAAgB4D,EAAOQ,OAAO09B,UAAUsB,yBAElFjZ,IACAza,IACAsL,KAWA4R,UACAld,aACAsL,eACAmP,OACAkH,WAEJ,EAEA,UAAkBztB,OAChBA,EAAMsrB,aACNA,EAAYpjB,GACZA,IAEAojB,EAAa,CACXmU,SAAU,CACRzyB,SAAS,KAGb,MAAM0yB,EAAmB,2IACnBC,EAAe,CAAC9iC,EAAIqE,KACxB,MAAM0L,IACJA,GACE5M,EACEq3B,EAAYzqB,GAAO,EAAI,EACvBgzB,EAAI/iC,EAAG2Z,aAAa,yBAA2B,IACrD,IAAIe,EAAI1a,EAAG2Z,aAAa,0BACpBgB,EAAI3a,EAAG2Z,aAAa,0BACxB,MAAM8mB,EAAQzgC,EAAG2Z,aAAa,8BACxB+nB,EAAU1hC,EAAG2Z,aAAa,gCAC1BqpB,EAAShjC,EAAG2Z,aAAa,+BAqB/B,GApBIe,GAAKC,GACPD,EAAIA,GAAK,IACTC,EAAIA,GAAK,KACAxX,EAAOiM,gBAChBsL,EAAIqoB,EACJpoB,EAAI,MAEJA,EAAIooB,EACJroB,EAAI,KAGJA,EADEA,EAAE/e,QAAQ,MAAQ,EACb2T,SAASoL,EAAG,IAAMrW,EAAWm2B,EAAhC,IAEG9f,EAAIrW,EAAWm2B,EAAlB,KAGJ7f,EADEA,EAAEhf,QAAQ,MAAQ,EACb2T,SAASqL,EAAG,IAAMtW,EAArB,IAEGsW,EAAItW,EAAP,KAEF,MAAOq9B,EAA6C,CACtD,MAAMuB,EAAiBvB,GAAWA,EAAU,IAAM,EAAIp9B,KAAK2D,IAAI5D,IAC/DrE,EAAGnD,MAAM6kC,QAAUuB,CACrB,CACA,IAAIxiC,EAAY,eAAeia,MAAMC,UACrC,GAAI,MAAO8lB,EAAyC,CAElDhgC,GAAa,UADQggC,GAASA,EAAQ,IAAM,EAAIn8B,KAAK2D,IAAI5D,MAE3D,CACA,GAAI2+B,SAAiBA,EAA2C,CAE9DviC,GAAa,WADSuiC,EAAS3+B,GAAY,OAE7C,CACArE,EAAGnD,MAAM4D,UAAYA,GAEjB8Z,EAAe,KACnB,MAAMva,GACJA,EAAE4N,OACFA,EAAMvJ,SACNA,EAAQiM,SACRA,EAAQhD,UACRA,GACEnK,EACE+/B,EAAWh+B,EAAgBlF,EAAI6iC,GACjC1/B,EAAOmK,WACT41B,EAAS59B,QAAQJ,EAAgB/B,EAAOutB,OAAQmS,IAElDK,EAAStnC,QAAQ2gC,IACfuG,EAAavG,EAAOl4B,KAEtBuJ,EAAOhS,QAAQ,CAACoJ,EAAS6O,KACvB,IAAIoC,EAAgBjR,EAAQX,SACxBlB,EAAOQ,OAAOiP,eAAiB,GAAqC,SAAhCzP,EAAOQ,OAAOsK,gBACpDgI,GAAiB3R,KAAK6J,KAAK0F,EAAa,GAAKxP,GAAYiM,EAASzU,OAAS,IAE7Eoa,EAAgB3R,KAAKE,IAAIF,KAAKC,IAAI0R,GAAgB,GAAI,GACtDjR,EAAQ1I,iBAAiB,GAAGumC,oCAAmDjnC,QAAQ2gC,IACrFuG,EAAavG,EAAOtmB,QAmB1B5K,EAAG,aAAc,KACVlI,EAAOQ,OAAOi/B,SAASzyB,UAC5BhN,EAAOQ,OAAO+Q,qBAAsB,EACpCvR,EAAOuoB,eAAehX,qBAAsB,KAE9CrJ,EAAG,OAAQ,KACJlI,EAAOQ,OAAOi/B,SAASzyB,SAC5BoK,MAEFlP,EAAG,eAAgB,KACZlI,EAAOQ,OAAOi/B,SAASzyB,SAC5BoK,MAEFlP,EAAG,gBAAiB,CAAC83B,EAASz/B,KACvBP,EAAOQ,OAAOi/B,SAASzyB,SA7BR,EAACzM,EAAWP,EAAOQ,OAAOC,SAC9C,MAAM5D,GACJA,EAAE0wB,OACFA,GACEvtB,EACE+/B,EAAW,IAAIljC,EAAG1D,iBAAiBumC,IACrC1/B,EAAOmK,WACT41B,EAAS59B,QAAQorB,EAAOp0B,iBAAiBumC,IAE3CK,EAAStnC,QAAQwnC,IACf,IAAIC,EAAmB/zB,SAAS8zB,EAAWzpB,aAAa,iCAAkC,KAAOjW,EAChF,IAAbA,IAAgB2/B,EAAmB,GACvCD,EAAWvmC,MAAM+tB,mBAAqB,GAAGyY,SAkB3CluB,CAAczR,IAElB,EAEA,UAAcP,OACZA,EAAMsrB,aACNA,EAAYpjB,GACZA,EAAEoB,KACFA,IAEA,MAAMnN,EAASF,IACfqvB,EAAa,CACX6U,KAAM,CACJnzB,SAAS,EACTozB,qBAAqB,EACrBC,SAAU,EACVxW,SAAU,EACVyW,gBAAgB,EAChBhG,QAAQ,EACRiG,eAAgB,wBAChBC,iBAAkB,yBAGtBxgC,EAAOmgC,KAAO,CACZnzB,SAAS,GAEX,IAQIyzB,EACAC,EATAC,EAAe,EACfC,GAAY,EACZC,GAAqB,EACrBC,EAAgB,CAClBvpB,EAAG,EACHC,EAAG,GAKL,MAAMupB,EAAU,GACVC,EAAU,CACdC,QAAS,EACTC,QAAS,EACTr/B,aAASrC,EACT2hC,gBAAY3hC,EACZ4hC,iBAAa5hC,EACbyK,aAASzK,EACT6hC,iBAAa7hC,EACb6gC,SAAU,GAENiB,EAAQ,CACZhiB,eAAW9f,EACX+f,aAAS/f,EACT+gB,cAAU/gB,EACVghB,cAAUhhB,EACV+hC,UAAM/hC,EACNgiC,UAAMhiC,EACNiiC,UAAMjiC,EACNkiC,UAAMliC,EACNgH,WAAOhH,EACPkH,YAAQlH,EACRoe,YAAQpe,EACRkhB,YAAQlhB,EACRmiC,aAAc,CAAC,EACfC,eAAgB,CAAC,GAEblW,EAAW,CACfnU,OAAG/X,EACHgY,OAAGhY,EACHqiC,mBAAeriC,EACfsiC,mBAAetiC,EACfuiC,cAAUviC,GAEZ,IAsJIwiC,EAtJA1E,EAAQ,EAcZ,SAAS2E,IACP,GAAIlB,EAAQroC,OAAS,EAAG,OAAO,EAC/B,MAAMwpC,EAAKnB,EAAQ,GAAGviB,MAChB2jB,EAAKpB,EAAQ,GAAGtgB,MAChB2hB,EAAKrB,EAAQ,GAAGviB,MAChB6jB,EAAKtB,EAAQ,GAAGtgB,MAEtB,OADiBtf,KAAK6gB,MAAMogB,EAAKF,IAAO,GAAKG,EAAKF,IAAO,EAE3D,CACA,SAASG,IACP,MAAM9hC,EAASR,EAAOQ,OAAO2/B,KACvBE,EAAWW,EAAQK,YAAY7qB,aAAa,qBAAuBhW,EAAO6/B,SAChF,GAAI7/B,EAAO4/B,qBAAuBY,EAAQ/2B,SAAW+2B,EAAQ/2B,QAAQs4B,aAAc,CACjF,MAAMC,EAAgBxB,EAAQ/2B,QAAQs4B,aAAevB,EAAQ/2B,QAAQvF,YACrE,OAAOvD,KAAKE,IAAImhC,EAAenC,EACjC,CACA,OAAOA,CACT,CAYA,SAASoC,EAAiBn+B,GACxB,MAAM6W,EAHCnb,EAAOmK,UAAY,eAAiB,IAAInK,EAAOQ,OAAO4J,aAI7D,QAAI9F,EAAEpM,OAAOmK,QAAQ8Y,IACjBnb,EAAOyK,OAAOnS,OAAOuJ,GAAWA,EAAQgI,SAASvF,EAAEpM,SAASQ,OAAS,CAE3E,CACA,SAASgqC,EAAyBp+B,GAChC,MAAMrC,EAAW,IAAIjC,EAAOQ,OAAO2/B,KAAKI,iBACxC,QAAIj8B,EAAEpM,OAAOmK,QAAQJ,IACjB,IAAIjC,EAAOutB,OAAOp0B,iBAAiB8I,IAAW3J,OAAOkxB,GAAeA,EAAY3f,SAASvF,EAAEpM,SAASQ,OAAS,CAEnH,CAGA,SAASiqC,EAAer+B,GAItB,GAHsB,UAAlBA,EAAEqa,aACJoiB,EAAQ33B,OAAO,EAAG23B,EAAQroC,SAEvB+pC,EAAiBn+B,GAAI,OAC1B,MAAM9D,EAASR,EAAOQ,OAAO2/B,KAI7B,GAHAM,GAAqB,EACrBC,GAAmB,EACnBK,EAAQ5+B,KAAKmC,KACTy8B,EAAQroC,OAAS,GAArB,CAKA,GAFA+nC,GAAqB,EACrBO,EAAQ4B,WAAaX,KAChBjB,EAAQn/B,QAAS,CACpBm/B,EAAQn/B,QAAUyC,EAAEpM,OAAOgS,QAAQ,IAAIlK,EAAOQ,OAAO4J,4BAChD42B,EAAQn/B,UAASm/B,EAAQn/B,QAAU7B,EAAOyK,OAAOzK,EAAOiL,cAC7D,IAAIhB,EAAU+2B,EAAQn/B,QAAQ3I,cAAc,IAAIsH,EAAO+/B,kBAUvD,GATIt2B,IACFA,EAAUA,EAAQ9Q,iBAAiB,kDAAkD,IAEvF6nC,EAAQ/2B,QAAUA,EAEhB+2B,EAAQK,YADNp3B,EACoBjG,EAAeg9B,EAAQ/2B,QAAS,IAAIzJ,EAAO+/B,kBAAkB,QAE7D/gC,GAEnBwhC,EAAQK,YAEX,YADAL,EAAQ/2B,aAAUzK,GAGpBwhC,EAAQX,SAAWiC,GACrB,CACA,GAAItB,EAAQ/2B,QAAS,CACnB,MAAOg3B,EAASC,GA3DpB,WACE,GAAIH,EAAQroC,OAAS,EAAG,MAAO,CAC7B6e,EAAG,KACHC,EAAG,MAEL,MAAMvU,EAAM+9B,EAAQ/2B,QAAQ/G,wBAC5B,MAAO,EAAE69B,EAAQ,GAAGviB,OAASuiB,EAAQ,GAAGviB,MAAQuiB,EAAQ,GAAGviB,OAAS,EAAIvb,EAAIsU,EAAIpb,EAAOqH,SAAWm9B,GAAeI,EAAQ,GAAGtgB,OAASsgB,EAAQ,GAAGtgB,MAAQsgB,EAAQ,GAAGtgB,OAAS,EAAIxd,EAAIuU,EAAIrb,EAAOmH,SAAWq9B,EAC5M,CAoD+BkC,GAC3B7B,EAAQC,QAAUA,EAClBD,EAAQE,QAAUA,EAClBF,EAAQ/2B,QAAQvQ,MAAM+tB,mBAAqB,KAC7C,CACAmZ,GAAY,CA5BZ,CA6BF,CACA,SAASkC,EAAgBx+B,GACvB,IAAKm+B,EAAiBn+B,GAAI,OAC1B,MAAM9D,EAASR,EAAOQ,OAAO2/B,KACvBA,EAAOngC,EAAOmgC,KACd4C,EAAehC,EAAQiC,UAAUC,GAAYA,EAAS7kB,YAAc9Z,EAAE8Z,WACxE2kB,GAAgB,IAAGhC,EAAQgC,GAAgBz+B,GAC3Cy8B,EAAQroC,OAAS,IAGrBgoC,GAAmB,EACnBM,EAAQkC,UAAYjB,IACfjB,EAAQ/2B,UAGbk2B,EAAK7C,MAAQ0D,EAAQkC,UAAYlC,EAAQ4B,WAAajC,EAClDR,EAAK7C,MAAQ0D,EAAQX,WACvBF,EAAK7C,MAAQ0D,EAAQX,SAAW,GAAKF,EAAK7C,MAAQ0D,EAAQX,SAAW,IAAM,IAEzEF,EAAK7C,MAAQ98B,EAAOqpB,WACtBsW,EAAK7C,MAAQ98B,EAAOqpB,SAAW,GAAKrpB,EAAOqpB,SAAWsW,EAAK7C,MAAQ,IAAM,IAE3E0D,EAAQ/2B,QAAQvQ,MAAM4D,UAAY,4BAA4B6iC,EAAK7C,UACrE,CACA,SAAS6F,EAAa7+B,GACpB,IAAKm+B,EAAiBn+B,GAAI,OAC1B,GAAsB,UAAlBA,EAAEqa,aAAsC,eAAXra,EAAE6Z,KAAuB,OAC1D,MAAM3d,EAASR,EAAOQ,OAAO2/B,KACvBA,EAAOngC,EAAOmgC,KACd4C,EAAehC,EAAQiC,UAAUC,GAAYA,EAAS7kB,YAAc9Z,EAAE8Z,WACxE2kB,GAAgB,GAAGhC,EAAQ33B,OAAO25B,EAAc,GAC/CtC,GAAuBC,IAG5BD,GAAqB,EACrBC,GAAmB,EACdM,EAAQ/2B,UACbk2B,EAAK7C,MAAQn8B,KAAKC,IAAID,KAAKE,IAAI8+B,EAAK7C,MAAO0D,EAAQX,UAAW7/B,EAAOqpB,UACrEmX,EAAQ/2B,QAAQvQ,MAAM+tB,mBAAqB,GAAGznB,EAAOQ,OAAOC,UAC5DugC,EAAQ/2B,QAAQvQ,MAAM4D,UAAY,4BAA4B6iC,EAAK7C,SACnEqD,EAAeR,EAAK7C,MACpBsD,GAAY,EACRT,EAAK7C,MAAQ,GAAK0D,EAAQn/B,QAC5Bm/B,EAAQn/B,QAAQe,UAAUC,IAAI,GAAGrC,EAAOggC,oBAC/BL,EAAK7C,OAAS,GAAK0D,EAAQn/B,SACpCm/B,EAAQn/B,QAAQe,UAAUkH,OAAO,GAAGtJ,EAAOggC,oBAE1B,IAAfL,EAAK7C,QACP0D,EAAQC,QAAU,EAClBD,EAAQE,QAAU,EAClBF,EAAQn/B,aAAUrC,IAEtB,CAEA,SAAS2hB,IACPnhB,EAAOkd,gBAAgBiF,iCAAkC,CAC3D,CAmBA,SAASZ,EAAYjd,GACnB,MACM8+B,EADiC,UAAlB9+B,EAAEqa,aACY3e,EAAOQ,OAAO2/B,KAAKG,eACtD,IAAKmC,EAAiBn+B,KAAOo+B,EAAyBp+B,GACpD,OAEF,MAAM67B,EAAOngC,EAAOmgC,KACpB,IAAKa,EAAQ/2B,QACX,OAEF,IAAKq3B,EAAMhiB,YAAc0hB,EAAQn/B,QAE/B,YADIuhC,GAAYC,EAAY/+B,IAG9B,GAAI8+B,EAEF,YADAC,EAAY/+B,GAGTg9B,EAAM/hB,UACT+hB,EAAM96B,MAAQw6B,EAAQ/2B,QAAQvF,aAAes8B,EAAQ/2B,QAAQ8B,YAC7Du1B,EAAM56B,OAASs6B,EAAQ/2B,QAAQmI,cAAgB4uB,EAAQ/2B,QAAQ+B,aAC/Ds1B,EAAM1jB,OAAShhB,EAAaokC,EAAQK,YAAa,MAAQ,EACzDC,EAAM5gB,OAAS9jB,EAAaokC,EAAQK,YAAa,MAAQ,EACzDL,EAAQG,WAAaH,EAAQn/B,QAAQ6C,YACrCs8B,EAAQI,YAAcJ,EAAQn/B,QAAQuQ,aACtC4uB,EAAQK,YAAY3nC,MAAM+tB,mBAAqB,OAGjD,MAAM6b,EAAchC,EAAM96B,MAAQ25B,EAAK7C,MACjCiG,EAAejC,EAAM56B,OAASy5B,EAAK7C,MACzCgE,EAAMC,KAAOpgC,KAAKE,IAAI2/B,EAAQG,WAAa,EAAImC,EAAc,EAAG,GAChEhC,EAAMG,MAAQH,EAAMC,KACpBD,EAAME,KAAOrgC,KAAKE,IAAI2/B,EAAQI,YAAc,EAAImC,EAAe,EAAG,GAClEjC,EAAMI,MAAQJ,EAAME,KACpBF,EAAMM,eAAerqB,EAAIwpB,EAAQroC,OAAS,EAAIqoC,EAAQ,GAAGviB,MAAQla,EAAEka,MACnE8iB,EAAMM,eAAepqB,EAAIupB,EAAQroC,OAAS,EAAIqoC,EAAQ,GAAGtgB,MAAQnc,EAAEmc,MAKnE,GAJoBtf,KAAKC,IAAID,KAAK2D,IAAIw8B,EAAMM,eAAerqB,EAAI+pB,EAAMK,aAAapqB,GAAIpW,KAAK2D,IAAIw8B,EAAMM,eAAepqB,EAAI8pB,EAAMK,aAAanqB,IACzH,IAChBxX,EAAOqgB,YAAa,IAEjBihB,EAAM/hB,UAAYqhB,EAAW,CAChC,GAAI5gC,EAAOiM,iBAAmB9K,KAAK8N,MAAMqyB,EAAMC,QAAUpgC,KAAK8N,MAAMqyB,EAAM1jB,SAAW0jB,EAAMM,eAAerqB,EAAI+pB,EAAMK,aAAapqB,GAAKpW,KAAK8N,MAAMqyB,EAAMG,QAAUtgC,KAAK8N,MAAMqyB,EAAM1jB,SAAW0jB,EAAMM,eAAerqB,EAAI+pB,EAAMK,aAAapqB,GAGvO,OAFA+pB,EAAMhiB,WAAY,OAClB6B,IAGF,IAAKnhB,EAAOiM,iBAAmB9K,KAAK8N,MAAMqyB,EAAME,QAAUrgC,KAAK8N,MAAMqyB,EAAM5gB,SAAW4gB,EAAMM,eAAepqB,EAAI8pB,EAAMK,aAAanqB,GAAKrW,KAAK8N,MAAMqyB,EAAMI,QAAUvgC,KAAK8N,MAAMqyB,EAAM5gB,SAAW4gB,EAAMM,eAAepqB,EAAI8pB,EAAMK,aAAanqB,GAGxO,OAFA8pB,EAAMhiB,WAAY,OAClB6B,GAGJ,CACI7c,EAAE8d,YACJ9d,EAAE0Z,iBAEJ1Z,EAAEie,kBAxEF5mB,aAAaqmC,GACbhiC,EAAOkd,gBAAgBiF,iCAAkC,EACzD6f,EAAwBtmC,WAAW,KAC7BsE,EAAOwI,WACX2Y,MAsEFmgB,EAAM/hB,SAAU,EAChB,MAAMikB,GAAcrD,EAAK7C,MAAQqD,IAAiBK,EAAQX,SAAWrgC,EAAOQ,OAAO2/B,KAAKtW,WAClFoX,QACJA,EAAOC,QACPA,GACEF,EACJM,EAAM/gB,SAAW+gB,EAAMM,eAAerqB,EAAI+pB,EAAMK,aAAapqB,EAAI+pB,EAAM1jB,OAAS4lB,GAAclC,EAAM96B,MAAkB,EAAVy6B,GAC5GK,EAAM9gB,SAAW8gB,EAAMM,eAAepqB,EAAI8pB,EAAMK,aAAanqB,EAAI8pB,EAAM5gB,OAAS8iB,GAAclC,EAAM56B,OAAmB,EAAVw6B,GACzGI,EAAM/gB,SAAW+gB,EAAMC,OACzBD,EAAM/gB,SAAW+gB,EAAMC,KAAO,GAAKD,EAAMC,KAAOD,EAAM/gB,SAAW,IAAM,IAErE+gB,EAAM/gB,SAAW+gB,EAAMG,OACzBH,EAAM/gB,SAAW+gB,EAAMG,KAAO,GAAKH,EAAM/gB,SAAW+gB,EAAMG,KAAO,IAAM,IAErEH,EAAM9gB,SAAW8gB,EAAME,OACzBF,EAAM9gB,SAAW8gB,EAAME,KAAO,GAAKF,EAAME,KAAOF,EAAM9gB,SAAW,IAAM,IAErE8gB,EAAM9gB,SAAW8gB,EAAMI,OACzBJ,EAAM9gB,SAAW8gB,EAAMI,KAAO,GAAKJ,EAAM9gB,SAAW8gB,EAAMI,KAAO,IAAM,IAIpEhW,EAASmW,gBAAenW,EAASmW,cAAgBP,EAAMM,eAAerqB,GACtEmU,EAASoW,gBAAepW,EAASoW,cAAgBR,EAAMM,eAAepqB,GACtEkU,EAASqW,WAAUrW,EAASqW,SAAWvmC,KAAKmB,OACjD+uB,EAASnU,GAAK+pB,EAAMM,eAAerqB,EAAImU,EAASmW,gBAAkBrmC,KAAKmB,MAAQ+uB,EAASqW,UAAY,EACpGrW,EAASlU,GAAK8pB,EAAMM,eAAepqB,EAAIkU,EAASoW,gBAAkBtmC,KAAKmB,MAAQ+uB,EAASqW,UAAY,EAChG5gC,KAAK2D,IAAIw8B,EAAMM,eAAerqB,EAAImU,EAASmW,eAAiB,IAAGnW,EAASnU,EAAI,GAC5EpW,KAAK2D,IAAIw8B,EAAMM,eAAepqB,EAAIkU,EAASoW,eAAiB,IAAGpW,EAASlU,EAAI,GAChFkU,EAASmW,cAAgBP,EAAMM,eAAerqB,EAC9CmU,EAASoW,cAAgBR,EAAMM,eAAepqB,EAC9CkU,EAASqW,SAAWvmC,KAAKmB,MACzBqkC,EAAQK,YAAY3nC,MAAM4D,UAAY,eAAegkC,EAAM/gB,eAAe+gB,EAAM9gB,eAClF,CAqCA,SAASijB,IACP,MAAMtD,EAAOngC,EAAOmgC,KAChBa,EAAQn/B,SAAW7B,EAAOiL,cAAgBjL,EAAOyK,OAAOjS,QAAQwoC,EAAQn/B,WACtEm/B,EAAQ/2B,UACV+2B,EAAQ/2B,QAAQvQ,MAAM4D,UAAY,+BAEhC0jC,EAAQK,cACVL,EAAQK,YAAY3nC,MAAM4D,UAAY,sBAExC0jC,EAAQn/B,QAAQe,UAAUkH,OAAO,GAAG9J,EAAOQ,OAAO2/B,KAAKK,oBACvDL,EAAK7C,MAAQ,EACbqD,EAAe,EACfK,EAAQn/B,aAAUrC,EAClBwhC,EAAQ/2B,aAAUzK,EAClBwhC,EAAQK,iBAAc7hC,EACtBwhC,EAAQC,QAAU,EAClBD,EAAQE,QAAU,EAEtB,CACA,SAASmC,EAAY/+B,GAEnB,GAAIq8B,GAAgB,IAAMK,EAAQK,YAAa,OAC/C,IAAKoB,EAAiBn+B,KAAOo+B,EAAyBp+B,GAAI,OAC1D,MAAM6K,EAAmBhT,EAAOd,iBAAiB2lC,EAAQK,aAAa/jC,UAChEP,EAAS,IAAIZ,EAAOunC,UAAUv0B,GACpC,IAAK0xB,EAUH,OATAA,GAAqB,EACrBC,EAAcvpB,EAAIjT,EAAEo6B,QACpBoC,EAActpB,EAAIlT,EAAEq6B,QACpB2C,EAAM1jB,OAAS7gB,EAAOuH,EACtBg9B,EAAM5gB,OAAS3jB,EAAO4mC,EACtBrC,EAAM96B,MAAQw6B,EAAQ/2B,QAAQvF,aAAes8B,EAAQ/2B,QAAQ8B,YAC7Du1B,EAAM56B,OAASs6B,EAAQ/2B,QAAQmI,cAAgB4uB,EAAQ/2B,QAAQ+B,aAC/Dg1B,EAAQG,WAAaH,EAAQn/B,QAAQ6C,iBACrCs8B,EAAQI,YAAcJ,EAAQn/B,QAAQuQ,cAGxC,MAAM2lB,GArXoB,GAqXVzzB,EAAEo6B,QAAUoC,EAAcvpB,GACpCugB,GAtXoB,GAsXVxzB,EAAEq6B,QAAUmC,EAActpB,GACpC8rB,EAAchC,EAAM96B,MAAQm6B,EAC5B4C,EAAejC,EAAM56B,OAASi6B,EAC9BQ,EAAaH,EAAQG,WACrBC,EAAcJ,EAAQI,YACtBG,EAAOpgC,KAAKE,IAAI8/B,EAAa,EAAImC,EAAc,EAAG,GAClD7B,GAAQF,EACRC,EAAOrgC,KAAKE,IAAI+/B,EAAc,EAAImC,EAAe,EAAG,GACpD7B,GAAQF,EACRoC,EAAOziC,KAAKC,IAAID,KAAKE,IAAIigC,EAAM1jB,OAASma,EAAQ0J,GAAOF,GACvDsC,EAAO1iC,KAAKC,IAAID,KAAKE,IAAIigC,EAAM5gB,OAASoX,EAAQ4J,GAAOF,GAC7DR,EAAQK,YAAY3nC,MAAM+tB,mBAAqB,MAC/CuZ,EAAQK,YAAY3nC,MAAM4D,UAAY,eAAesmC,QAAWC,UAChE/C,EAAcvpB,EAAIjT,EAAEo6B,QACpBoC,EAActpB,EAAIlT,EAAEq6B,QACpB2C,EAAM1jB,OAASgmB,EACftC,EAAM5gB,OAASmjB,EACfvC,EAAM/gB,SAAWqjB,EACjBtC,EAAM9gB,SAAWqjB,CACnB,CACA,SAASC,EAAOx/B,GACd,MAAM67B,EAAOngC,EAAOmgC,KACd3/B,EAASR,EAAOQ,OAAO2/B,KAC7B,IAAKa,EAAQn/B,QAAS,CAChByC,GAAKA,EAAEpM,SACT8oC,EAAQn/B,QAAUyC,EAAEpM,OAAOgS,QAAQ,IAAIlK,EAAOQ,OAAO4J,6BAElD42B,EAAQn/B,UACP7B,EAAOQ,OAAOuM,SAAW/M,EAAOQ,OAAOuM,QAAQC,SAAWhN,EAAO+M,QACnEi0B,EAAQn/B,QAAUE,EAAgB/B,EAAO0M,SAAU,IAAI1M,EAAOQ,OAAOgV,oBAAoB,GAEzFwrB,EAAQn/B,QAAU7B,EAAOyK,OAAOzK,EAAOiL,cAG3C,IAAIhB,EAAU+2B,EAAQn/B,QAAQ3I,cAAc,IAAIsH,EAAO+/B,kBACnDt2B,IACFA,EAAUA,EAAQ9Q,iBAAiB,kDAAkD,IAEvF6nC,EAAQ/2B,QAAUA,EAEhB+2B,EAAQK,YADNp3B,EACoBjG,EAAeg9B,EAAQ/2B,QAAS,IAAIzJ,EAAO+/B,kBAAkB,QAE7D/gC,CAE1B,CACA,IAAKwhC,EAAQ/2B,UAAY+2B,EAAQK,YAAa,OAO9C,IAAI0C,EACAC,EACAC,EACAC,EACApiB,EACAC,EACAoiB,EACAC,EACAC,EACAC,EACAhB,EACAC,EACAgB,EACAC,EACAC,EACAC,EACAvD,EACAC,EAvBJJ,EAAQX,SAAWiC,IACftiC,EAAOQ,OAAO8N,UAChBtO,EAAOU,UAAUhH,MAAMiI,SAAW,SAClC3B,EAAOU,UAAUhH,MAAMqsB,YAAc,QAEvCib,EAAQn/B,QAAQe,UAAUC,IAAI,GAAGrC,EAAOggC,yBAmBJ,IAAzBc,EAAMK,aAAapqB,GAAqBjT,GACjDy/B,EAASz/B,EAAEka,MACXwlB,EAAS1/B,EAAEmc,QAEXsjB,EAASzC,EAAMK,aAAapqB,EAC5BysB,EAAS1C,EAAMK,aAAanqB,GAE9B,MAAMmtB,EAAYhE,EACZiE,EAA8B,iBAANtgC,EAAiBA,EAAI,KAC9B,IAAjBq8B,GAAsBiE,IACxBb,OAASvkC,EACTwkC,OAASxkC,EACT8hC,EAAMK,aAAapqB,OAAI/X,EACvB8hC,EAAMK,aAAanqB,OAAIhY,GAEzB,MAAM6gC,EAAWiC,IACjBnC,EAAK7C,MAAQsH,GAAkBvE,EAC/BM,EAAeiE,GAAkBvE,GAC7B/7B,GAAwB,IAAjBq8B,GAAsBiE,GAmC/BT,EAAa,EACbC,EAAa,IAnCbjD,EAAaH,EAAQn/B,QAAQ6C,YAC7B08B,EAAcJ,EAAQn/B,QAAQuQ,aAC9B6xB,EAAUjhC,EAAcg+B,EAAQn/B,SAAS6B,KAAOvH,EAAOqH,QACvD0gC,EAAUlhC,EAAcg+B,EAAQn/B,SAAS4B,IAAMtH,EAAOmH,QACtDwe,EAAQmiB,EAAU9C,EAAa,EAAI4C,EACnChiB,EAAQmiB,EAAU9C,EAAc,EAAI4C,EACpCK,EAAarD,EAAQ/2B,QAAQvF,aAAes8B,EAAQ/2B,QAAQ8B,YAC5Du4B,EAActD,EAAQ/2B,QAAQmI,cAAgB4uB,EAAQ/2B,QAAQ+B,aAC9Ds3B,EAAce,EAAalE,EAAK7C,MAChCiG,EAAee,EAAcnE,EAAK7C,MAClCiH,EAAgBpjC,KAAKE,IAAI8/B,EAAa,EAAImC,EAAc,EAAG,GAC3DkB,EAAgBrjC,KAAKE,IAAI+/B,EAAc,EAAImC,EAAe,EAAG,GAC7DkB,GAAiBF,EACjBG,GAAiBF,EACbG,EAAY,GAAKC,GAA4C,iBAAnBtD,EAAM/gB,UAAmD,iBAAnB+gB,EAAM9gB,UACxF2jB,EAAa7C,EAAM/gB,SAAW4f,EAAK7C,MAAQqH,EAC3CP,EAAa9C,EAAM9gB,SAAW2f,EAAK7C,MAAQqH,IAE3CR,EAAariB,EAAQqe,EAAK7C,MAC1B8G,EAAariB,EAAQoe,EAAK7C,OAExB6G,EAAaI,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,GAEXL,EAAaI,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,IAMbE,GAAiC,IAAfzE,EAAK7C,QACzB0D,EAAQC,QAAU,EAClBD,EAAQE,QAAU,GAEpBI,EAAM/gB,SAAW4jB,EACjB7C,EAAM9gB,SAAW4jB,EACjBpD,EAAQK,YAAY3nC,MAAM+tB,mBAAqB,QAC/CuZ,EAAQK,YAAY3nC,MAAM4D,UAAY,eAAe6mC,QAAiBC,SACtEpD,EAAQ/2B,QAAQvQ,MAAM+tB,mBAAqB,QAC3CuZ,EAAQ/2B,QAAQvQ,MAAM4D,UAAY,4BAA4B6iC,EAAK7C,QACrE,CACA,SAASuH,IACP,MAAM1E,EAAOngC,EAAOmgC,KACd3/B,EAASR,EAAOQ,OAAO2/B,KAC7B,IAAKa,EAAQn/B,QAAS,CAChB7B,EAAOQ,OAAOuM,SAAW/M,EAAOQ,OAAOuM,QAAQC,SAAWhN,EAAO+M,QACnEi0B,EAAQn/B,QAAUE,EAAgB/B,EAAO0M,SAAU,IAAI1M,EAAOQ,OAAOgV,oBAAoB,GAEzFwrB,EAAQn/B,QAAU7B,EAAOyK,OAAOzK,EAAOiL,aAEzC,IAAIhB,EAAU+2B,EAAQn/B,QAAQ3I,cAAc,IAAIsH,EAAO+/B,kBACnDt2B,IACFA,EAAUA,EAAQ9Q,iBAAiB,kDAAkD,IAEvF6nC,EAAQ/2B,QAAUA,EAEhB+2B,EAAQK,YADNp3B,EACoBjG,EAAeg9B,EAAQ/2B,QAAS,IAAIzJ,EAAO+/B,kBAAkB,QAE7D/gC,CAE1B,CACKwhC,EAAQ/2B,SAAY+2B,EAAQK,cACjCL,EAAQX,SAAWiC,IACftiC,EAAOQ,OAAO8N,UAChBtO,EAAOU,UAAUhH,MAAMiI,SAAW,GAClC3B,EAAOU,UAAUhH,MAAMqsB,YAAc,IAEvCoa,EAAK7C,MAAQ,EACbqD,EAAe,EACfW,EAAM/gB,cAAW/gB,EACjB8hC,EAAM9gB,cAAWhhB,EACjB8hC,EAAMK,aAAapqB,OAAI/X,EACvB8hC,EAAMK,aAAanqB,OAAIhY,EACvBwhC,EAAQK,YAAY3nC,MAAM+tB,mBAAqB,QAC/CuZ,EAAQK,YAAY3nC,MAAM4D,UAAY,qBACtC0jC,EAAQ/2B,QAAQvQ,MAAM+tB,mBAAqB,QAC3CuZ,EAAQ/2B,QAAQvQ,MAAM4D,UAAY,8BAClC0jC,EAAQn/B,QAAQe,UAAUkH,OAAO,GAAGtJ,EAAOggC,oBAC3CQ,EAAQn/B,aAAUrC,EAClBwhC,EAAQC,QAAU,EAClBD,EAAQE,QAAU,EACdlhC,EAAOQ,OAAO2/B,KAAKG,iBACrBQ,EAAgB,CACdvpB,EAAG,EACHC,EAAG,GAEDqpB,IACFA,GAAqB,EACrBS,EAAM1jB,OAAS,EACf0jB,EAAM5gB,OAAS,IAGrB,CAGA,SAASokB,EAAWxgC,GAClB,MAAM67B,EAAOngC,EAAOmgC,KAChBA,EAAK7C,OAAwB,IAAf6C,EAAK7C,MAErBuH,IAGAf,EAAOx/B,EAEX,CACA,SAASygC,IASP,MAAO,CACL5F,kBATsBn/B,EAAOQ,OAAOumB,kBAAmB,CACvDZ,SAAS,EACTH,SAAS,GAQTgf,2BANgChlC,EAAOQ,OAAOumB,kBAAmB,CACjEZ,SAAS,EACTH,SAAS,GAMb,CAGA,SAASiD,IACP,MAAMkX,EAAOngC,EAAOmgC,KACpB,GAAIA,EAAKnzB,QAAS,OAClBmzB,EAAKnzB,SAAU,EACf,MAAMmyB,gBACJA,EAAe6F,0BACfA,GACED,IAGJ/kC,EAAOU,UAAU7H,iBAAiB,cAAe8pC,EAAgBxD,GACjEn/B,EAAOU,UAAU7H,iBAAiB,cAAeiqC,EAAiBkC,GAClE,CAAC,YAAa,gBAAiB,cAAcvsC,QAAQgzB,IACnDzrB,EAAOU,UAAU7H,iBAAiB4yB,EAAW0X,EAAchE,KAI7Dn/B,EAAOU,UAAU7H,iBAAiB,cAAe0oB,EAAayjB,EAChE,CACA,SAAShc,IACP,MAAMmX,EAAOngC,EAAOmgC,KACpB,IAAKA,EAAKnzB,QAAS,OACnBmzB,EAAKnzB,SAAU,EACf,MAAMmyB,gBACJA,EAAe6F,0BACfA,GACED,IAGJ/kC,EAAOU,UAAU5H,oBAAoB,cAAe6pC,EAAgBxD,GACpEn/B,EAAOU,UAAU5H,oBAAoB,cAAegqC,EAAiBkC,GACrE,CAAC,YAAa,gBAAiB,cAAcvsC,QAAQgzB,IACnDzrB,EAAOU,UAAU5H,oBAAoB2yB,EAAW0X,EAAchE,KAIhEn/B,EAAOU,UAAU5H,oBAAoB,cAAeyoB,EAAayjB,EACnE,CA9kBAhtC,OAAOitC,eAAejlC,EAAOmgC,KAAM,QAAS,CAC1C+E,IAAG,IACM5H,EAET,GAAA6H,CAAIpb,GACF,GAAIuT,IAAUvT,EAAO,CACnB,MAAM9f,EAAU+2B,EAAQ/2B,QAClBpI,EAAUm/B,EAAQn/B,QACxByH,EAAK,aAAcygB,EAAO9f,EAASpI,EACrC,CACAy7B,EAAQvT,CACV,IAokBF7hB,EAAG,OAAQ,KACLlI,EAAOQ,OAAO2/B,KAAKnzB,SACrBic,MAGJ/gB,EAAG,UAAW,KACZ8gB,MAEF9gB,EAAG,aAAc,CAACupB,EAAIntB,KACftE,EAAOmgC,KAAKnzB,SAvbnB,SAAsB1I,GACpB,MAAM8B,EAASpG,EAAOoG,OACtB,IAAK46B,EAAQ/2B,QAAS,OACtB,GAAIq3B,EAAMhiB,UAAW,OACjBlZ,EAAOE,SAAWhC,EAAE8d,YAAY9d,EAAE0Z,iBACtCsjB,EAAMhiB,WAAY,EAClB,MAAM5W,EAAQq4B,EAAQroC,OAAS,EAAIqoC,EAAQ,GAAKz8B,EAChDg9B,EAAMK,aAAapqB,EAAI7O,EAAM8V,MAC7B8iB,EAAMK,aAAanqB,EAAI9O,EAAM+X,KAC/B,CA+aExC,CAAa3Z,KAEf4D,EAAG,WAAY,CAACupB,EAAIntB,KACbtE,EAAOmgC,KAAKnzB,SAtVnB,WACE,MAAMmzB,EAAOngC,EAAOmgC,KAEpB,GADAY,EAAQroC,OAAS,GACZsoC,EAAQ/2B,QAAS,OACtB,IAAKq3B,EAAMhiB,YAAcgiB,EAAM/hB,QAG7B,OAFA+hB,EAAMhiB,WAAY,OAClBgiB,EAAM/hB,SAAU,GAGlB+hB,EAAMhiB,WAAY,EAClBgiB,EAAM/hB,SAAU,EAChB,IAAI6lB,EAAoB,IACpBC,EAAoB,IACxB,MAAMC,EAAoB5Z,EAASnU,EAAI6tB,EACjCG,EAAejE,EAAM/gB,SAAW+kB,EAChCE,EAAoB9Z,EAASlU,EAAI6tB,EACjCI,EAAenE,EAAM9gB,SAAWglB,EAGnB,IAAf9Z,EAASnU,IAAS6tB,EAAoBjkC,KAAK2D,KAAKygC,EAAejE,EAAM/gB,UAAYmL,EAASnU,IAC3E,IAAfmU,EAASlU,IAAS6tB,EAAoBlkC,KAAK2D,KAAK2gC,EAAenE,EAAM9gB,UAAYkL,EAASlU,IAC9F,MAAMkuB,EAAmBvkC,KAAKC,IAAIgkC,EAAmBC,GACrD/D,EAAM/gB,SAAWglB,EACjBjE,EAAM9gB,SAAWilB,EAEjB,MAAMnC,EAAchC,EAAM96B,MAAQ25B,EAAK7C,MACjCiG,EAAejC,EAAM56B,OAASy5B,EAAK7C,MACzCgE,EAAMC,KAAOpgC,KAAKE,IAAI2/B,EAAQG,WAAa,EAAImC,EAAc,EAAG,GAChEhC,EAAMG,MAAQH,EAAMC,KACpBD,EAAME,KAAOrgC,KAAKE,IAAI2/B,EAAQI,YAAc,EAAImC,EAAe,EAAG,GAClEjC,EAAMI,MAAQJ,EAAME,KACpBF,EAAM/gB,SAAWpf,KAAKC,IAAID,KAAKE,IAAIigC,EAAM/gB,SAAU+gB,EAAMG,MAAOH,EAAMC,MACtED,EAAM9gB,SAAWrf,KAAKC,IAAID,KAAKE,IAAIigC,EAAM9gB,SAAU8gB,EAAMI,MAAOJ,EAAME,MACtER,EAAQK,YAAY3nC,MAAM+tB,mBAAqB,GAAGie,MAClD1E,EAAQK,YAAY3nC,MAAM4D,UAAY,eAAegkC,EAAM/gB,eAAe+gB,EAAM9gB,eAClF,CAoTEqD,KAEF3b,EAAG,YAAa,CAACupB,EAAIntB,MACdtE,EAAO8X,WAAa9X,EAAOQ,OAAO2/B,KAAKnzB,SAAWhN,EAAOmgC,KAAKnzB,SAAWhN,EAAOQ,OAAO2/B,KAAK7F,QAC/FwK,EAAWxgC,KAGf4D,EAAG,gBAAiB,KACdlI,EAAOmgC,KAAKnzB,SAAWhN,EAAOQ,OAAO2/B,KAAKnzB,SAC5Cy2B,MAGJv7B,EAAG,cAAe,KACZlI,EAAOmgC,KAAKnzB,SAAWhN,EAAOQ,OAAO2/B,KAAKnzB,SAAWhN,EAAOQ,OAAO8N,SACrEm1B,MAGJzrC,OAAOqU,OAAOrM,EAAOmgC,KAAM,CACzBlX,SACAD,UACA2c,GAAI7B,EACJ8B,IAAKf,EACLvK,OAAQwK,GAEZ,EAGA,UAAoB9kC,OAClBA,EAAMsrB,aACNA,EAAYpjB,GACZA,IAaA,SAAS29B,EAAatuB,EAAGC,GACvB,MAAMsuB,EAAe,WACnB,IAAIC,EACAC,EACAC,EACJ,MAAO,CAACC,EAAO7rB,KAGb,IAFA2rB,GAAY,EACZD,EAAWG,EAAMxtC,OACVqtC,EAAWC,EAAW,GAC3BC,EAAQF,EAAWC,GAAY,EAC3BE,EAAMD,IAAU5rB,EAClB2rB,EAAWC,EAEXF,EAAWE,EAGf,OAAOF,EAEX,CAjBqB,GAwBrB,IAAII,EACAC,EAYJ,OAnBAhrC,KAAKmc,EAAIA,EACTnc,KAAKoc,EAAIA,EACTpc,KAAKwf,UAAYrD,EAAE7e,OAAS,EAM5B0C,KAAKirC,YAAc,SAAqBjE,GACtC,OAAKA,GAGLgE,EAAKN,EAAa1qC,KAAKmc,EAAG6qB,GAC1B+D,EAAKC,EAAK,GAIFhE,EAAKhnC,KAAKmc,EAAE4uB,KAAQ/qC,KAAKoc,EAAE4uB,GAAMhrC,KAAKoc,EAAE2uB,KAAQ/qC,KAAKmc,EAAE6uB,GAAMhrC,KAAKmc,EAAE4uB,IAAO/qC,KAAKoc,EAAE2uB,IAR1E,CASlB,EACO/qC,IACT,CA8EA,SAASkrC,IACFtmC,EAAOqd,WAAWC,SACnBtd,EAAOqd,WAAWkpB,SACpBvmC,EAAOqd,WAAWkpB,YAAS/mC,SACpBQ,EAAOqd,WAAWkpB,OAE7B,CAtIAjb,EAAa,CACXjO,WAAY,CACVC,aAAS9d,EACTgnC,SAAS,EACTC,GAAI,WAIRzmC,EAAOqd,WAAa,CAClBC,aAAS9d,GA8HX0I,EAAG,aAAc,KACf,GAAsB,oBAAX/L,SAEiC,iBAArC6D,EAAOQ,OAAO6c,WAAWC,SAAwBtd,EAAOQ,OAAO6c,WAAWC,mBAAmB3e,aAAc,CAgBhH,YAfoE,iBAArCqB,EAAOQ,OAAO6c,WAAWC,QAAuB,IAAI5iB,SAASvB,iBAAiB6G,EAAOQ,OAAO6c,WAAWC,UAAY,CAACtd,EAAOQ,OAAO6c,WAAWC,UAC5J7kB,QAAQiuC,IAEtB,GADK1mC,EAAOqd,WAAWC,UAAStd,EAAOqd,WAAWC,QAAU,IACxDopB,GAAkBA,EAAe1mC,OACnCA,EAAOqd,WAAWC,QAAQnb,KAAKukC,EAAe1mC,aACzC,GAAI0mC,EAAgB,CACzB,MAAMjb,EAAY,GAAGzrB,EAAOQ,OAAOmmB,mBAC7BggB,EAAqBriC,IACzBtE,EAAOqd,WAAWC,QAAQnb,KAAKmC,EAAE2e,OAAO,IACxCjjB,EAAO6L,SACP66B,EAAe5tC,oBAAoB2yB,EAAWkb,IAEhDD,EAAe7tC,iBAAiB4yB,EAAWkb,EAC7C,GAGJ,CACA3mC,EAAOqd,WAAWC,QAAUtd,EAAOQ,OAAO6c,WAAWC,UAEvDpV,EAAG,SAAU,KACXo+B,MAEFp+B,EAAG,SAAU,KACXo+B,MAEFp+B,EAAG,iBAAkB,KACnBo+B,MAEFp+B,EAAG,eAAgB,CAACupB,EAAIrxB,EAAWiX,KAC5BrX,EAAOqd,WAAWC,UAAWtd,EAAOqd,WAAWC,QAAQ9U,WAC5DxI,EAAOqd,WAAWjG,aAAahX,EAAWiX,KAE5CnP,EAAG,gBAAiB,CAACupB,EAAIlxB,EAAU8W,KAC5BrX,EAAOqd,WAAWC,UAAWtd,EAAOqd,WAAWC,QAAQ9U,WAC5DxI,EAAOqd,WAAWrL,cAAczR,EAAU8W,KAE5Crf,OAAOqU,OAAOrM,EAAOqd,WAAY,CAC/BjG,aA1HF,SAAsBwvB,EAAIvvB,GACxB,MAAMwvB,EAAa7mC,EAAOqd,WAAWC,QACrC,IAAI7J,EACAqzB,EACJ,MAAM9b,EAAShrB,EAAOjI,YACtB,SAASgvC,EAAuBvqC,GAC9B,GAAIA,EAAEgM,UAAW,OAMjB,MAAMpI,EAAYJ,EAAO2M,cAAgB3M,EAAOI,UAAYJ,EAAOI,UAC/B,UAAhCJ,EAAOQ,OAAO6c,WAAWopB,MAhBjC,SAAgCjqC,GAC9BwD,EAAOqd,WAAWkpB,OAASvmC,EAAOQ,OAAOmL,KAAO,IAAIk6B,EAAa7lC,EAAOoN,WAAY5Q,EAAE4Q,YAAc,IAAIy4B,EAAa7lC,EAAOmN,SAAU3Q,EAAE2Q,SAC1I,CAeM65B,CAAuBxqC,GAGvBsqC,GAAuB9mC,EAAOqd,WAAWkpB,OAAOF,aAAajmC,IAE1D0mC,GAAuD,cAAhC9mC,EAAOQ,OAAO6c,WAAWopB,KACnDhzB,GAAcjX,EAAEmX,eAAiBnX,EAAEuW,iBAAmB/S,EAAO2T,eAAiB3T,EAAO+S,iBACjFnL,OAAOwE,MAAMqH,IAAgB7L,OAAOq/B,SAASxzB,KAC/CA,EAAa,GAEfqzB,GAAuB1mC,EAAYJ,EAAO+S,gBAAkBU,EAAajX,EAAEuW,gBAEzE/S,EAAOQ,OAAO6c,WAAWmpB,UAC3BM,EAAsBtqC,EAAEmX,eAAiBmzB,GAE3CtqC,EAAEgX,eAAeszB,GACjBtqC,EAAE4a,aAAa0vB,EAAqB9mC,GACpCxD,EAAEoZ,oBACFpZ,EAAEkY,qBACJ,CACA,GAAI5R,MAAMC,QAAQ8jC,GAChB,IAAK,IAAI7nC,EAAI,EAAGA,EAAI6nC,EAAWnuC,OAAQsG,GAAK,EACtC6nC,EAAW7nC,KAAOqY,GAAgBwvB,EAAW7nC,aAAcgsB,GAC7D+b,EAAuBF,EAAW7nC,SAG7B6nC,aAAsB7b,GAAU3T,IAAiBwvB,GAC1DE,EAAuBF,EAE3B,EAgFE70B,cA/EF,SAAuBzR,EAAU8W,GAC/B,MAAM2T,EAAShrB,EAAOjI,YAChB8uC,EAAa7mC,EAAOqd,WAAWC,QACrC,IAAIte,EACJ,SAASkoC,EAAwB1qC,GAC3BA,EAAEgM,YACNhM,EAAEwV,cAAczR,EAAUP,GACT,IAAbO,IACF/D,EAAEsc,kBACEtc,EAAEgE,OAAOiU,YACXhY,EAAS,KACPD,EAAEqV,qBAGNzN,EAAqB5H,EAAEkE,UAAW,KAC3BmmC,GACLrqC,EAAEuc,mBAGR,CACA,GAAIjW,MAAMC,QAAQ8jC,GAChB,IAAK7nC,EAAI,EAAGA,EAAI6nC,EAAWnuC,OAAQsG,GAAK,EAClC6nC,EAAW7nC,KAAOqY,GAAgBwvB,EAAW7nC,aAAcgsB,GAC7Dkc,EAAwBL,EAAW7nC,SAG9B6nC,aAAsB7b,GAAU3T,IAAiBwvB,GAC1DK,EAAwBL,EAE5B,GAoDF,EAEA,UAAc7mC,OACZA,EAAMsrB,aACNA,EAAYpjB,GACZA,IAEAojB,EAAa,CACX6b,KAAM,CACJn6B,SAAS,EACTo6B,kBAAmB,sBACnBC,iBAAkB,iBAClBC,iBAAkB,aAClBC,kBAAmB,0BACnBC,iBAAkB,yBAClBC,wBAAyB,wBACzBC,kBAAmB,+BACnBC,iBAAkB,KAClBC,gCAAiC,KACjCC,cAAe,KACfC,2BAA4B,KAC5BC,UAAW,QACX/rC,GAAI,KACJgsC,eAAe,EACfC,mBAAmB,KAGvBjoC,EAAOmnC,KAAO,CACZe,SAAS,GAEX,IACIC,EACAC,EAFAC,EAAa,KAGbC,GAA6B,IAAI9sC,MAAOyF,UAC5C,SAASsnC,EAAOC,GACd,MAAMC,EAAeJ,EACO,IAAxBI,EAAa/vC,QACjBuM,EAAawjC,EAAcD,EAC7B,CAKA,SAASE,EAAgB7rC,IACvBA,EAAK8H,EAAkB9H,IACpBpE,QAAQ2gC,IACTA,EAAMz/B,aAAa,WAAY,MAEnC,CACA,SAASgvC,EAAmB9rC,IAC1BA,EAAK8H,EAAkB9H,IACpBpE,QAAQ2gC,IACTA,EAAMz/B,aAAa,WAAY,OAEnC,CACA,SAASivC,EAAU/rC,EAAIgsC,IACrBhsC,EAAK8H,EAAkB9H,IACpBpE,QAAQ2gC,IACTA,EAAMz/B,aAAa,OAAQkvC,IAE/B,CACA,SAASC,EAAqBjsC,EAAIksC,IAChClsC,EAAK8H,EAAkB9H,IACpBpE,QAAQ2gC,IACTA,EAAMz/B,aAAa,uBAAwBovC,IAE/C,CAOA,SAASC,EAAWnsC,EAAI2P,IACtB3P,EAAK8H,EAAkB9H,IACpBpE,QAAQ2gC,IACTA,EAAMz/B,aAAa,aAAc6S,IAErC,CAaA,SAASy8B,EAAUpsC,IACjBA,EAAK8H,EAAkB9H,IACpBpE,QAAQ2gC,IACTA,EAAMz/B,aAAa,iBAAiB,IAExC,CACA,SAASuvC,EAASrsC,IAChBA,EAAK8H,EAAkB9H,IACpBpE,QAAQ2gC,IACTA,EAAMz/B,aAAa,iBAAiB,IAExC,CACA,SAASwvC,EAAkB7kC,GACzB,GAAkB,KAAdA,EAAEmwB,SAAgC,KAAdnwB,EAAEmwB,QAAgB,OAC1C,MAAMj0B,EAASR,EAAOQ,OAAO2mC,KACvBvoB,EAAWta,EAAEpM,OACnB,IAAI8H,EAAOm6B,aAAcn6B,EAAOm6B,WAAWt9B,IAAO+hB,IAAa5e,EAAOm6B,WAAWt9B,KAAMmD,EAAOm6B,WAAWt9B,GAAGgN,SAASvF,EAAEpM,SAChHoM,EAAEpM,OAAOmK,QAAQ8tB,GAAkBnwB,EAAOQ,OAAO25B,WAAWiB,cADnE,CAGA,GAAIp7B,EAAO4kB,YAAc5kB,EAAO4kB,WAAWE,QAAU9kB,EAAO4kB,WAAWC,OAAQ,CAC7E,MAAMzP,EAAUzQ,EAAkB3E,EAAO4kB,WAAWE,QACpCngB,EAAkB3E,EAAO4kB,WAAWC,QACxCrd,SAASoX,KACb5e,EAAO6T,QAAU7T,EAAOQ,OAAOmL,MACnC3L,EAAO6Z,YAEL7Z,EAAO6T,MACT00B,EAAO/nC,EAAOgnC,kBAEde,EAAO/nC,EAAO8mC,mBAGdlyB,EAAQ5N,SAASoX,KACb5e,EAAO4T,cAAgB5T,EAAOQ,OAAOmL,MACzC3L,EAAOma,YAELna,EAAO4T,YACT20B,EAAO/nC,EAAO+mC,mBAEdgB,EAAO/nC,EAAO6mC,kBAGpB,CACIrnC,EAAOm6B,YAAcvb,EAASvc,QAAQ8tB,GAAkBnwB,EAAOQ,OAAO25B,WAAWiB,eACnFxc,EAASwqB,OA1BX,CA4BF,CA0BA,SAASC,IACP,OAAOrpC,EAAOm6B,YAAcn6B,EAAOm6B,WAAW4B,SAAW/7B,EAAOm6B,WAAW4B,QAAQrjC,MACrF,CACA,SAAS4wC,IACP,OAAOD,KAAmBrpC,EAAOQ,OAAO25B,WAAWC,SACrD,CAmBA,MAAMmP,EAAY,CAAC1sC,EAAI2sC,EAAWhB,KAChCE,EAAgB7rC,GACG,WAAfA,EAAGy8B,UACLsP,EAAU/rC,EAAI,UACdA,EAAGhE,iBAAiB,UAAWswC,IAEjCH,EAAWnsC,EAAI2rC,GA9HjB,SAAuB3rC,EAAI4sC,IACzB5sC,EAAK8H,EAAkB9H,IACpBpE,QAAQ2gC,IACTA,EAAMz/B,aAAa,gBAAiB8vC,IAExC,CA0HEC,CAAc7sC,EAAI2sC,IAEdG,EAAoBrlC,IACpB8jC,GAAsBA,IAAuB9jC,EAAEpM,SAAWkwC,EAAmBv+B,SAASvF,EAAEpM,UAC1FiwC,GAAsB,GAExBnoC,EAAOmnC,KAAKe,SAAU,GAElB0B,EAAkB,KACtBzB,GAAsB,EACtBtsC,sBAAsB,KACpBA,sBAAsB,KACfmE,EAAOwI,YACVxI,EAAOmnC,KAAKe,SAAU,QAKxB2B,EAAqBvlC,IACzBgkC,GAA6B,IAAI9sC,MAAOyF,WAEpC6oC,EAAcxlC,IAClB,GAAItE,EAAOmnC,KAAKe,UAAYloC,EAAOQ,OAAO2mC,KAAKa,cAAe,OAC9D,IAAI,IAAIxsC,MAAOyF,UAAYqnC,EAA6B,IAAK,OAC7D,MAAMzmC,EAAUyC,EAAEpM,OAAOgS,QAAQ,IAAIlK,EAAOQ,OAAO4J,4BACnD,IAAKvI,IAAY7B,EAAOyK,OAAOjD,SAAS3F,GAAU,OAClDumC,EAAqBvmC,EACrB,MAAMiL,EAAY9M,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QACpD+8B,GAAYj9B,EAAYX,SAAStK,EAAQ2U,aAAa,2BAA4B,IAAMxW,EAAOyK,OAAOjS,QAAQqJ,MAAc7B,EAAOiL,YACnImI,EAAYpT,EAAOQ,OAAO+Q,qBAAuBvR,EAAOmS,eAAiBnS,EAAOmS,cAAc3K,SAAS3F,GACzGkoC,GAAY32B,GACZ9O,EAAE0lC,oBAAsB1lC,EAAE0lC,mBAAmBC,mBAC7CjqC,EAAOiM,eACTjM,EAAOnD,GAAG0G,WAAa,EAEvBvD,EAAOnD,GAAGwG,UAAY,EAExBxH,sBAAsB,KAChBssC,IACAnoC,EAAOQ,OAAOmL,KAChB3L,EAAOqZ,YAAYrZ,EAAOkb,sBAAsB/O,SAAStK,EAAQ2U,aAAa,6BAA8B,GACnG1J,EACT9M,EAAOuY,QAAQvY,EAAOkb,sBAAsB/O,SAAStK,EAAQ2U,aAAa,2BAA4B,KAAM,GAE5GxW,EAAOuY,QAAQvY,EAAOkb,sBAAsBlb,EAAOyK,OAAOjS,QAAQqJ,IAAW,GAE/EsmC,GAAsB,OAGpB15B,EAAa,KACjB,MAAMjO,EAASR,EAAOQ,OAAO2mC,KACzB3mC,EAAOsnC,4BACTgB,EAAqB9oC,EAAOyK,OAAQjK,EAAOsnC,4BAEzCtnC,EAAOunC,WACTa,EAAU5oC,EAAOyK,OAAQjK,EAAOunC,WAElC,MAAM76B,EAAelN,EAAOyK,OAAO/R,OAC/B8H,EAAOknC,mBACT1nC,EAAOyK,OAAOhS,QAAQ,CAACoJ,EAASsH,KAC9B,MAAMuH,EAAa1Q,EAAOQ,OAAOmL,KAAOQ,SAAStK,EAAQ2U,aAAa,2BAA4B,IAAMrN,EAExG6/B,EAAWnnC,EADcrB,EAAOknC,kBAAkBhqC,QAAQ,gBAAiBgT,EAAa,GAAGhT,QAAQ,uBAAwBwP,OAK3HqZ,EAAO,KACX,MAAM/lB,EAASR,EAAOQ,OAAO2mC,KAC7BnnC,EAAOnD,GAAGkf,OAAOssB,GAGjB,MAAM7e,EAAcxpB,EAAOnD,GACvB2D,EAAOonC,iCACTkB,EAAqBtf,EAAahpB,EAAOonC,iCAEvCpnC,EAAOmnC,kBACTqB,EAAWxf,EAAahpB,EAAOmnC,kBAE7BnnC,EAAOqnC,eACTe,EAAUpf,EAAahpB,EAAOqnC,eAIhC,MAAMnnC,EAAYV,EAAOU,UACnB8oC,EAAYhpC,EAAOxE,IAAM0E,EAAU8V,aAAa,OAAS,kBA/OjE,SAAyBhS,EAAO,IAE9B,MAAO,IAAI0lC,OAAO1lC,GAAM9G,QAAQ,KADb,IAAMyD,KAAKgpC,MAAM,GAAKhpC,KAAKipC,UAAUpsC,SAAS,IAEnE,CA4OmFqsC,CAAgB,MAvMnG,IAAqBruC,EAyMnB,GAzMmBA,EAwMAwtC,EAvMd7kC,EAuMGjE,GAtMLjI,QAAQ2gC,IACTA,EAAMz/B,aAAa,KAAMqC,KAsMvBwE,EAAOynC,kBAAmB,EAnMhC,SAAmBprC,EAAIytC,IACrBztC,EAAK8H,EAAkB9H,IACpBpE,QAAQ2gC,IACTA,EAAMz/B,aAAa,YAAa2wC,IAEpC,CAgMIC,CAAU7pC,EADGV,EAAOQ,OAAO0kB,UAAYllB,EAAOQ,OAAO0kB,SAASlY,QAAU,MAAQ,SAElF,CAGAyB,IAGA,IAAIoW,OACFA,EAAMC,OACNA,GACE9kB,EAAO4kB,WAAa5kB,EAAO4kB,WAAa,CAAC,EAW7C,GAVAC,EAASlgB,EAAkBkgB,GAC3BC,EAASngB,EAAkBmgB,GACvBD,GACFA,EAAOpsB,QAAQoE,GAAM0sC,EAAU1sC,EAAI2sC,EAAWhpC,EAAO8mC,mBAEnDxiB,GACFA,EAAOrsB,QAAQoE,GAAM0sC,EAAU1sC,EAAI2sC,EAAWhpC,EAAO6mC,mBAInDiC,IAA0B,CACP3kC,EAAkB3E,EAAOm6B,WAAWt9B,IAC5CpE,QAAQoE,IACnBA,EAAGhE,iBAAiB,UAAWswC,IAEnC,CAGiB3uC,IACR3B,iBAAiB,mBAAoBgxC,GAC9C7pC,EAAOnD,GAAGhE,iBAAiB,QAASixC,GAAa,GACjD9pC,EAAOnD,GAAGhE,iBAAiB,cAAe8wC,GAAmB,GAC7D3pC,EAAOnD,GAAGhE,iBAAiB,YAAa+wC,GAAiB,IAiC3D1hC,EAAG,aAAc,KACfmgC,EAAa9uC,EAAc,OAAQyG,EAAOQ,OAAO2mC,KAAKC,mBACtDiB,EAAW1uC,aAAa,YAAa,aACrC0uC,EAAW1uC,aAAa,cAAe,UAEzCuO,EAAG,YAAa,KACTlI,EAAOQ,OAAO2mC,KAAKn6B,SACxBuZ,MAEFre,EAAG,iEAAkE,KAC9DlI,EAAOQ,OAAO2mC,KAAKn6B,SACxByB,MAEFvG,EAAG,wCAAyC,KACrClI,EAAOQ,OAAO2mC,KAAKn6B,SAhO1B,WACE,GAAIhN,EAAOQ,OAAOmL,MAAQ3L,EAAOQ,OAAOkL,SAAW1L,EAAO4kB,WAAY,OACtE,MAAMC,OACJA,EAAMC,OACNA,GACE9kB,EAAO4kB,WACPE,IACE9kB,EAAO4T,aACTq1B,EAAUnkB,GACV6jB,EAAmB7jB,KAEnBokB,EAASpkB,GACT4jB,EAAgB5jB,KAGhBD,IACE7kB,EAAO6T,OACTo1B,EAAUpkB,GACV8jB,EAAmB9jB,KAEnBqkB,EAASrkB,GACT6jB,EAAgB7jB,IAGtB,CAyME2lB,KAEFtiC,EAAG,mBAAoB,KAChBlI,EAAOQ,OAAO2mC,KAAKn6B,SArM1B,WACE,MAAMxM,EAASR,EAAOQ,OAAO2mC,KACxBkC,KACLrpC,EAAOm6B,WAAW4B,QAAQtjC,QAAQ0jC,IAC5Bn8B,EAAOQ,OAAO25B,WAAWC,YAC3BsO,EAAgBvM,GACXn8B,EAAOQ,OAAO25B,WAAWO,eAC5BkO,EAAUzM,EAAU,UACpB6M,EAAW7M,EAAU37B,EAAOinC,wBAAwB/pC,QAAQ,gBAAiBmG,EAAas4B,GAAY,MAGtGA,EAAS95B,QAAQ8tB,GAAkBnwB,EAAOQ,OAAO25B,WAAWkB,oBAC9Dc,EAASxiC,aAAa,eAAgB,QAEtCwiC,EAASzxB,gBAAgB,iBAG/B,CAqLE+/B,KAEFviC,EAAG,UAAW,KACPlI,EAAOQ,OAAO2mC,KAAKn6B,SArD1B,WACMq7B,GAAYA,EAAWv+B,SAC3B,IAAI+a,OACFA,EAAMC,OACNA,GACE9kB,EAAO4kB,WAAa5kB,EAAO4kB,WAAa,CAAC,EAC7CC,EAASlgB,EAAkBkgB,GAC3BC,EAASngB,EAAkBmgB,GACvBD,GACFA,EAAOpsB,QAAQoE,GAAMA,EAAG/D,oBAAoB,UAAWqwC,IAErDrkB,GACFA,EAAOrsB,QAAQoE,GAAMA,EAAG/D,oBAAoB,UAAWqwC,IAIrDG,KACmB3kC,EAAkB3E,EAAOm6B,WAAWt9B,IAC5CpE,QAAQoE,IACnBA,EAAG/D,oBAAoB,UAAWqwC,KAGrB3uC,IACR1B,oBAAoB,mBAAoB+wC,GAE7C7pC,EAAOnD,IAA2B,iBAAdmD,EAAOnD,KAC7BmD,EAAOnD,GAAG/D,oBAAoB,QAASgxC,GAAa,GACpD9pC,EAAOnD,GAAG/D,oBAAoB,cAAe6wC,GAAmB,GAChE3pC,EAAOnD,GAAG/D,oBAAoB,YAAa8wC,GAAiB,GAEhE,CAwBEnc,IAEJ,EAEA,UAAiBztB,OACfA,EAAMsrB,aACNA,EAAYpjB,GACZA,IAEAojB,EAAa,CACXxwB,QAAS,CACPkS,SAAS,EACT09B,KAAM,GACN3vC,cAAc,EACdxC,IAAK,SACLoyC,WAAW,KAGf,IAAIl0B,GAAc,EACdm0B,EAAQ,CAAC,EACb,MAAMC,EAAUtoC,GACPA,EAAKvE,WAAWN,QAAQ,OAAQ,KAAKA,QAAQ,WAAY,IAAIA,QAAQ,OAAQ,KAAKA,QAAQ,MAAO,IAAIA,QAAQ,MAAO,IAEvHotC,EAAgBC,IACpB,MAAM5uC,EAASF,IACf,IAAIlC,EAEFA,EADEgxC,EACS,IAAIC,IAAID,GAER5uC,EAAOpC,SAEpB,MAAMkxC,EAAYlxC,EAASM,SAASmE,MAAM,GAAGjC,MAAM,KAAKjE,OAAO4yC,GAAiB,KAATA,GACjE5O,EAAQ2O,EAAUvyC,OAGxB,MAAO,CACLH,IAHU0yC,EAAU3O,EAAQ,GAI5BvS,MAHYkhB,EAAU3O,EAAQ,KAM5B6O,EAAa,CAAC5yC,EAAK4Q,KACvB,MAAMhN,EAASF,IACf,IAAKwa,IAAgBzW,EAAOQ,OAAO1F,QAAQkS,QAAS,OACpD,IAAIjT,EAEFA,EADEiG,EAAOQ,OAAOomB,IACL,IAAIokB,IAAIhrC,EAAOQ,OAAOomB,KAEtBzqB,EAAOpC,SAEpB,MAAM8U,EAAQ7O,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAAUhN,EAAO0M,SAASxT,cAAc,6BAA6BiQ,OAAanJ,EAAOyK,OAAOtB,GACtJ,IAAI4gB,EAAQ8gB,EAAQh8B,EAAM2H,aAAa,iBACvC,GAAIxW,EAAOQ,OAAO1F,QAAQ4vC,KAAKhyC,OAAS,EAAG,CACzC,IAAIgyC,EAAO1qC,EAAOQ,OAAO1F,QAAQ4vC,KACH,MAA1BA,EAAKA,EAAKhyC,OAAS,KAAYgyC,EAAOA,EAAKlsC,MAAM,EAAGksC,EAAKhyC,OAAS,IACtEqxB,EAAQ,GAAG2gB,KAAQnyC,EAAM,GAAGA,KAAS,KAAKwxB,GAC5C,MAAYhwB,EAASM,SAASmN,SAASjP,KACrCwxB,EAAQ,GAAGxxB,EAAM,GAAGA,KAAS,KAAKwxB,KAEhC/pB,EAAOQ,OAAO1F,QAAQ6vC,YACxB5gB,GAAShwB,EAASQ,QAEpB,MAAM6wC,EAAejvC,EAAOrB,QAAQuwC,MAChCD,GAAgBA,EAAarhB,QAAUA,IAGvC/pB,EAAOQ,OAAO1F,QAAQC,aACxBoB,EAAOrB,QAAQC,aAAa,CAC1BgvB,SACC,KAAMA,GAET5tB,EAAOrB,QAAQE,UAAU,CACvB+uB,SACC,KAAMA,KAGPuhB,EAAgB,CAAC7qC,EAAOspB,EAAOpS,KACnC,GAAIoS,EACF,IAAK,IAAI/qB,EAAI,EAAGtG,EAASsH,EAAOyK,OAAO/R,OAAQsG,EAAItG,EAAQsG,GAAK,EAAG,CACjE,MAAM6P,EAAQ7O,EAAOyK,OAAOzL,GAE5B,GADqB6rC,EAAQh8B,EAAM2H,aAAa,mBAC3BuT,EAAO,CAC1B,MAAM5gB,EAAQnJ,EAAOqb,cAAcxM,GACnC7O,EAAOuY,QAAQpP,EAAO1I,EAAOkX,EAC/B,CACF,MAEA3X,EAAOuY,QAAQ,EAAG9X,EAAOkX,IAGvB4zB,EAAqB,KACzBX,EAAQE,EAAc9qC,EAAOQ,OAAOomB,KACpC0kB,EAActrC,EAAOQ,OAAOC,MAAOmqC,EAAM7gB,OAAO,IA6BlD7hB,EAAG,OAAQ,KACLlI,EAAOQ,OAAO1F,QAAQkS,SA5Bf,MACX,MAAM7Q,EAASF,IACf,GAAK+D,EAAOQ,OAAO1F,QAAnB,CACA,IAAKqB,EAAOrB,UAAYqB,EAAOrB,QAAQE,UAGrC,OAFAgF,EAAOQ,OAAO1F,QAAQkS,SAAU,OAChChN,EAAOQ,OAAOgrC,eAAex+B,SAAU,GAGzCyJ,GAAc,EACdm0B,EAAQE,EAAc9qC,EAAOQ,OAAOomB,KAC/BgkB,EAAMryC,KAAQqyC,EAAM7gB,OAMzBuhB,EAAc,EAAGV,EAAM7gB,MAAO/pB,EAAOQ,OAAOkW,oBACvC1W,EAAOQ,OAAO1F,QAAQC,cACzBoB,EAAOtD,iBAAiB,WAAY0yC,IAP/BvrC,EAAOQ,OAAO1F,QAAQC,cACzBoB,EAAOtD,iBAAiB,WAAY0yC,EAVN,GA2BhChlB,KAGJre,EAAG,UAAW,KACRlI,EAAOQ,OAAO1F,QAAQkS,SAZZ,MACd,MAAM7Q,EAASF,IACV+D,EAAOQ,OAAO1F,QAAQC,cACzBoB,EAAOrD,oBAAoB,WAAYyyC,IAUvC9d,KAGJvlB,EAAG,2CAA4C,KACzCuO,GACF00B,EAAWnrC,EAAOQ,OAAO1F,QAAQvC,IAAKyH,EAAOiL,eAGjD/C,EAAG,cAAe,KACZuO,GAAezW,EAAOQ,OAAO8N,SAC/B68B,EAAWnrC,EAAOQ,OAAO1F,QAAQvC,IAAKyH,EAAOiL,cAGnD,EAEA,UAAwBjL,OACtBA,EAAMsrB,aACNA,EAAYhiB,KACZA,EAAIpB,GACJA,IAEA,IAAIuO,GAAc,EAClB,MAAM/b,EAAWF,IACX2B,EAASF,IACfqvB,EAAa,CACXkgB,eAAgB,CACdx+B,SAAS,EACTjS,cAAc,EACd0wC,YAAY,EACZ,aAAApwB,CAAcoW,EAAIz3B,GAChB,GAAIgG,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAAS,CACnD,MAAM0+B,EAAgB1rC,EAAOyK,OAAOsK,KAAKlT,GAAWA,EAAQ2U,aAAa,eAAiBxc,GAC1F,IAAK0xC,EAAe,OAAO,EAE3B,OADcv/B,SAASu/B,EAAcl1B,aAAa,2BAA4B,GAEhF,CACA,OAAOxW,EAAOqb,cAActZ,EAAgB/B,EAAO0M,SAAU,IAAI1M,EAAOQ,OAAO4J,yBAAyBpQ,gCAAmCA,OAAU,GACvJ,KAGJ,MAAM2xC,EAAe,KACnBriC,EAAK,cACL,MAAMsiC,EAAUlxC,EAASX,SAASC,KAAK0D,QAAQ,IAAK,IAC9CmuC,EAAgB7rC,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAAUhN,EAAO0M,SAASxT,cAAc,6BAA6B8G,EAAOiL,iBAAmBjL,EAAOyK,OAAOzK,EAAOiL,aAElL,GAAI2gC,KADoBC,EAAgBA,EAAcr1B,aAAa,aAAe,IACjD,CAC/B,MAAM8C,EAAWtZ,EAAOQ,OAAOgrC,eAAenwB,cAAcrb,EAAQ4rC,GACpE,QAAwB,IAAbtyB,GAA4B1R,OAAOwE,MAAMkN,GAAW,OAC/DtZ,EAAOuY,QAAQe,EACjB,GAEIwyB,EAAU,KACd,IAAKr1B,IAAgBzW,EAAOQ,OAAOgrC,eAAex+B,QAAS,OAC3D,MAAM6+B,EAAgB7rC,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAAUhN,EAAO0M,SAASxT,cAAc,6BAA6B8G,EAAOiL,iBAAmBjL,EAAOyK,OAAOzK,EAAOiL,aAC5K8gC,EAAkBF,EAAgBA,EAAcr1B,aAAa,cAAgBq1B,EAAcr1B,aAAa,gBAAkB,GAC5HxW,EAAOQ,OAAOgrC,eAAezwC,cAAgBoB,EAAOrB,SAAWqB,EAAOrB,QAAQC,cAChFoB,EAAOrB,QAAQC,aAAa,KAAM,KAAM,IAAIgxC,KAAqB,IACjEziC,EAAK,aAEL5O,EAASX,SAASC,KAAO+xC,GAAmB,GAC5CziC,EAAK,aAqBTpB,EAAG,OAAQ,KACLlI,EAAOQ,OAAOgrC,eAAex+B,SAnBtB,MACX,IAAKhN,EAAOQ,OAAOgrC,eAAex+B,SAAWhN,EAAOQ,OAAO1F,SAAWkF,EAAOQ,OAAO1F,QAAQkS,QAAS,OACrGyJ,GAAc,EACd,MAAMzc,EAAOU,EAASX,SAASC,KAAK0D,QAAQ,IAAK,IACjD,GAAI1D,EAAM,CACR,MAAMyG,EAAQ,EACR0I,EAAQnJ,EAAOQ,OAAOgrC,eAAenwB,cAAcrb,EAAQhG,GACjEgG,EAAOuY,QAAQpP,GAAS,EAAG1I,EAAOT,EAAOQ,OAAOkW,oBAAoB,EACtE,CACI1W,EAAOQ,OAAOgrC,eAAeC,YAC/BtvC,EAAOtD,iBAAiB,aAAc8yC,IAUtCplB,KAGJre,EAAG,UAAW,KACRlI,EAAOQ,OAAOgrC,eAAex+B,SAV7BhN,EAAOQ,OAAOgrC,eAAeC,YAC/BtvC,EAAOrD,oBAAoB,aAAc6yC,KAa7CzjC,EAAG,2CAA4C,KACzCuO,GACFq1B,MAGJ5jC,EAAG,cAAe,KACZuO,GAAezW,EAAOQ,OAAO8N,SAC/Bw9B,KAGN,EAIA,UAAkB9rC,OAChBA,EAAMsrB,aACNA,EAAYpjB,GACZA,EAAEoB,KACFA,EAAI9I,OACJA,IAkBA,IAAIw1B,EACAgW,EAjBJhsC,EAAOklB,SAAW,CAChBC,SAAS,EACTC,QAAQ,EACR6mB,SAAU,GAEZ3gB,EAAa,CACXpG,SAAU,CACRlY,SAAS,EACTtQ,MAAO,IACPwvC,mBAAmB,EACnBrT,sBAAsB,EACtBsT,iBAAiB,EACjBC,kBAAkB,EAClBC,mBAAmB,KAKvB,IAEIC,EAEAC,EACAjtB,EACAktB,EACAC,EACAC,EACAC,EATAC,EAAqBpsC,GAAUA,EAAO0kB,SAAW1kB,EAAO0kB,SAASxoB,MAAQ,IACzEmwC,EAAuBrsC,GAAUA,EAAO0kB,SAAW1kB,EAAO0kB,SAASxoB,MAAQ,IAE3EowC,GAAoB,IAAItxC,MAAOyF,UAOnC,SAASwiC,EAAgBn/B,GAClBtE,IAAUA,EAAOwI,WAAcxI,EAAOU,WACvC4D,EAAEpM,SAAW8H,EAAOU,YACxBV,EAAOU,UAAU5H,oBAAoB,gBAAiB2qC,GAClDkJ,GAAwBroC,EAAE2e,QAAU3e,EAAE2e,OAAOC,mBAGjDoC,IACF,CACA,MAAMynB,EAAe,KACnB,GAAI/sC,EAAOwI,YAAcxI,EAAOklB,SAASC,QAAS,OAC9CnlB,EAAOklB,SAASE,OAClBmnB,GAAY,EACHA,IACTM,EAAuBP,EACvBC,GAAY,GAEd,MAAMN,EAAWjsC,EAAOklB,SAASE,OAASknB,EAAmBQ,EAAoBD,GAAuB,IAAIrxC,MAAOyF,UACnHjB,EAAOklB,SAAS+mB,SAAWA,EAC3B3iC,EAAK,mBAAoB2iC,EAAUA,EAAWW,GAC9CZ,EAAMnwC,sBAAsB,KAC1BkxC,OAcEC,EAAgB,KACpB,IAAIC,EAAajtC,EAAOQ,OAAO0kB,SAASxoB,MACxC,MAAMwwC,EAbc,MACpB,IAAIrB,EAMJ,GAJEA,EADE7rC,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAC1BhN,EAAOyK,OAAOsK,KAAKlT,GAAWA,EAAQe,UAAUiH,SAAS,wBAEzD7J,EAAOyK,OAAOzK,EAAOiL,cAElC4gC,EAAe,OAEpB,OAD0B1/B,SAAS0/B,EAAcr1B,aAAa,wBAAyB,KAK7D22B,GAI1B,OAHKvlC,OAAOwE,MAAM8gC,IAAsBA,EAAoB,IAC1DD,EAAaC,GAERD,GAEHG,EAAMC,IACV,GAAIrtC,EAAOwI,YAAcxI,EAAOklB,SAASC,QAAS,OAClDppB,qBAAqBiwC,GACrBe,IACA,IAAIrwC,EAAQ2wC,OACS,IAAV3wC,IACTA,EAAQswC,IACRJ,EAAqBlwC,EACrBmwC,EAAuBnwC,GAEzB4vC,EAAmB5vC,EACnB,MAAM+D,EAAQT,EAAOQ,OAAOC,MACtB6sC,EAAU,KACTttC,IAAUA,EAAOwI,YAClBxI,EAAOQ,OAAO0kB,SAASknB,kBACpBpsC,EAAO4T,aAAe5T,EAAOQ,OAAOmL,MAAQ3L,EAAOQ,OAAOkL,QAC7D1L,EAAOma,UAAU1Z,GAAO,GAAM,GAC9B6I,EAAK,aACKtJ,EAAOQ,OAAO0kB,SAASinB,kBACjCnsC,EAAOuY,QAAQvY,EAAOyK,OAAO/R,OAAS,EAAG+H,GAAO,GAAM,GACtD6I,EAAK,cAGFtJ,EAAO6T,OAAS7T,EAAOQ,OAAOmL,MAAQ3L,EAAOQ,OAAOkL,QACvD1L,EAAO6Z,UAAUpZ,GAAO,GAAM,GAC9B6I,EAAK,aACKtJ,EAAOQ,OAAO0kB,SAASinB,kBACjCnsC,EAAOuY,QAAQ,EAAG9X,GAAO,GAAM,GAC/B6I,EAAK,aAGLtJ,EAAOQ,OAAO8N,UAChBw+B,GAAoB,IAAItxC,MAAOyF,UAC/BpF,sBAAsB,KACpBuxC,SAgBN,OAZI1wC,EAAQ,GACVf,aAAaq6B,GACbA,EAAUt6B,WAAW,KACnB4xC,KACC5wC,IAEHb,sBAAsB,KACpByxC,MAKG5wC,GAEH6wC,EAAQ,KACZT,GAAoB,IAAItxC,MAAOyF,UAC/BjB,EAAOklB,SAASC,SAAU,EAC1BioB,IACA9jC,EAAK,kBAEDwvB,EAAO,KACX94B,EAAOklB,SAASC,SAAU,EAC1BxpB,aAAaq6B,GACbj6B,qBAAqBiwC,GACrB1iC,EAAK,iBAEDkkC,EAAQ,CAAC31B,EAAU41B,KACvB,GAAIztC,EAAOwI,YAAcxI,EAAOklB,SAASC,QAAS,OAClDxpB,aAAaq6B,GACRne,IACH60B,GAAsB,GAExB,MAAMY,EAAU,KACdhkC,EAAK,iBACDtJ,EAAOQ,OAAO0kB,SAASgnB,kBACzBlsC,EAAOU,UAAU7H,iBAAiB,gBAAiB4qC,GAEnDne,KAIJ,GADAtlB,EAAOklB,SAASE,QAAS,EACrBqoB,EAEF,YADAH,IAGF,MAAM5wC,EAAQ4vC,GAAoBtsC,EAAOQ,OAAO0kB,SAASxoB,MACzD4vC,EAAmB5vC,IAAS,IAAIlB,MAAOyF,UAAY6rC,GAC/C9sC,EAAO6T,OAASy4B,EAAmB,IAAMtsC,EAAOQ,OAAOmL,OACvD2gC,EAAmB,IAAGA,EAAmB,GAC7CgB,MAEIhoB,EAAS,KACTtlB,EAAO6T,OAASy4B,EAAmB,IAAMtsC,EAAOQ,OAAOmL,MAAQ3L,EAAOwI,YAAcxI,EAAOklB,SAASC,UACxG2nB,GAAoB,IAAItxC,MAAOyF,UAC3ByrC,GACFA,GAAsB,EACtBU,EAAId,IAEJc,IAEFptC,EAAOklB,SAASE,QAAS,EACzB9b,EAAK,oBAEDugC,EAAqB,KACzB,GAAI7pC,EAAOwI,YAAcxI,EAAOklB,SAASC,QAAS,OAClD,MAAMzqB,EAAWF,IACgB,WAA7BE,EAASgzC,kBACXhB,GAAsB,EACtBc,GAAM,IAEyB,YAA7B9yC,EAASgzC,iBACXpoB,KAGEqoB,EAAiBrpC,IACC,UAAlBA,EAAEqa,cACN+tB,GAAsB,EACtBC,GAAuB,EACnB3sC,EAAO8X,WAAa9X,EAAOklB,SAASE,QACxCooB,GAAM,KAEFI,EAAiBtpC,IACC,UAAlBA,EAAEqa,cACNguB,GAAuB,EACnB3sC,EAAOklB,SAASE,QAClBE,MAuBJpd,EAAG,OAAQ,KACLlI,EAAOQ,OAAO0kB,SAASlY,UApBvBhN,EAAOQ,OAAO0kB,SAASmnB,oBACzBrsC,EAAOnD,GAAGhE,iBAAiB,eAAgB80C,GAC3C3tC,EAAOnD,GAAGhE,iBAAiB,eAAgB+0C,IAU5BpzC,IACR3B,iBAAiB,mBAAoBgxC,GAU5C0D,OAGJrlC,EAAG,UAAW,KApBRlI,EAAOnD,IAA2B,iBAAdmD,EAAOnD,KAC7BmD,EAAOnD,GAAG/D,oBAAoB,eAAgB60C,GAC9C3tC,EAAOnD,GAAG/D,oBAAoB,eAAgB80C,IAQ/BpzC,IACR1B,oBAAoB,mBAAoB+wC,GAY7C7pC,EAAOklB,SAASC,SAClB2T,MAGJ5wB,EAAG,yBAA0B,MACvBskC,GAAiBE,IACnBpnB,MAGJpd,EAAG,6BAA8B,KAC1BlI,EAAOQ,OAAO0kB,SAAS2T,qBAG1BC,IAFA0U,GAAM,GAAM,KAKhBtlC,EAAG,wBAAyB,CAACupB,EAAIhxB,EAAOoX,MAClC7X,EAAOwI,WAAcxI,EAAOklB,SAASC,UACrCtN,IAAa7X,EAAOQ,OAAO0kB,SAAS2T,qBACtC2U,GAAM,GAAM,GAEZ1U,OAGJ5wB,EAAG,kBAAmB,MAChBlI,EAAOwI,WAAcxI,EAAOklB,SAASC,UACrCnlB,EAAOQ,OAAO0kB,SAAS2T,qBACzBC,KAGFxZ,GAAY,EACZktB,GAAgB,EAChBE,GAAsB,EACtBD,EAAoB/wC,WAAW,KAC7BgxC,GAAsB,EACtBF,GAAgB,EAChBgB,GAAM,IACL,SAELtlC,EAAG,WAAY,KACb,IAAIlI,EAAOwI,WAAcxI,EAAOklB,SAASC,SAAY7F,EAArD,CAGA,GAFA3jB,aAAa8wC,GACb9wC,aAAaq6B,GACTh2B,EAAOQ,OAAO0kB,SAAS2T,qBAGzB,OAFA2T,GAAgB,OAChBltB,GAAY,GAGVktB,GAAiBxsC,EAAOQ,OAAO8N,SAASgX,IAC5CknB,GAAgB,EAChBltB,GAAY,CAV0D,IAYxEpX,EAAG,cAAe,MACZlI,EAAOwI,WAAcxI,EAAOklB,SAASC,SACrCnlB,EAAOklB,SAASE,SAClBknB,EAAmBU,IACnBJ,EAAqBI,OAGzBh1C,OAAOqU,OAAOrM,EAAOklB,SAAU,CAC7BqoB,QACAzU,OACA0U,QACAloB,UAEJ,EAEA,UAAetlB,OACbA,EAAMsrB,aACNA,EAAYpjB,GACZA,IAEAojB,EAAa,CACXuiB,OAAQ,CACN7tC,OAAQ,KACR8tC,sBAAsB,EACtBC,iBAAkB,EAClBC,sBAAuB,4BACvBC,qBAAsB,mBAG1B,IAAIx3B,GAAc,EACdy3B,GAAgB,EAIpB,SAASC,IACP,MAAMC,EAAepuC,EAAO6tC,OAAO7tC,OACnC,SAAKouC,GAAgBA,EAAa5lC,aAC3B4lC,EAAa5tC,OAAOuM,SAAWqhC,EAAa5tC,OAAOuM,QAAQC,QACpE,CACA,SAASqhC,IACP,MAAMD,EAAepuC,EAAO6tC,OAAO7tC,OACnC,IAAKouC,GAAgBA,EAAa5lC,UAAW,OAC7C,MAAMwO,EAAeo3B,EAAap3B,aAC5BD,EAAeq3B,EAAar3B,aAClC,GAAIA,GAAgBA,EAAanU,UAAUiH,SAAS7J,EAAOQ,OAAOqtC,OAAOG,uBAAwB,OACjG,GAAI,MAAOh3B,EAAuD,OAClE,IAAIiE,EAEFA,EADEmzB,EAAa5tC,OAAOmL,KACPQ,SAASiiC,EAAar3B,aAAaP,aAAa,2BAA4B,IAE5EQ,EAEbhX,EAAOQ,OAAOmL,KAChB3L,EAAOqZ,YAAY4B,GAEnBjb,EAAOuY,QAAQ0C,EAEnB,CACA,SAASsL,IACP,MACEsnB,OAAQS,GACNtuC,EAAOQ,OACX,GAAIiW,EAAa,OAAO,EACxBA,GAAc,EACd,MAAM83B,EAAcvuC,EAAOjI,YAC3B,GAAIu2C,EAAatuC,kBAAkBuuC,EAAa,CAC9C,GAAID,EAAatuC,OAAOwI,UAEtB,OADAiO,GAAc,GACP,EAETzW,EAAO6tC,OAAO7tC,OAASsuC,EAAatuC,OACpChI,OAAOqU,OAAOrM,EAAO6tC,OAAO7tC,OAAOuoB,eAAgB,CACjDhX,qBAAqB,EACrB0F,qBAAqB,IAEvBjf,OAAOqU,OAAOrM,EAAO6tC,OAAO7tC,OAAOQ,OAAQ,CACzC+Q,qBAAqB,EACrB0F,qBAAqB,IAEvBjX,EAAO6tC,OAAO7tC,OAAO6L,QACvB,MAAO,GAAIzN,EAAWkwC,EAAatuC,QAAS,CAC1C,MAAMwuC,EAAqBx2C,OAAOqU,OAAO,CAAC,EAAGiiC,EAAatuC,QAC1DhI,OAAOqU,OAAOmiC,EAAoB,CAChCj9B,qBAAqB,EACrB0F,qBAAqB,IAEvBjX,EAAO6tC,OAAO7tC,OAAS,IAAIuuC,EAAYC,GACvCN,GAAgB,CAClB,CAUA,OATAluC,EAAO6tC,OAAO7tC,OAAOnD,GAAG+F,UAAUC,IAAI7C,EAAOQ,OAAOqtC,OAAOI,sBAC3DjuC,EAAO6tC,OAAO7tC,OAAOkI,GAAG,MAAOmmC,GAC3BF,KACFnuC,EAAO6tC,OAAO7tC,OAAOkI,GAAG,gBAAiB,KACvC2D,GAAO,EAAO,CACZ4iC,YAAY,OAIX,CACT,CACA,SAAS5iC,EAAO2M,EAASonB,GACvB,MAAMwO,EAAepuC,EAAO6tC,OAAO7tC,OACnC,IAAKouC,GAAgBA,EAAa5lC,UAAW,OAG7C,IAAIkmC,EAAmB,EACvB,MAAMC,EAAmB3uC,EAAOQ,OAAOqtC,OAAOG,sBAS9C,GARIhuC,EAAOQ,OAAOsK,cAAgB,IAAM9K,EAAOQ,OAAO6N,iBACpDqgC,EAAmB1uC,EAAOQ,OAAOsK,eAE9B9K,EAAOQ,OAAOqtC,OAAOC,uBACxBY,EAAmB,GAErBA,EAAmBvtC,KAAK8N,MAAMy/B,GAC9BN,EAAa3jC,OAAOhS,QAAQoJ,GAAWA,EAAQe,UAAUkH,OAAO6kC,IAC5DP,EAAa5tC,OAAOmL,MAAQwiC,IAC9B,IAAK,IAAInvC,EAAI,EAAGA,EAAI0vC,EAAkB1vC,GAAK,EACzC+C,EAAgBqsC,EAAa1hC,SAAU,6BAA6B1M,EAAO4L,UAAY5M,OAAOvG,QAAQoJ,IACpGA,EAAQe,UAAUC,IAAI8rC,UAI1B,IAAK,IAAI3vC,EAAI,EAAGA,EAAI0vC,EAAkB1vC,GAAK,EACrCovC,EAAa3jC,OAAOzK,EAAO4L,UAAY5M,IACzCovC,EAAa3jC,OAAOzK,EAAO4L,UAAY5M,GAAG4D,UAAUC,IAAI8rC,IAI1D/O,GAAG6O,YAAc,IAIvB,SAAoBG,GAClB,MAAMR,EAAepuC,EAAO6tC,OAAO7tC,OACnC,IAAKouC,GAAgBA,EAAa5lC,UAAW,OAC7C,MAAMsC,EAAsD,SAAtCsjC,EAAa5tC,OAAOsK,cAA2BsjC,EAAarjC,uBAAyBqjC,EAAa5tC,OAAOsK,cACzHijC,EAAmB/tC,EAAOQ,OAAOqtC,OAAOE,iBACxCc,EAAYd,IAAqBK,EAAa5tC,OAAOmL,KAC3D,GAAI3L,EAAO4L,YAAcwiC,EAAaxiC,WAAaijC,EAAW,CAC5D,MAAMC,EAAqBV,EAAanjC,YACxC,IAAI8jC,EACA12B,EACJ,GAAI+1B,EAAa5tC,OAAOmL,KAAM,CAC5B,MAAMqjC,EAAiBZ,EAAa3jC,OAAOsK,KAAKlT,GAAWA,EAAQ2U,aAAa,6BAA+B,GAAGxW,EAAO4L,aACzHmjC,EAAiBX,EAAa3jC,OAAOjS,QAAQw2C,GAC7C32B,EAAYrY,EAAOiL,YAAcjL,EAAO8V,cAAgB,OAAS,MACnE,MACEi5B,EAAiB/uC,EAAO4L,UACxByM,EAAY02B,EAAiB/uC,EAAO8V,cAAgB,OAAS,OAE3D+4B,IACFE,GAAgC,SAAd12B,EAAuB01B,GAAoB,EAAIA,GAE/DK,EAAax7B,sBAAwBw7B,EAAax7B,qBAAqBpa,QAAQu2C,GAAkB,IAC/FX,EAAa5tC,OAAO6N,eAEpB0gC,EADEA,EAAiBD,EACFC,EAAiB5tC,KAAK8N,MAAMnE,EAAgB,GAAK,EAEjDikC,EAAiB5tC,KAAK8N,MAAMnE,EAAgB,GAAK,EAE3DikC,EAAiBD,GAAsBV,EAAa5tC,OAAOiP,eACtE2+B,EAAa71B,QAAQw2B,EAAgBH,GAEzC,CACF,CAnCIH,CAAWj2B,EAAU,OAAIhZ,EAE7B,CApGAQ,EAAO6tC,OAAS,CACd7tC,OAAQ,MAqIVkI,EAAG,aAAc,KACf,MAAM2lC,OACJA,GACE7tC,EAAOQ,OACX,GAAKqtC,GAAWA,EAAO7tC,OACvB,GAA6B,iBAAlB6tC,EAAO7tC,QAAuB6tC,EAAO7tC,kBAAkBrB,YAAa,CAC7E,MAAMjE,EAAWF,IACXy0C,EAA0B,KAC9B,MAAMC,EAAyC,iBAAlBrB,EAAO7tC,OAAsBtF,EAASxB,cAAc20C,EAAO7tC,QAAU6tC,EAAO7tC,OACzG,GAAIkvC,GAAiBA,EAAclvC,OACjC6tC,EAAO7tC,OAASkvC,EAAclvC,OAC9BumB,IACA1a,GAAO,QACF,GAAIqjC,EAAe,CACxB,MAAMzjB,EAAY,GAAGzrB,EAAOQ,OAAOmmB,mBAC7BwoB,EAAiB7qC,IACrBupC,EAAO7tC,OAASsE,EAAE2e,OAAO,GACzBisB,EAAcp2C,oBAAoB2yB,EAAW0jB,GAC7C5oB,IACA1a,GAAO,GACPgiC,EAAO7tC,OAAO6L,SACd7L,EAAO6L,UAETqjC,EAAcr2C,iBAAiB4yB,EAAW0jB,EAC5C,CACA,OAAOD,GAEHE,EAAyB,KAC7B,GAAIpvC,EAAOwI,UAAW,OACAymC,KAEpBpzC,sBAAsBuzC,IAG1BvzC,sBAAsBuzC,EACxB,MACE7oB,IACA1a,GAAO,KAGX3D,EAAG,2CAA4C,KAC7C2D,MAEF3D,EAAG,gBAAiB,CAACupB,EAAIlxB,KACvB,MAAM6tC,EAAepuC,EAAO6tC,OAAO7tC,OAC9BouC,IAAgBA,EAAa5lC,WAClC4lC,EAAap8B,cAAczR,KAE7B2H,EAAG,gBAAiB,KAClB,MAAMkmC,EAAepuC,EAAO6tC,OAAO7tC,OAC9BouC,IAAgBA,EAAa5lC,WAC9B0lC,GACFE,EAAa3gB,YAGjBz1B,OAAOqU,OAAOrM,EAAO6tC,OAAQ,CAC3BtnB,OACA1a,UAEJ,EAEA,UAAkB7L,OAChBA,EAAMsrB,aACNA,EAAYhiB,KACZA,EAAIX,KACJA,IAEA2iB,EAAa,CACX9Q,SAAU,CACRxN,SAAS,EACTqiC,UAAU,EACVC,cAAe,EACfC,gBAAgB,EAChBC,oBAAqB,EACrBC,sBAAuB,EACvBhX,QAAQ,EACRiX,gBAAiB,OAgNrB13C,OAAOqU,OAAOrM,EAAQ,CACpBwa,SAAU,CACRyD,aA/MJ,WACE,GAAIje,EAAOQ,OAAO8N,QAAS,OAC3B,MAAMlO,EAAYJ,EAAOpD,eACzBoD,EAAOoX,aAAahX,GACpBJ,EAAOgS,cAAc,GACrBhS,EAAOkd,gBAAgB2O,WAAWnzB,OAAS,EAC3CsH,EAAOwa,SAASqJ,WAAW,CACzBK,WAAYlkB,EAAO4M,IAAM5M,EAAOI,WAAaJ,EAAOI,WAExD,EAuMImhB,YAtMJ,WACE,GAAIvhB,EAAOQ,OAAO8N,QAAS,OAC3B,MACE4O,gBAAiB3T,EAAIkV,QACrBA,GACEze,EAE2B,IAA3BuJ,EAAKsiB,WAAWnzB,QAClB6Q,EAAKsiB,WAAW1pB,KAAK,CACnBq2B,SAAU/Z,EAAQze,EAAOiM,eAAiB,SAAW,UACrD5L,KAAMkJ,EAAKuX,iBAGfvX,EAAKsiB,WAAW1pB,KAAK,CACnBq2B,SAAU/Z,EAAQze,EAAOiM,eAAiB,WAAa,YACvD5L,KAAM1D,KAEV,EAsLIknB,WArLJ,UAAoBK,WAClBA,IAEA,GAAIlkB,EAAOQ,OAAO8N,QAAS,OAC3B,MAAM9N,OACJA,EAAME,UACNA,EACAiM,aAAcC,EAAGO,SACjBA,EACA+P,gBAAiB3T,GACfvJ,EAGE+jB,EADepnB,IACW4M,EAAKuX,eACrC,GAAIoD,GAAclkB,EAAO+S,eACvB/S,EAAOuY,QAAQvY,EAAOiL,kBAGxB,GAAIiZ,GAAclkB,EAAO2T,eACnB3T,EAAOyK,OAAO/R,OAASyU,EAASzU,OAClCsH,EAAOuY,QAAQpL,EAASzU,OAAS,GAEjCsH,EAAOuY,QAAQvY,EAAOyK,OAAO/R,OAAS,OAJ1C,CAQA,GAAI8H,EAAOga,SAAS60B,SAAU,CAC5B,GAAI9lC,EAAKsiB,WAAWnzB,OAAS,EAAG,CAC9B,MAAMi3C,EAAgBpmC,EAAKsiB,WAAW+jB,MAChCC,EAAgBtmC,EAAKsiB,WAAW+jB,MAChCE,EAAWH,EAAcnX,SAAWqX,EAAcrX,SAClDn4B,EAAOsvC,EAActvC,KAAOwvC,EAAcxvC,KAChDL,EAAO0rB,SAAWokB,EAAWzvC,EAC7BL,EAAO0rB,UAAY,EACfvqB,KAAK2D,IAAI9E,EAAO0rB,UAAYlrB,EAAOga,SAASk1B,kBAC9C1vC,EAAO0rB,SAAW,IAIhBrrB,EAAO,KAAO1D,IAAQgzC,EAActvC,KAAO,OAC7CL,EAAO0rB,SAAW,EAEtB,MACE1rB,EAAO0rB,SAAW,EAEpB1rB,EAAO0rB,UAAYlrB,EAAOga,SAASi1B,sBACnClmC,EAAKsiB,WAAWnzB,OAAS,EACzB,IAAIgtC,EAAmB,IAAOllC,EAAOga,SAAS80B,cAC9C,MAAMS,EAAmB/vC,EAAO0rB,SAAWga,EAC3C,IAAIsK,EAAchwC,EAAOI,UAAY2vC,EACjCnjC,IAAKojC,GAAeA,GACxB,IACIC,EADAC,GAAW,EAEf,MAAMC,EAA2C,GAA5BhvC,KAAK2D,IAAI9E,EAAO0rB,UAAiBlrB,EAAOga,SAASg1B,oBACtE,IAAIY,EACJ,GAAIJ,EAAchwC,EAAO2T,eACnBnT,EAAOga,SAAS+0B,gBACdS,EAAchwC,EAAO2T,gBAAkBw8B,IACzCH,EAAchwC,EAAO2T,eAAiBw8B,GAExCF,EAAsBjwC,EAAO2T,eAC7Bu8B,GAAW,EACX3mC,EAAK6Z,qBAAsB,GAE3B4sB,EAAchwC,EAAO2T,eAEnBnT,EAAOmL,MAAQnL,EAAO6N,iBAAgB+hC,GAAe,QACpD,GAAIJ,EAAchwC,EAAO+S,eAC1BvS,EAAOga,SAAS+0B,gBACdS,EAAchwC,EAAO+S,eAAiBo9B,IACxCH,EAAchwC,EAAO+S,eAAiBo9B,GAExCF,EAAsBjwC,EAAO+S,eAC7Bm9B,GAAW,EACX3mC,EAAK6Z,qBAAsB,GAE3B4sB,EAAchwC,EAAO+S,eAEnBvS,EAAOmL,MAAQnL,EAAO6N,iBAAgB+hC,GAAe,QACpD,GAAI5vC,EAAOga,SAASie,OAAQ,CACjC,IAAI3jB,EACJ,IAAK,IAAIu7B,EAAI,EAAGA,EAAIljC,EAASzU,OAAQ23C,GAAK,EACxC,GAAIljC,EAASkjC,IAAML,EAAa,CAC9Bl7B,EAAYu7B,EACZ,KACF,CAGAL,EADE7uC,KAAK2D,IAAIqI,EAAS2H,GAAak7B,GAAe7uC,KAAK2D,IAAIqI,EAAS2H,EAAY,GAAKk7B,IAA0C,SAA1BhwC,EAAO+gB,eAC5F5T,EAAS2H,GAET3H,EAAS2H,EAAY,GAErCk7B,GAAeA,CACjB,CAOA,GANII,GACFznC,EAAK,gBAAiB,KACpB3I,EAAO2Z,YAIa,IAApB3Z,EAAO0rB,UAMT,GAJEga,EADE94B,EACiBzL,KAAK2D,MAAMkrC,EAAchwC,EAAOI,WAAaJ,EAAO0rB,UAEpDvqB,KAAK2D,KAAKkrC,EAAchwC,EAAOI,WAAaJ,EAAO0rB,UAEpElrB,EAAOga,SAASie,OAAQ,CAQ1B,MAAM6X,EAAenvC,KAAK2D,KAAK8H,GAAOojC,EAAcA,GAAehwC,EAAOI,WACpEmwC,EAAmBvwC,EAAOqN,gBAAgBrN,EAAOiL,aAErDy6B,EADE4K,EAAeC,EACE/vC,EAAOC,MACjB6vC,EAAe,EAAIC,EACM,IAAf/vC,EAAOC,MAEQ,IAAfD,EAAOC,KAE9B,OACK,GAAID,EAAOga,SAASie,OAEzB,YADAz4B,EAAO8a,iBAGLta,EAAOga,SAAS+0B,gBAAkBW,GACpClwC,EAAOwT,eAAey8B,GACtBjwC,EAAOgS,cAAc0zB,GACrB1lC,EAAOoX,aAAa44B,GACpBhwC,EAAO8Y,iBAAgB,EAAM9Y,EAAO+gB,gBACpC/gB,EAAO8X,WAAY,EACnB1T,EAAqB1D,EAAW,KACzBV,IAAUA,EAAOwI,WAAce,EAAK6Z,sBACzC9Z,EAAK,kBACLtJ,EAAOgS,cAAcxR,EAAOC,OAC5B/E,WAAW,KACTsE,EAAOoX,aAAa64B,GACpB7rC,EAAqB1D,EAAW,KACzBV,IAAUA,EAAOwI,WACtBxI,EAAO+Y,mBAER,OAEI/Y,EAAO0rB,UAChBpiB,EAAK,8BACLtJ,EAAOwT,eAAew8B,GACtBhwC,EAAOgS,cAAc0zB,GACrB1lC,EAAOoX,aAAa44B,GACpBhwC,EAAO8Y,iBAAgB,EAAM9Y,EAAO+gB,gBAC/B/gB,EAAO8X,YACV9X,EAAO8X,WAAY,EACnB1T,EAAqB1D,EAAW,KACzBV,IAAUA,EAAOwI,WACtBxI,EAAO+Y,oBAIX/Y,EAAOwT,eAAew8B,GAExBhwC,EAAO4V,oBACP5V,EAAO0U,qBACT,KAAO,IAAIlU,EAAOga,SAASie,OAEzB,YADAz4B,EAAO8a,iBAEEta,EAAOga,UAChBlR,EAAK,6BACP,GACK9I,EAAOga,SAAS60B,UAAYtrB,GAAYvjB,EAAOgkB,gBAClDlb,EAAK,0BACLtJ,EAAOwT,iBACPxT,EAAO4V,oBACP5V,EAAO0U,sBArJT,CAuJF,IAQF,EAEA,UAAc1U,OACZA,EAAMsrB,aACNA,EAAYpjB,GACZA,IAQA,IAAIsoC,EACAC,EACAC,EACAloB,EATJ8C,EAAa,CACXpgB,KAAM,CACJC,KAAM,EACNgR,KAAM,YAOV,MAAMw0B,EAAkB,KACtB,IAAI9iC,EAAe7N,EAAOQ,OAAOqN,aAMjC,MAL4B,iBAAjBA,GAA6BA,EAAarV,QAAQ,MAAQ,EACnEqV,EAAe3P,WAAW2P,EAAanQ,QAAQ,IAAK,KAAO,IAAMsC,EAAOwE,KACvC,iBAAjBqJ,IAChBA,EAAe3P,WAAW2P,IAErBA,GAyHT3F,EAAG,OAtBY,KACbsgB,EAAcxoB,EAAOQ,OAAO0K,MAAQlL,EAAOQ,OAAO0K,KAAKC,KAAO,IAsBhEjD,EAAG,SApBc,KACf,MAAM1H,OACJA,EAAM3D,GACNA,GACEmD,EACEyoB,EAAajoB,EAAO0K,MAAQ1K,EAAO0K,KAAKC,KAAO,EACjDqd,IAAgBC,GAClB5rB,EAAG+F,UAAUkH,OAAO,GAAGtJ,EAAOkR,6BAA8B,GAAGlR,EAAOkR,qCACtEg/B,EAAiB,EACjB1wC,EAAO6oB,yBACGL,GAAeC,IACzB5rB,EAAG+F,UAAUC,IAAI,GAAGrC,EAAOkR,8BACF,WAArBlR,EAAO0K,KAAKiR,MACdtf,EAAG+F,UAAUC,IAAI,GAAGrC,EAAOkR,qCAE7B1R,EAAO6oB,wBAETL,EAAcC,IAIhBzoB,EAAOkL,KAAO,CACZuD,WA1HiBhE,IACjB,MAAMK,cACJA,GACE9K,EAAOQ,QACL2K,KACJA,EAAIgR,KACJA,GACEnc,EAAOQ,OAAO0K,KACZgC,EAAelN,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAAUhN,EAAO+M,QAAQtC,OAAO/R,OAAS+R,EAAO/R,OAC7Gg4C,EAAiBvvC,KAAK8N,MAAM/B,EAAe/B,GAEzCqlC,EADErvC,KAAK8N,MAAM/B,EAAe/B,KAAU+B,EAAe/B,EAC5B+B,EAEA/L,KAAK6J,KAAKkC,EAAe/B,GAAQA,EAEtC,SAAlBL,GAAqC,QAATqR,IAC9Bq0B,EAAyBrvC,KAAKC,IAAIovC,EAAwB1lC,EAAgBK,IAE5EslC,EAAeD,EAAyBrlC,GAyGxCuD,YAvGkB,KACd1O,EAAOyK,QACTzK,EAAOyK,OAAOhS,QAAQoW,IAChBA,EAAM+hC,qBACR/hC,EAAMnV,MAAMgN,OAAS,GACrBmI,EAAMnV,MAAMsG,EAAOyM,kBAAkB,eAAiB,OAmG5DqC,YA9FkB,CAAC9P,EAAG6P,EAAOpE,KAC7B,MAAMgF,eACJA,GACEzP,EAAOQ,OACLqN,EAAe8iC,KACfxlC,KACJA,EAAIgR,KACJA,GACEnc,EAAOQ,OAAO0K,KACZgC,EAAelN,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAAUhN,EAAO+M,QAAQtC,OAAO/R,OAAS+R,EAAO/R,OAE7G,IAAIm4C,EACArlC,EACAslC,EACJ,GAAa,QAAT30B,GAAkB1M,EAAiB,EAAG,CACxC,MAAMshC,EAAa5vC,KAAK8N,MAAMjQ,GAAKyQ,EAAiBtE,IAC9C6lC,EAAoBhyC,EAAImM,EAAOsE,EAAiBshC,EAChDE,EAAgC,IAAfF,EAAmBthC,EAAiBtO,KAAKE,IAAIF,KAAK6J,MAAMkC,EAAe6jC,EAAa5lC,EAAOsE,GAAkBtE,GAAOsE,GAC3IqhC,EAAM3vC,KAAK8N,MAAM+hC,EAAoBC,GACrCzlC,EAASwlC,EAAoBF,EAAMG,EAAiBF,EAAathC,EACjEohC,EAAqBrlC,EAASslC,EAAMN,EAAyBrlC,EAC7D0D,EAAMnV,MAAMw3C,MAAQL,CACtB,KAAoB,WAAT10B,GACT3Q,EAASrK,KAAK8N,MAAMjQ,EAAImM,GACxB2lC,EAAM9xC,EAAIwM,EAASL,GACfK,EAASklC,GAAkBllC,IAAWklC,GAAkBI,IAAQ3lC,EAAO,KACzE2lC,GAAO,EACHA,GAAO3lC,IACT2lC,EAAM,EACNtlC,GAAU,MAIdslC,EAAM3vC,KAAK8N,MAAMjQ,EAAIyxC,GACrBjlC,EAASxM,EAAI8xC,EAAML,GAErB5hC,EAAMiiC,IAAMA,EACZjiC,EAAMrD,OAASA,EACfqD,EAAMnV,MAAMgN,OAAS,iBAAiByE,EAAO,GAAK0C,UAAqB1C,KACvE0D,EAAMnV,MAAMsG,EAAOyM,kBAAkB,eAAyB,IAARqkC,EAAYjjC,GAAgB,GAAGA,MAAmB,GACxGgB,EAAM+hC,oBAAqB,GAuD3B/gC,kBArDwB,CAACrB,EAAWrB,KACpC,MAAMkB,eACJA,EAAcW,aACdA,GACEhP,EAAOQ,OACLqN,EAAe8iC,KACfxlC,KACJA,GACEnL,EAAOQ,OAAO0K,KAMlB,GALAlL,EAAOgO,aAAeQ,EAAYX,GAAgB2iC,EAClDxwC,EAAOgO,YAAc7M,KAAK6J,KAAKhL,EAAOgO,YAAc7C,GAAQ0C,EACvD7N,EAAOQ,OAAO8N,UACjBtO,EAAOU,UAAUhH,MAAMsG,EAAOyM,kBAAkB,UAAY,GAAGzM,EAAOgO,YAAcH,OAElFQ,EAAgB,CAClB,MAAM+B,EAAgB,GACtB,IAAK,IAAIpR,EAAI,EAAGA,EAAImO,EAASzU,OAAQsG,GAAK,EAAG,CAC3C,IAAIqR,EAAiBlD,EAASnO,GAC1BgQ,IAAcqB,EAAiBlP,KAAK8N,MAAMoB,IAC1ClD,EAASnO,GAAKgB,EAAOgO,YAAcb,EAAS,IAAIiD,EAAcjO,KAAKkO,EACzE,CACAlD,EAAS/D,OAAO,EAAG+D,EAASzU,QAC5ByU,EAAShL,QAAQiO,EACnB,GAgCJ,EAmLA,UAAsBpQ,OACpBA,IAEAhI,OAAOqU,OAAOrM,EAAQ,CACpBowB,YAAaA,GAAYpI,KAAKhoB,GAC9BuwB,aAAcA,GAAavI,KAAKhoB,GAChCywB,SAAUA,GAASzI,KAAKhoB,GACxB8wB,YAAaA,GAAY9I,KAAKhoB,GAC9BixB,gBAAiBA,GAAgBjJ,KAAKhoB,IAE1C,EAgHA,UAAoBA,OAClBA,EAAMsrB,aACNA,EAAYpjB,GACZA,IAEAojB,EAAa,CACX6lB,WAAY,CACVC,WAAW,KAoCflgB,GAAW,CACTvhB,OAAQ,OACR3P,SACAkI,KACAkP,aArCmB,KACnB,MAAM3M,OACJA,GACEzK,EACWA,EAAOQ,OAAO2wC,WAC7B,IAAK,IAAInyC,EAAI,EAAGA,EAAIyL,EAAO/R,OAAQsG,GAAK,EAAG,CACzC,MAAM6C,EAAU7B,EAAOyK,OAAOzL,GAE9B,IAAIqyC,GADWxvC,EAAQ2Q,kBAElBxS,EAAOQ,OAAO0W,mBAAkBm6B,GAAMrxC,EAAOI,WAClD,IAAIkxC,EAAK,EACJtxC,EAAOiM,iBACVqlC,EAAKD,EACLA,EAAK,GAEP,MAAME,EAAevxC,EAAOQ,OAAO2wC,WAAWC,UAAYjwC,KAAKC,IAAI,EAAID,KAAK2D,IAAIjD,EAAQX,UAAW,GAAK,EAAIC,KAAKE,IAAIF,KAAKC,IAAIS,EAAQX,UAAW,GAAI,GAC/I0d,EAAWgT,GAAapxB,EAAQqB,GACtC+c,EAASllB,MAAM6kC,QAAUgT,EACzB3yB,EAASllB,MAAM4D,UAAY,eAAe+zC,QAASC,WACrD,GAmBAt/B,cAjBoBzR,IACpB,MAAM0xB,EAAoBjyB,EAAOyK,OAAOjN,IAAIqE,GAAWD,EAAoBC,IAC3EowB,EAAkBx5B,QAAQoE,IACxBA,EAAGnD,MAAM+tB,mBAAqB,GAAGlnB,QAEnCyxB,GAA2B,CACzBhyB,SACAO,WACA0xB,oBACAC,WAAW,KASbf,gBAAiB,KAAM,CACrBrmB,cAAe,EACf2E,eAAgB,EAChB8B,qBAAqB,EACrB1D,aAAc,EACdqJ,kBAAmBlX,EAAOQ,OAAO8N,WAGvC,EAEA,UAAoBtO,OAClBA,EAAMsrB,aACNA,EAAYpjB,GACZA,IAEAojB,EAAa,CACXkmB,WAAY,CACV9f,cAAc,EACd+f,QAAQ,EACRC,aAAc,GACdC,YAAa,OAGjB,MAAMC,EAAqB,CAAC/vC,EAASX,EAAU+K,KAC7C,IAAI4lC,EAAe5lC,EAAepK,EAAQ3I,cAAc,6BAA+B2I,EAAQ3I,cAAc,4BACzG44C,EAAc7lC,EAAepK,EAAQ3I,cAAc,8BAAgC2I,EAAQ3I,cAAc,+BACxG24C,IACHA,EAAet4C,EAAc,OAAO,iDAAgD0S,EAAe,OAAS,QAAQ1P,MAAM,MAC1HsF,EAAQka,OAAO81B,IAEZC,IACHA,EAAcv4C,EAAc,OAAO,iDAAgD0S,EAAe,QAAU,WAAW1P,MAAM,MAC7HsF,EAAQka,OAAO+1B,IAEbD,IAAcA,EAAan4C,MAAM6kC,QAAUp9B,KAAKC,KAAKF,EAAU,IAC/D4wC,IAAaA,EAAYp4C,MAAM6kC,QAAUp9B,KAAKC,IAAIF,EAAU,KA2HlEgwB,GAAW,CACTvhB,OAAQ,OACR3P,SACAkI,KACAkP,aArHmB,KACnB,MAAMva,GACJA,EAAE6D,UACFA,EAAS+J,OACTA,EACAjE,MAAOivB,EACP/uB,OAAQgvB,EACR/oB,aAAcC,EACdpI,KAAMoJ,EAAU7I,QAChBA,GACE/E,EACE+xC,EAAIntC,EAAa5E,GACjBQ,EAASR,EAAOQ,OAAOgxC,WACvBvlC,EAAejM,EAAOiM,eACtBa,EAAY9M,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAC1D,IACIglC,EADAC,EAAgB,EAEhBzxC,EAAOixC,SACLxlC,GACF+lC,EAAehyC,EAAOU,UAAUxH,cAAc,uBACzC84C,IACHA,EAAez4C,EAAc,MAAO,sBACpCyG,EAAOU,UAAUqb,OAAOi2B,IAE1BA,EAAat4C,MAAMgN,OAAS,GAAG+uB,QAE/Buc,EAAen1C,EAAG3D,cAAc,uBAC3B84C,IACHA,EAAez4C,EAAc,MAAO,sBACpCsD,EAAGkf,OAAOi2B,MAIhB,IAAK,IAAIhzC,EAAI,EAAGA,EAAIyL,EAAO/R,OAAQsG,GAAK,EAAG,CACzC,MAAM6C,EAAU4I,EAAOzL,GACvB,IAAI0R,EAAa1R,EACb8N,IACF4D,EAAavE,SAAStK,EAAQ2U,aAAa,2BAA4B,KAEzE,IAAI07B,EAA0B,GAAbxhC,EACby5B,EAAQhpC,KAAK8N,MAAMijC,EAAa,KAChCtlC,IACFslC,GAAcA,EACd/H,EAAQhpC,KAAK8N,OAAOijC,EAAa,MAEnC,MAAMhxC,EAAWC,KAAKC,IAAID,KAAKE,IAAIQ,EAAQX,SAAU,IAAK,GAC1D,IAAImwC,EAAK,EACLC,EAAK,EACLa,EAAK,EACLzhC,EAAa,GAAM,GACrB2gC,EAAc,GAARlH,EAAYv8B,EAClBukC,EAAK,IACKzhC,EAAa,GAAK,GAAM,GAClC2gC,EAAK,EACLc,EAAc,GAARhI,EAAYv8B,IACR8C,EAAa,GAAK,GAAM,GAClC2gC,EAAKzjC,EAAqB,EAARu8B,EAAYv8B,EAC9BukC,EAAKvkC,IACK8C,EAAa,GAAK,GAAM,IAClC2gC,GAAMzjC,EACNukC,EAAK,EAAIvkC,EAA0B,EAAbA,EAAiBu8B,GAErCv9B,IACFykC,GAAMA,GAEHplC,IACHqlC,EAAKD,EACLA,EAAK,GAEP,MAAM/zC,EAAY,WAAWy0C,EAAE9lC,EAAe,GAAKimC,kBAA2BH,EAAE9lC,EAAeimC,EAAa,sBAAsBb,QAASC,QAASa,OAChJjxC,GAAY,GAAKA,GAAY,IAC/B+wC,EAA6B,GAAbvhC,EAA6B,GAAXxP,EAC9B0L,IAAKqlC,EAA8B,IAAbvhC,EAA6B,GAAXxP,IAE9CW,EAAQnI,MAAM4D,UAAYA,EACtBkD,EAAOkxB,cACTkgB,EAAmB/vC,EAASX,EAAU+K,EAE1C,CAGA,GAFAvL,EAAUhH,MAAM04C,gBAAkB,YAAYxkC,EAAa,MAC3DlN,EAAUhH,MAAM,4BAA8B,YAAYkU,EAAa,MACnEpN,EAAOixC,OACT,GAAIxlC,EACF+lC,EAAat4C,MAAM4D,UAAY,oBAAoBm4B,EAAc,EAAIj1B,EAAOkxC,oBAAoBjc,EAAc,8CAA8Cj1B,EAAOmxC,mBAC9J,CACL,MAAMU,EAAclxC,KAAK2D,IAAImtC,GAA4D,GAA3C9wC,KAAK8N,MAAM9N,KAAK2D,IAAImtC,GAAiB,IAC7Ex+B,EAAa,KAAOtS,KAAKmxC,IAAkB,EAAdD,EAAkBlxC,KAAKK,GAAK,KAAO,EAAIL,KAAKI,IAAkB,EAAd8wC,EAAkBlxC,KAAKK,GAAK,KAAO,GAChH+wC,EAAS/xC,EAAOmxC,YAChBa,EAAShyC,EAAOmxC,YAAcl+B,EAC9Bwf,EAASzyB,EAAOkxC,aACtBM,EAAat4C,MAAM4D,UAAY,WAAWi1C,SAAcC,uBAA4B9c,EAAe,EAAIzC,SAAcyC,EAAe,EAAI8c,yBAC1I,CAEF,MAAMC,GAAW1tC,EAAQsC,UAAYtC,EAAQ8C,YAAc9C,EAAQqC,oBAAsBwG,EAAa,EAAI,EAC1GlN,EAAUhH,MAAM4D,UAAY,qBAAqBm1C,gBAAsBV,EAAE/xC,EAAOiM,eAAiB,EAAIgmC,kBAA8BF,EAAE/xC,EAAOiM,gBAAkBgmC,EAAgB,SAC9KvxC,EAAUhH,MAAMoG,YAAY,4BAA6B,GAAG2yC,QAuB5DzgC,cArBoBzR,IACpB,MAAM1D,GACJA,EAAE4N,OACFA,GACEzK,EAOJ,GANAyK,EAAOhS,QAAQoJ,IACbA,EAAQnI,MAAM+tB,mBAAqB,GAAGlnB,MACtCsB,EAAQ1I,iBAAiB,gHAAgHV,QAAQ2gC,IAC/IA,EAAM1/B,MAAM+tB,mBAAqB,GAAGlnB,UAGpCP,EAAOQ,OAAOgxC,WAAWC,SAAWzxC,EAAOiM,eAAgB,CAC7D,MAAM0lB,EAAW90B,EAAG3D,cAAc,uBAC9By4B,IAAUA,EAASj4B,MAAM+tB,mBAAqB,GAAGlnB,MACvD,GAQA8wB,gBA/HsB,KAEtB,MAAMplB,EAAejM,EAAOiM,eAC5BjM,EAAOyK,OAAOhS,QAAQoJ,IACpB,MAAMX,EAAWC,KAAKC,IAAID,KAAKE,IAAIQ,EAAQX,SAAU,IAAK,GAC1D0wC,EAAmB/vC,EAASX,EAAU+K,MA2HxCqlB,gBAAiB,IAAMtxB,EAAOQ,OAAOgxC,WACrCpgB,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrBrmB,cAAe,EACf2E,eAAgB,EAChB8B,qBAAqB,EACrBmS,gBAAiB,EACjB7V,aAAc,EACdQ,gBAAgB,EAChB6I,kBAAkB,KAGxB,EAaA,UAAoBlX,OAClBA,EAAMsrB,aACNA,EAAYpjB,GACZA,IAEAojB,EAAa,CACXonB,WAAY,CACVhhB,cAAc,EACdihB,eAAe,KAGnB,MAAMf,EAAqB,CAAC/vC,EAASX,KACnC,IAAI2wC,EAAe7xC,EAAOiM,eAAiBpK,EAAQ3I,cAAc,6BAA+B2I,EAAQ3I,cAAc,4BAClH44C,EAAc9xC,EAAOiM,eAAiBpK,EAAQ3I,cAAc,8BAAgC2I,EAAQ3I,cAAc,+BACjH24C,IACHA,EAAevf,GAAa,OAAQzwB,EAAS7B,EAAOiM,eAAiB,OAAS,QAE3E6lC,IACHA,EAAcxf,GAAa,OAAQzwB,EAAS7B,EAAOiM,eAAiB,QAAU,WAE5E4lC,IAAcA,EAAan4C,MAAM6kC,QAAUp9B,KAAKC,KAAKF,EAAU,IAC/D4wC,IAAaA,EAAYp4C,MAAM6kC,QAAUp9B,KAAKC,IAAIF,EAAU,KA+DlEgwB,GAAW,CACTvhB,OAAQ,OACR3P,SACAkI,KACAkP,aAtDmB,KACnB,MAAM3M,OACJA,EACAkC,aAAcC,GACZ5M,EACEQ,EAASR,EAAOQ,OAAOkyC,WACvBE,EAAYhuC,EAAa5E,GAC/B,IAAK,IAAIhB,EAAI,EAAGA,EAAIyL,EAAO/R,OAAQsG,GAAK,EAAG,CACzC,MAAM6C,EAAU4I,EAAOzL,GACvB,IAAIkC,EAAWW,EAAQX,SACnBlB,EAAOQ,OAAOkyC,WAAWC,gBAC3BzxC,EAAWC,KAAKC,IAAID,KAAKE,IAAIQ,EAAQX,SAAU,IAAK,IAEtD,MAAM+xB,EAASpxB,EAAQ2Q,kBAEvB,IAAIqgC,GADY,IAAM3xC,EAElB4xC,EAAU,EACVzB,EAAKrxC,EAAOQ,OAAO8N,SAAW2kB,EAASjzB,EAAOI,WAAa6yB,EAC3Dqe,EAAK,EACJtxC,EAAOiM,eAKDW,IACTimC,GAAWA,IALXvB,EAAKD,EACLA,EAAK,EACLyB,GAAWD,EACXA,EAAU,GAIZhxC,EAAQnI,MAAMq5C,QAAU5xC,KAAK2D,IAAI3D,KAAKgpC,MAAMjpC,IAAauJ,EAAO/R,OAC5D8H,EAAOkxB,cACTkgB,EAAmB/vC,EAASX,GAE9B,MAAM5D,EAAY,eAAe+zC,QAASC,qBAAsBsB,EAAUE,kBAAwBF,EAAUC,SAC3FjhB,GAAapxB,EAAQqB,GAC7BnI,MAAM4D,UAAYA,CAC7B,GAqBA0U,cAnBoBzR,IACpB,MAAM0xB,EAAoBjyB,EAAOyK,OAAOjN,IAAIqE,GAAWD,EAAoBC,IAC3EowB,EAAkBx5B,QAAQoE,IACxBA,EAAGnD,MAAM+tB,mBAAqB,GAAGlnB,MACjC1D,EAAG1D,iBAAiB,gHAAgHV,QAAQk5B,IAC1IA,EAASj4B,MAAM+tB,mBAAqB,GAAGlnB,UAG3CyxB,GAA2B,CACzBhyB,SACAO,WACA0xB,uBASFZ,gBAnEsB,KAEtBrxB,EAAOQ,OAAOkyC,WACd1yC,EAAOyK,OAAOhS,QAAQoJ,IACpB,IAAIX,EAAWW,EAAQX,SACnBlB,EAAOQ,OAAOkyC,WAAWC,gBAC3BzxC,EAAWC,KAAKC,IAAID,KAAKE,IAAIQ,EAAQX,SAAU,IAAK,IAEtD0wC,EAAmB/vC,EAASX,MA4D9BowB,gBAAiB,IAAMtxB,EAAOQ,OAAOkyC,WACrCthB,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrBrmB,cAAe,EACf2E,eAAgB,EAChB8B,qBAAqB,EACrB1D,aAAc,EACdqJ,kBAAmBlX,EAAOQ,OAAO8N,WAGvC,EAEA,UAAyBtO,OACvBA,EAAMsrB,aACNA,EAAYpjB,GACZA,IAEAojB,EAAa,CACX0nB,gBAAiB,CACfnT,OAAQ,GACRoT,QAAS,EACTC,MAAO,IACP5V,MAAO,EACP6V,SAAU,EACVzhB,cAAc,KAwElBR,GAAW,CACTvhB,OAAQ,YACR3P,SACAkI,KACAkP,aAzEmB,KACnB,MACE5Q,MAAOivB,EACP/uB,OAAQgvB,EAAYjrB,OACpBA,EAAM4C,gBACNA,GACErN,EACEQ,EAASR,EAAOQ,OAAOwyC,gBACvB/mC,EAAejM,EAAOiM,eACtB3O,EAAY0C,EAAOI,UACnBgzC,EAASnnC,EAA4BwpB,EAAc,EAA1Bn4B,EAA2Co4B,EAAe,EAA3Bp4B,EACxDuiC,EAAS5zB,EAAezL,EAAOq/B,QAAUr/B,EAAOq/B,OAChDz/B,EAAYI,EAAO0yC,MACnBnB,EAAIntC,EAAa5E,GAEvB,IAAK,IAAIhB,EAAI,EAAGtG,EAAS+R,EAAO/R,OAAQsG,EAAItG,EAAQsG,GAAK,EAAG,CAC1D,MAAM6C,EAAU4I,EAAOzL,GACjBwP,EAAYnB,EAAgBrO,GAE5Bq0C,GAAgBD,EADFvxC,EAAQ2Q,kBACiBhE,EAAY,GAAKA,EACxD8kC,EAA8C,mBAApB9yC,EAAO2yC,SAA0B3yC,EAAO2yC,SAASE,GAAgBA,EAAe7yC,EAAO2yC,SACvH,IAAIN,EAAU5mC,EAAe4zB,EAASyT,EAAmB,EACrDR,EAAU7mC,EAAe,EAAI4zB,EAASyT,EAEtCC,GAAcnzC,EAAYe,KAAK2D,IAAIwuC,GACnCL,EAAUzyC,EAAOyyC,QAEE,iBAAZA,IAAkD,IAA1BA,EAAQz6C,QAAQ,OACjDy6C,EAAU/0C,WAAWsC,EAAOyyC,SAAW,IAAMzkC,GAE/C,IAAI41B,EAAan4B,EAAe,EAAIgnC,EAAUK,EAC1CnP,EAAal4B,EAAegnC,EAAUK,EAAmB,EACzDhW,EAAQ,GAAK,EAAI98B,EAAO88B,OAASn8B,KAAK2D,IAAIwuC,GAG1CnyC,KAAK2D,IAAIq/B,GAAc,OAAOA,EAAa,GAC3ChjC,KAAK2D,IAAIs/B,GAAc,OAAOA,EAAa,GAC3CjjC,KAAK2D,IAAIyuC,GAAc,OAAOA,EAAa,GAC3CpyC,KAAK2D,IAAI+tC,GAAW,OAAOA,EAAU,GACrC1xC,KAAK2D,IAAIguC,GAAW,OAAOA,EAAU,GACrC3xC,KAAK2D,IAAIw4B,GAAS,OAAOA,EAAQ,GACrC,MAAMkW,EAAiB,eAAerP,OAAgBC,OAAgBmP,iBAA0BxB,EAAEe,kBAAwBf,EAAEc,gBAAsBvV,KAIlJ,GAHiB1L,GAAapxB,EAAQqB,GAC7BnI,MAAM4D,UAAYk2C,EAC3B3xC,EAAQnI,MAAMq5C,OAAmD,EAAzC5xC,KAAK2D,IAAI3D,KAAKgpC,MAAMmJ,IACxC9yC,EAAOkxB,aAAc,CAEvB,IAAI+hB,EAAiBxnC,EAAepK,EAAQ3I,cAAc,6BAA+B2I,EAAQ3I,cAAc,4BAC3Gw6C,EAAgBznC,EAAepK,EAAQ3I,cAAc,8BAAgC2I,EAAQ3I,cAAc,+BAC1Gu6C,IACHA,EAAiBnhB,GAAa,YAAazwB,EAASoK,EAAe,OAAS,QAEzEynC,IACHA,EAAgBphB,GAAa,YAAazwB,EAASoK,EAAe,QAAU,WAE1EwnC,IAAgBA,EAAe/5C,MAAM6kC,QAAU+U,EAAmB,EAAIA,EAAmB,GACzFI,IAAeA,EAAch6C,MAAM6kC,SAAW+U,EAAmB,GAAKA,EAAmB,EAC/F,CACF,GAgBAthC,cAdoBzR,IACMP,EAAOyK,OAAOjN,IAAIqE,GAAWD,EAAoBC,IACzDpJ,QAAQoE,IACxBA,EAAGnD,MAAM+tB,mBAAqB,GAAGlnB,MACjC1D,EAAG1D,iBAAiB,gHAAgHV,QAAQk5B,IAC1IA,EAASj4B,MAAM+tB,mBAAqB,GAAGlnB,WAU3C6wB,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrB5f,qBAAqB,KAG3B,EAEA,UAAwBvR,OACtBA,EAAMsrB,aACNA,EAAYpjB,GACZA,IAEAojB,EAAa,CACXqoB,eAAgB,CACdC,cAAe,EACfC,mBAAmB,EACnBC,mBAAoB,EACpB1iB,aAAa,EACb9b,KAAM,CACJlV,UAAW,CAAC,EAAG,EAAG,GAClBy/B,OAAQ,CAAC,EAAG,EAAG,GACftB,QAAS,EACTjB,MAAO,GAETpoB,KAAM,CACJ9U,UAAW,CAAC,EAAG,EAAG,GAClBy/B,OAAQ,CAAC,EAAG,EAAG,GACftB,QAAS,EACTjB,MAAO,MAIb,MAAMyW,EAAoBhqB,GACH,iBAAVA,EAA2BA,EAC/B,GAAGA,MAiGZmH,GAAW,CACTvhB,OAAQ,WACR3P,SACAkI,KACAkP,aAnGmB,KACnB,MAAM3M,OACJA,EAAM/J,UACNA,EAAS2M,gBACTA,GACErN,EACEQ,EAASR,EAAOQ,OAAOmzC,gBAE3BG,mBAAoBrgC,GAClBjT,EACEwzC,EAAmBh0C,EAAOQ,OAAO6N,eACjCukC,EAAYhuC,EAAa5E,GAC/B,GAAIg0C,EAAkB,CACpB,MAAMC,EAAS5mC,EAAgB,GAAK,EAAIrN,EAAOQ,OAAO+M,oBAAsB,EAC5E7M,EAAUhH,MAAM4D,UAAY,yBAAyB22C,OACvD,CACA,IAAK,IAAIj1C,EAAI,EAAGA,EAAIyL,EAAO/R,OAAQsG,GAAK,EAAG,CACzC,MAAM6C,EAAU4I,EAAOzL,GACjB8T,EAAgBjR,EAAQX,SACxBA,EAAWC,KAAKE,IAAIF,KAAKC,IAAIS,EAAQX,UAAWV,EAAOozC,eAAgBpzC,EAAOozC,eACpF,IAAIrgC,EAAmBrS,EAClB8yC,IACHzgC,EAAmBpS,KAAKE,IAAIF,KAAKC,IAAIS,EAAQ0R,kBAAmB/S,EAAOozC,eAAgBpzC,EAAOozC,gBAEhG,MAAM3gB,EAASpxB,EAAQ2Q,kBACjBwG,EAAI,CAAChZ,EAAOQ,OAAO8N,SAAW2kB,EAASjzB,EAAOI,WAAa6yB,EAAQ,EAAG,GACtE8e,EAAI,CAAC,EAAG,EAAG,GACjB,IAAImC,GAAS,EACRl0C,EAAOiM,iBACV+M,EAAE,GAAKA,EAAE,GACTA,EAAE,GAAK,GAET,IAAIzP,EAAO,CACTnJ,UAAW,CAAC,EAAG,EAAG,GAClBy/B,OAAQ,CAAC,EAAG,EAAG,GACfvC,MAAO,EACPiB,QAAS,GAEPr9B,EAAW,GACbqI,EAAO/I,EAAO0U,KACdg/B,GAAS,GACAhzC,EAAW,IACpBqI,EAAO/I,EAAO8U,KACd4+B,GAAS,GAGXl7B,EAAEvgB,QAAQ,CAACsxB,EAAO5gB,KAChB6P,EAAE7P,GAAS,QAAQ4gB,UAAcgqB,EAAkBxqC,EAAKnJ,UAAU+I,SAAahI,KAAK2D,IAAI5D,EAAWuS,SAGrGs+B,EAAEt5C,QAAQ,CAACsxB,EAAO5gB,KAChB,IAAIkR,EAAM9Q,EAAKs2B,OAAO12B,GAAShI,KAAK2D,IAAI5D,EAAWuS,GACnDs+B,EAAE5oC,GAASkR,IAEbxY,EAAQnI,MAAMq5C,QAAU5xC,KAAK2D,IAAI3D,KAAKgpC,MAAMr3B,IAAkBrI,EAAO/R,OACrE,MAAMy7C,EAAkBn7B,EAAErb,KAAK,MACzBy2C,EAAe,WAAWxB,EAAUb,EAAE,mBAAmBa,EAAUb,EAAE,mBAAmBa,EAAUb,EAAE,UACpGsC,EAAc9gC,EAAmB,EAAI,SAAS,GAAK,EAAIhK,EAAK+zB,OAAS/pB,EAAmBE,KAAgB,SAAS,GAAK,EAAIlK,EAAK+zB,OAAS/pB,EAAmBE,KAC3J6gC,EAAgB/gC,EAAmB,EAAI,GAAK,EAAIhK,EAAKg1B,SAAWhrB,EAAmBE,EAAa,GAAK,EAAIlK,EAAKg1B,SAAWhrB,EAAmBE,EAC5InW,EAAY,eAAe62C,MAAoBC,KAAgBC,IAGrE,GAAIH,GAAU3qC,EAAKkoC,SAAWyC,EAAQ,CACpC,IAAIviB,EAAW9vB,EAAQ3I,cAAc,wBAIrC,IAHKy4B,GAAYpoB,EAAKkoC,SACpB9f,EAAWW,GAAa,WAAYzwB,IAElC8vB,EAAU,CACZ,MAAM4iB,EAAgB/zC,EAAOqzC,kBAAoB3yC,GAAY,EAAIV,EAAOozC,eAAiB1yC,EACzFywB,EAASj4B,MAAM6kC,QAAUp9B,KAAKE,IAAIF,KAAKC,IAAID,KAAK2D,IAAIyvC,GAAgB,GAAI,EAC1E,CACF,CACA,MAAM31B,EAAWgT,GAAapxB,EAAQqB,GACtC+c,EAASllB,MAAM4D,UAAYA,EAC3BshB,EAASllB,MAAM6kC,QAAU+V,EACrB/qC,EAAKnP,SACPwkB,EAASllB,MAAM04C,gBAAkB7oC,EAAKnP,OAE1C,GAsBA4X,cApBoBzR,IACpB,MAAM0xB,EAAoBjyB,EAAOyK,OAAOjN,IAAIqE,GAAWD,EAAoBC,IAC3EowB,EAAkBx5B,QAAQoE,IACxBA,EAAGnD,MAAM+tB,mBAAqB,GAAGlnB,MACjC1D,EAAG1D,iBAAiB,wBAAwBV,QAAQk5B,IAClDA,EAASj4B,MAAM+tB,mBAAqB,GAAGlnB,UAG3CyxB,GAA2B,CACzBhyB,SACAO,WACA0xB,oBACAC,WAAW,KASbd,YAAa,IAAMpxB,EAAOQ,OAAOmzC,eAAeviB,YAChDD,gBAAiB,KAAM,CACrB5f,qBAAqB,EACrB2F,kBAAmBlX,EAAOQ,OAAO8N,WAGvC,EAEA,UAAqBtO,OACnBA,EAAMsrB,aACNA,EAAYpjB,GACZA,IAEAojB,EAAa,CACXkpB,YAAa,CACX9iB,cAAc,EACdmO,QAAQ,EACR4U,eAAgB,EAChBC,eAAgB,KA6FpBxjB,GAAW,CACTvhB,OAAQ,QACR3P,SACAkI,KACAkP,aA9FmB,KACnB,MAAM3M,OACJA,EAAMQ,YACNA,EACA0B,aAAcC,GACZ5M,EACEQ,EAASR,EAAOQ,OAAOg0C,aACvBr3B,eACJA,EAAcmC,UACdA,GACEtf,EAAOkd,gBACL/F,EAAmBvK,GAAO5M,EAAOI,UAAYJ,EAAOI,UAC1D,IAAK,IAAIpB,EAAI,EAAGA,EAAIyL,EAAO/R,OAAQsG,GAAK,EAAG,CACzC,MAAM6C,EAAU4I,EAAOzL,GACjB8T,EAAgBjR,EAAQX,SACxBA,EAAWC,KAAKE,IAAIF,KAAKC,IAAI0R,GAAgB,GAAI,GACvD,IAAImgB,EAASpxB,EAAQ2Q,kBACjBxS,EAAOQ,OAAO6N,iBAAmBrO,EAAOQ,OAAO8N,UACjDtO,EAAOU,UAAUhH,MAAM4D,UAAY,cAAc0C,EAAO+S,qBAEtD/S,EAAOQ,OAAO6N,gBAAkBrO,EAAOQ,OAAO8N,UAChD2kB,GAAUxoB,EAAO,GAAG+H,mBAEtB,IAAImiC,EAAK30C,EAAOQ,OAAO8N,SAAW2kB,EAASjzB,EAAOI,WAAa6yB,EAC3D2hB,EAAK,EACT,MAAMC,GAAM,IAAM1zC,KAAK2D,IAAI5D,GAC3B,IAAIo8B,EAAQ,EACRuC,GAAUr/B,EAAOi0C,eAAiBvzC,EAClC4zC,EAAQt0C,EAAOk0C,eAAsC,IAArBvzC,KAAK2D,IAAI5D,GAC7C,MAAMwP,EAAa1Q,EAAO+M,SAAW/M,EAAOQ,OAAOuM,QAAQC,QAAUhN,EAAO+M,QAAQzB,KAAOtM,EAAIA,EACzF+1C,GAAiBrkC,IAAezF,GAAeyF,IAAezF,EAAc,IAAM/J,EAAW,GAAKA,EAAW,IAAMoe,GAAatf,EAAOQ,OAAO8N,UAAY6I,EAAmBgG,EAC7K63B,GAAiBtkC,IAAezF,GAAeyF,IAAezF,EAAc,IAAM/J,EAAW,GAAKA,GAAY,IAAMoe,GAAatf,EAAOQ,OAAO8N,UAAY6I,EAAmBgG,EACpL,GAAI43B,GAAiBC,EAAe,CAClC,MAAMC,GAAe,EAAI9zC,KAAK2D,KAAK3D,KAAK2D,IAAI5D,GAAY,IAAO,MAAS,GACxE2+B,IAAW,GAAK3+B,EAAW+zC,EAC3B3X,IAAU,GAAM2X,EAChBH,GAAS,GAAKG,EACdL,GAASp0C,EAAOq/B,QAAU7/B,EAAOiM,gBAAkB,GAAK,GAAKgpC,EAAc9zC,KAAK2D,IAAI5D,GAA/E,GACP,CAUA,GAPEyzC,EAFEzzC,EAAW,EAER,QAAQyzC,OAAQ/nC,EAAM,IAAM,QAAQkoC,EAAQ3zC,KAAK2D,IAAI5D,QACjDA,EAAW,EAEf,QAAQyzC,OAAQ/nC,EAAM,IAAM,SAASkoC,EAAQ3zC,KAAK2D,IAAI5D,QAEtD,GAAGyzC,OAEL30C,EAAOiM,eAAgB,CAC1B,MAAMipC,EAAQN,EACdA,EAAKD,EACLA,EAAKO,CACP,CACA,MAAMb,EAAcnzC,EAAW,EAAI,IAAG,GAAK,EAAIo8B,GAASp8B,GAAa,IAAG,GAAK,EAAIo8B,GAASp8B,GAGpF5D,EAAY,yBACJq3C,MAAOC,MAAOC,yBAClBr0C,EAAOq/B,OAASjzB,GAAOizB,EAASA,EAAS,wBAC3CwU,aAIR,GAAI7zC,EAAOkxB,aAAc,CAEvB,IAAIC,EAAW9vB,EAAQ3I,cAAc,wBAChCy4B,IACHA,EAAWW,GAAa,QAASzwB,IAE/B8vB,IAAUA,EAASj4B,MAAM6kC,QAAUp9B,KAAKE,IAAIF,KAAKC,KAAKD,KAAK2D,IAAI5D,GAAY,IAAO,GAAK,GAAI,GACjG,CACAW,EAAQnI,MAAMq5C,QAAU5xC,KAAK2D,IAAI3D,KAAKgpC,MAAMr3B,IAAkBrI,EAAO/R,OACpDk5B,GAAapxB,EAAQqB,GAC7BnI,MAAM4D,UAAYA,CAC7B,GAqBA0U,cAnBoBzR,IACpB,MAAM0xB,EAAoBjyB,EAAOyK,OAAOjN,IAAIqE,GAAWD,EAAoBC,IAC3EowB,EAAkBx5B,QAAQoE,IACxBA,EAAGnD,MAAM+tB,mBAAqB,GAAGlnB,MACjC1D,EAAG1D,iBAAiB,wBAAwBV,QAAQk5B,IAClDA,EAASj4B,MAAM+tB,mBAAqB,GAAGlnB,UAG3CyxB,GAA2B,CACzBhyB,SACAO,WACA0xB,uBASFb,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrB5N,gBAAgB,EAChBhS,qBAAqB,EACrB2K,qBAAsBlc,EAAOQ,OAAOg0C,YAAY3U,OAAS,EAAI,EAC7DxxB,gBAAgB,EAChB6I,kBAAmBlX,EAAOQ,OAAO8N,WAGvC,GAiBA0c,GAAOiD,IAAI9C,IAGX,MAAMgqB,GAAa,CAAC,eAAgB,eAAgB,mBAAoB,UAAW,OAAQ,aAAc,iBAAkB,wBAAyB,oBAAqB,eAAgB,SAAU,UAAW,uBAAwB,iBAAkB,SAAU,oBAAqB,WAAY,SAAU,UAAW,iCAAkC,YAAa,MAAO,sBAAuB,sBAAuB,YAAa,cAAe,iBAAkB,mBAAoB,UAAW,cAAe,kBAAmB,gBAAiB,iBAAkB,0BAA2B,QAAS,kBAAmB,sBAAuB,sBAAuB,kBAAmB,wBAAyB,sBAAuB,qBAAsB,sBAAuB,4BAA6B,mBAAoB,iBAAkB,eAAgB,aAAc,aAAc,gBAAiB,eAAgB,cAAe,kBAAmB,eAAgB,gBAAiB,iBAAkB,aAAc,2BAA4B,2BAA4B,gCAAiC,sBAAuB,oBAAqB,cAAe,mBAAoB,uBAAwB,cAAe,gBAAiB,2BAA4B,uBAAwB,QAAS,uBAAwB,qBAAsB,sBAAuB,UAAW,kBAAmB,kBAAmB,gBAAiB,aAAc,iBAAkB,oBAAqB,mBAAoB,yBAA0B,aAAc,mBAAoB,oBAAqB,yBAA0B,iBAAkB,iBAAkB,kBAAmB,eAAgB,qBAAsB,sBAAuB,qBAAsB,WAAY,iBAAkB,uBAEtvD,OAAQ,YAAa,cAAe,kBAAmB,aAAc,aAAc,aAAc,iBAAkB,cAAe,iBAAkB,UAAW,WAAY,aAAc,cAAe,cAAe,WAAY,aAAc,UAAW,UAAW,OAAQ,WAE/Q,SAASC,GAAS/2C,GAChB,MAAoB,iBAANA,GAAwB,OAANA,GAAcA,EAAEtG,aAAkE,WAAnDC,OAAOsG,UAAUN,SAASO,KAAKF,GAAGG,MAAM,GAAI,KAAoBH,EAAEqB,UACnI,CACA,SAAS21C,GAAOn9C,EAAQC,GACtB,MAAMC,EAAW,CAAC,YAAa,cAAe,aAC9CJ,OAAOK,KAAKF,GAAKG,OAAOC,GAAOH,EAASI,QAAQD,GAAO,GAAGE,QAAQF,SACrC,IAAhBL,EAAOK,GAAsBL,EAAOK,GAAOJ,EAAII,GAAc68C,GAASj9C,EAAII,KAAS68C,GAASl9C,EAAOK,KAASP,OAAOK,KAAKF,EAAII,IAAMG,OAAS,EAChJP,EAAII,GAAKmH,WAAYxH,EAAOK,GAAOJ,EAAII,GAAU88C,GAAOn9C,EAAOK,GAAMJ,EAAII,IAE7EL,EAAOK,GAAOJ,EAAII,IAGxB,CAUA,SAAS+8C,GAAWC,EAAW,IAC7B,OAAOA,EAAS73C,QAAQ,UAAW83C,GAAKA,EAAEroB,cAAczvB,QAAQ,IAAK,IACvE,CA8KA,MAAM+3C,GAAcp7B,IAClB,GAAInc,WAAWmc,KAASzS,OAAOyS,GAAM,OAAOzS,OAAOyS,GACnD,GAAY,SAARA,EAAgB,OAAO,EAC3B,GAAY,KAARA,EAAY,OAAO,EACvB,GAAY,UAARA,EAAiB,OAAO,EAC5B,GAAY,SAARA,EAAgB,OAAO,KAC3B,GAAY,cAARA,EAAJ,CACA,GAAmB,iBAARA,GAAoBA,EAAI7S,SAAS,MAAQ6S,EAAI7S,SAAS,MAAQ6S,EAAI7S,SAAS,KAAM,CAC1F,IAAI3C,EACJ,IACEA,EAAI6wC,KAAKC,MAAMt7B,EACjB,CAAE,MAAO3X,GACPmC,EAAIwV,CACN,CACA,OAAOxV,CACT,CACA,OAAOwV,CAVkC,GAYrCu7B,GAAoB,CAAC,OAAQ,WAAY,aAAc,eAAgB,mBAAoB,kBAAmB,cAAe,cAAe,cAAe,YAAa,OAAQ,kBAAmB,UAAW,WAAY,aAAc,aAAc,aAAc,WAAY,YAAa,SAAU,UAAW,QACxT,SAASC,GAAU7zC,EAAS8zC,EAAUC,GACpC,MAAMv1C,EAAS,CAAC,EACVgrB,EAAe,CAAC,EACtB6pB,GAAO70C,EAAQ8lB,IACf,MAAM0vB,EAAkB,IAAIb,GAAY,MAClCc,EAAgBD,EAAgBx4C,IAAIjF,GAAOA,EAAImF,QAAQ,IAAK,KAGlEs4C,EAAgBv9C,QAAQy9C,IACtBA,EAAYA,EAAUx4C,QAAQ,IAAK,SACD,IAAvBsE,EAAQk0C,KACjB1qB,EAAa0qB,GAAal0C,EAAQk0C,MAKtC,MAAMC,EAAY,IAAIn0C,EAAQ2tB,YAoE9B,MAnEwB,iBAAbmmB,QAA8C,IAAdC,GACzCI,EAAUh0C,KAAK,CACbi0C,KAAMN,EACN/rB,MAAOqrB,GAASW,GAAa,IACxBA,GACDA,IAGRI,EAAU19C,QAAQ49C,IAChB,MAAMC,EAAcV,GAAkB7gC,KAAKwhC,GAAUF,EAAKD,KAAKI,WAAW,GAAGD,OAC7E,GAAID,EAAa,CACf,MAAMG,EAAgBnB,GAAWgB,GAC3BI,EAAapB,GAAWe,EAAKD,KAAK75C,MAAM,GAAG+5C,MAAgB,SACtB,IAAhC9qB,EAAairB,KACtBjrB,EAAairB,GAAiB,CAAC,IAEG,IAAhCjrB,EAAairB,KACfjrB,EAAairB,GAAiB,CAC5BzpC,SAAS,KAGuB,IAAhCwe,EAAairB,KACfjrB,EAAairB,GAAiB,CAC5BzpC,SAAS,IAGbwe,EAAairB,GAAeC,GAAcjB,GAAYY,EAAKtsB,MAC7D,KAAO,CACL,MAAMqsB,EAAOd,GAAWe,EAAKD,MAC7B,IAAKH,EAAczuC,SAAS4uC,GAAO,OACnC,MAAMrsB,EAAQ0rB,GAAYY,EAAKtsB,OAC3ByB,EAAa4qB,IAASR,GAAkBpuC,SAAS6uC,EAAKD,QAAUhB,GAASrrB,IACvEyB,EAAa4qB,GAAMr+C,cAAgBC,SACrCwzB,EAAa4qB,GAAQ,CAAC,GAExB5qB,EAAa4qB,GAAMppC,UAAY+c,GAE/ByB,EAAa4qB,GAAQrsB,CAEzB,IAEFsrB,GAAO70C,EAAQgrB,GACXhrB,EAAOokB,WACTpkB,EAAOokB,WAAa,CAClBE,OAAQ,sBACRD,OAAQ,0BACkB,IAAtBrkB,EAAOokB,WAAsBpkB,EAAOokB,WAAa,CAAC,IAEzB,IAAtBpkB,EAAOokB,mBACTpkB,EAAOokB,WAEZpkB,EAAO09B,UACT19B,EAAO09B,UAAY,CACjBrhC,GAAI,wBACqB,IAArB2D,EAAO09B,UAAqB19B,EAAO09B,UAAY,CAAC,IAExB,IAArB19B,EAAO09B,kBACT19B,EAAO09B,UAEZ19B,EAAO25B,WACT35B,EAAO25B,WAAa,CAClBt9B,GAAI,yBACsB,IAAtB2D,EAAO25B,WAAsB35B,EAAO25B,WAAa,CAAC,IAEzB,IAAtB35B,EAAO25B,mBACT35B,EAAO25B,WAET,CACL35B,SACAgrB,eAEJ,CAiBA,MAAMmrB,GAAY,w7eAIlB,MAAMC,GAAkC,oBAAXz6C,QAAiD,oBAAhBwC,YAD9D,QAC+GA,YACzGk4C,GAAW,CAAC/0C,EAAYg1C,KAC5B,GAA6B,oBAAlBC,eAAiCj1C,EAAWk1C,mBAAoB,CACzE,MAAMC,EAAa,IAAIF,cACvBE,EAAWC,YAAYJ,GACvBh1C,EAAWk1C,mBAAqB,CAACC,EACnC,KAAO,CACL,MAAMv9C,EAAQgB,SAASnB,cAAc,SACrCG,EAAMy9C,IAAM,aACZz9C,EAAMyjC,YAAc2Z,EACpBh1C,EAAW+3B,YAAYngC,EACzB,GAEF,MAAM09C,WAAwBR,GAC5B,WAAA7+C,GACEs/C,QACAj8C,KAAKk8C,aAAa,CAChBC,KAAM,QAEV,CACA,SAAAC,GACE,MAAO,CAACb,MAEJv7C,KAAKq8C,cAAgB30C,MAAMC,QAAQ3H,KAAKq8C,cAAgBr8C,KAAKq8C,aAAe,IAAK95C,KAAK,KAC5F,CACA,QAAA+5C,GACE,OAAOt8C,KAAKu8C,kBAAoB,EAClC,CACA,cAAAC,GACE,MAAMC,EAAmBz8C,KAAKkyB,YAAc,EAEtCwqB,EAAoB,IAAI18C,KAAKjC,iBAAiB,mBAAmBqE,IAAIsG,GAClEqI,SAASrI,EAAM0S,aAAa,QAAQja,MAAM,UAAU,GAAI,KAGjE,GADAnB,KAAKkyB,WAAawqB,EAAkBp/C,OAASyI,KAAKC,OAAO02C,GAAqB,EAAI,EAC7E18C,KAAK28C,SACV,GAAI38C,KAAKkyB,WAAauqB,EACpB,IAAK,IAAI74C,EAAI64C,EAAkB74C,EAAI5D,KAAKkyB,WAAYtuB,GAAK,EAAG,CAC1D,MAAM6C,EAAUnH,SAASnB,cAAc,gBACvCsI,EAAQlI,aAAa,OAAQ,eAAeqF,EAAI,KAChD,MAAMg5C,EAASt9C,SAASnB,cAAc,QACtCy+C,EAAOr+C,aAAa,OAAQ,SAASqF,EAAI,KACzC6C,EAAQg4B,YAAYme,GACpB58C,KAAK0G,WAAW5I,cAAc,mBAAmB2gC,YAAYh4B,EAC/D,MACK,GAAIzG,KAAKkyB,WAAauqB,EAAkB,CAC7C,MAAMptC,EAASrP,KAAK4E,OAAOyK,OAC3B,IAAK,IAAIzL,EAAIyL,EAAO/R,OAAS,EAAGsG,GAAK,EAAGA,GAAK,EACvCA,EAAI5D,KAAKkyB,YACX7iB,EAAOzL,GAAG8K,QAGhB,CACF,CACA,MAAA4zB,GACE,GAAItiC,KAAK28C,SAAU,OACnB38C,KAAKw8C,iBAGL,IAAIK,EAAc78C,KAAKo8C,YACnBp8C,KAAKkyB,WAAa,IACpB2qB,EAAcA,EAAYv6C,QAAQ,8BAA+B,OAE/Du6C,EAAYv/C,QACdm+C,GAASz7C,KAAK0G,WAAYm2C,GAE5B78C,KAAKs8C,WAAWj/C,QAAQmuB,IAEtB,GADmBxrB,KAAK0G,WAAW5I,cAAc,cAAc0tB,OAC/C,OAChB,MAAMsxB,EAASx9C,SAASnB,cAAc,QACtC2+C,EAAOf,IAAM,aACbe,EAAO/9C,KAAOysB,EACdxrB,KAAK0G,WAAW+3B,YAAYqe,KAG9B,MAAMr7C,EAAKnC,SAASnB,cAAc,OAClCsD,EAAG+F,UAAUC,IAAI,UACjBhG,EAAGquC,KAAO,YAGVjmC,EAAapI,EAAI,mIAIbiG,MAAMwI,KAAK,CACf5S,OAAQ0C,KAAKkyB,aACZ9vB,IAAI,CAAC+N,EAAGpC,IAAU,6CACiBA,oCACZA,iDAEnBxL,KAAK,sEAnZd,SAAyB6C,EAAS,CAAC,GACjC,OAAOA,EAAOokB,iBAAkD,IAA7BpkB,EAAOokB,WAAWC,aAA8D,IAA7BrkB,EAAOokB,WAAWE,MAC1G,CAoZMqzB,CAAgB/8C,KAAKowB,cAAgB,iJAGnC,aAtZR,SAAyBhrB,EAAS,CAAC,GACjC,OAAOA,EAAO25B,iBAA8C,IAAzB35B,EAAO25B,WAAWt9B,EACvD,CAqZMu7C,CAAgBh9C,KAAKowB,cAAgB,4EAEnC,aAtZR,SAAwBhrB,EAAS,CAAC,GAChC,OAAOA,EAAO09B,gBAA4C,IAAxB19B,EAAO09B,UAAUrhC,EACrD,CAqZMw7C,CAAej9C,KAAKowB,cAAgB,0EAElC,YAEJpwB,KAAK0G,WAAW+3B,YAAYh9B,GAC5BzB,KAAK28C,UAAW,CAClB,CACA,UAAAO,GACE,GAAIl9C,KAAK4E,QAAU5E,KAAK4E,OAAOyW,YAAa,OAC5C,MACEjW,OAAQ+qB,EAAYC,aACpBA,GACEqqB,GAAUz6C,MACdA,KAAKmwB,aAAeA,EACpBnwB,KAAKowB,aAAeA,SACbpwB,KAAKmwB,aAAahF,KACzBnrB,KAAKsiC,SAGLtiC,KAAK4E,OAAS,IAAIgrB,GAAO5vB,KAAK0G,WAAW5I,cAAc,WAAY,IAC7DqyB,EAAaxe,QAAU,CAAC,EAAI,CAC9ByhB,UAAU,MAETjD,EACH1M,kBAAmB,YACnB7V,MAAO,CAACotC,KAASt3C,KACF,mBAATs3C,GACFh7C,KAAKw8C,iBAEP,MAAMnsB,EAAYF,EAAa5E,aAAe,GAAG4E,EAAa5E,eAAeyvB,EAAK9uC,gBAAkB8uC,EAAK9uC,cACnGoB,EAAQ,IAAIvN,YAAYswB,EAAW,CACvCxI,OAAQnkB,EACRkkB,QAAkB,eAATozB,EACTh0B,YAAY,IAEdhnB,KAAK+nB,cAAcza,KAGzB,CACA,iBAAA6vC,GACMn9C,KAAK4E,QAAU5E,KAAK4E,OAAOyW,aAAerb,KAAKknB,QAAUlnB,KAAK8O,QAAQ,iBAAmB9O,KAAK8O,QAAQ,gBAAgB4S,oBAGxG,IAAd1hB,KAAKmrB,MAAgD,UAA9BnrB,KAAKob,aAAa,SAG7Cpb,KAAKk9C,YACP,CACA,oBAAAE,GACMp9C,KAAKknB,QAAUlnB,KAAK8O,QAAQ,iBAAmB9O,KAAK8O,QAAQ,gBAAgB4S,mBAG5E1hB,KAAK4E,QAAU5E,KAAK4E,OAAOytB,SAC7BryB,KAAK4E,OAAOytB,SAEhB,CACA,wBAAAgrB,CAAyB3C,EAAUC,GACjC,MACEv1C,OAAQ+qB,EAAYC,aACpBA,GACEqqB,GAAUz6C,KAAM06C,EAAUC,GAC9B36C,KAAKowB,aAAeA,EACpBpwB,KAAKmwB,aAAeA,EAChBnwB,KAAK4E,QAAU5E,KAAK4E,OAAOQ,OAAOs1C,KAAcC,GA/cxD,UAAsB/1C,OACpBA,EAAMyK,OACNA,EAAM+gB,aACNA,EAAYktB,cACZA,EAAa7zB,OACbA,EAAMC,OACNA,EAAM6zB,YACNA,EAAWC,aACXA,IAEA,MAAMC,EAAeH,EAAcpgD,OAAOC,GAAe,aAARA,GAA8B,cAARA,GAA+B,iBAARA,IAE5FiI,OAAQs4C,EAAa3e,WACrBA,EAAUvV,WACVA,EAAUsZ,UACVA,EAASnxB,QACTA,EAAO8gC,OACPA,GACE7tC,EACJ,IAAI+4C,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAZ,EAAclxC,SAAS,WAAagkB,EAAaqiB,QAAUriB,EAAaqiB,OAAO7tC,SAAWwrB,EAAaqiB,OAAO7tC,OAAOwI,WAAaswC,EAAcjL,UAAYiL,EAAcjL,OAAO7tC,QAAU84C,EAAcjL,OAAO7tC,OAAOwI,aACzNuwC,GAAiB,GAEfL,EAAclxC,SAAS,eAAiBgkB,EAAanO,YAAcmO,EAAanO,WAAWC,SAAWw7B,EAAcz7B,aAAey7B,EAAcz7B,WAAWC,UAC9J07B,GAAqB,GAEnBN,EAAclxC,SAAS,eAAiBgkB,EAAa2O,aAAe3O,EAAa2O,WAAWt9B,IAAM+7C,KAAkBE,EAAc3e,aAA2C,IAA7B2e,EAAc3e,aAAyBA,IAAeA,EAAWt9B,KACnNo8C,GAAqB,GAEnBP,EAAclxC,SAAS,cAAgBgkB,EAAa0S,YAAc1S,EAAa0S,UAAUrhC,IAAM87C,KAAiBG,EAAc5a,YAAyC,IAA5B4a,EAAc5a,YAAwBA,IAAcA,EAAUrhC,KAC3Mq8C,GAAoB,GAElBR,EAAclxC,SAAS,eAAiBgkB,EAAa5G,aAAe4G,EAAa5G,WAAWE,QAAUA,KAAY0G,EAAa5G,WAAWC,QAAUA,KAAYi0B,EAAcl0B,aAA2C,IAA7Bk0B,EAAcl0B,aAAyBA,IAAeA,EAAWE,SAAWF,EAAWC,SACrRs0B,GAAqB,GAEvB,MAAMI,EAAgBluB,IACfrrB,EAAOqrB,KACZrrB,EAAOqrB,GAAKoC,UACA,eAARpC,GACErrB,EAAOmK,YACTnK,EAAOqrB,GAAKvG,OAAOhb,SACnB9J,EAAOqrB,GAAKxG,OAAO/a,UAErBgvC,EAAcztB,GAAKvG,YAAStlB,EAC5Bs5C,EAAcztB,GAAKxG,YAASrlB,EAC5BQ,EAAOqrB,GAAKvG,YAAStlB,EACrBQ,EAAOqrB,GAAKxG,YAASrlB,IAEjBQ,EAAOmK,WACTnK,EAAOqrB,GAAKxuB,GAAGiN,SAEjBgvC,EAAcztB,GAAKxuB,QAAK2C,EACxBQ,EAAOqrB,GAAKxuB,QAAK2C,KAGjBk5C,EAAclxC,SAAS,SAAWxH,EAAOmK,YACvC2uC,EAAcntC,OAAS6f,EAAa7f,KACtCytC,GAAkB,GACRN,EAAcntC,MAAQ6f,EAAa7f,KAC7C0tC,GAAiB,EAEjBC,GAAiB,GAGrBT,EAAapgD,QAAQF,IACnB,GAAI68C,GAAS0D,EAAcvgD,KAAS68C,GAAS5pB,EAAajzB,IACxDP,OAAOqU,OAAOysC,EAAcvgD,GAAMizB,EAAajzB,IAClC,eAARA,GAAgC,eAARA,GAAgC,cAARA,KAAwB,YAAaizB,EAAajzB,KAASizB,EAAajzB,GAAKyU,SAChIusC,EAAchhD,OAEX,CACL,MAAMihD,EAAWhuB,EAAajzB,IACZ,IAAbihD,IAAkC,IAAbA,GAAgC,eAARjhD,GAAgC,eAARA,GAAgC,cAARA,EAKhGugD,EAAcvgD,GAAOizB,EAAajzB,IAJjB,IAAbihD,GACFD,EAAchhD,EAKpB,IAEEsgD,EAAarxC,SAAS,gBAAkBwxC,GAAsBh5C,EAAOqd,YAAcrd,EAAOqd,WAAWC,SAAWw7B,EAAcz7B,YAAcy7B,EAAcz7B,WAAWC,UACvKtd,EAAOqd,WAAWC,QAAUw7B,EAAcz7B,WAAWC,SAEnDo7B,EAAclxC,SAAS,aAAeiD,GAAUsC,GAAW+rC,EAAc/rC,QAAQC,SACnFD,EAAQtC,OAASA,EACjBsC,EAAQlB,QAAO,IACN6sC,EAAclxC,SAAS,YAAcuF,GAAW+rC,EAAc/rC,QAAQC,UAC3EvC,IAAQsC,EAAQtC,OAASA,GAC7BsC,EAAQlB,QAAO,IAEb6sC,EAAclxC,SAAS,aAAeiD,GAAUquC,EAAcntC,OAChE2tC,GAAiB,GAEfP,GACkBlL,EAAOtnB,QACVsnB,EAAOhiC,QAAO,GAE7BmtC,IACFh5C,EAAOqd,WAAWC,QAAUw7B,EAAcz7B,WAAWC,SAEnD27B,KACEj5C,EAAOmK,WAAeyuC,GAAwC,iBAAjBA,KAC/CA,EAAel+C,SAASnB,cAAc,QACzBqJ,UAAUC,IAAI,qBAC3B+1C,EAAa1N,KAAKroC,IAAI,cACtB7C,EAAOnD,GAAGg9B,YAAY+e,IAEpBA,IAAcE,EAAc3e,WAAWt9B,GAAK+7C,GAChDze,EAAW5T,OACX4T,EAAWuD,SACXvD,EAAWtuB,UAETqtC,KACEl5C,EAAOmK,WAAewuC,GAAsC,iBAAhBA,KAC9CA,EAAcj+C,SAASnB,cAAc,QACzBqJ,UAAUC,IAAI,oBAC1B81C,EAAYzN,KAAKroC,IAAI,aACrB7C,EAAOnD,GAAGg9B,YAAY8e,IAEpBA,IAAaG,EAAc5a,UAAUrhC,GAAK87C,GAC9Cza,EAAU3X,OACV2X,EAAUpyB,aACVoyB,EAAU9mB,gBAER+hC,IACEn5C,EAAOmK,YACJ0a,GAA4B,iBAAXA,KACpBA,EAASnqB,SAASnB,cAAc,QACzBqJ,UAAUC,IAAI,sBACrBoC,EAAa4f,EAAQ7kB,EAAO4kB,WAAWsL,UACvCrL,EAAOqmB,KAAKroC,IAAI,eAChB7C,EAAOnD,GAAGg9B,YAAYhV,IAEnBC,GAA4B,iBAAXA,KACpBA,EAASpqB,SAASnB,cAAc,QACzBqJ,UAAUC,IAAI,sBACrBoC,EAAa6f,EAAQ9kB,EAAO4kB,WAAWsL,UACvCpL,EAAOomB,KAAKroC,IAAI,eAChB7C,EAAOnD,GAAGg9B,YAAY/U,KAGtBD,IAAQi0B,EAAcl0B,WAAWC,OAASA,GAC1CC,IAAQg0B,EAAcl0B,WAAWE,OAASA,GAC9CF,EAAW2B,OACX3B,EAAW/Y,UAET6sC,EAAclxC,SAAS,oBACzBxH,EAAO4Y,eAAiB4S,EAAa5S,gBAEnC8/B,EAAclxC,SAAS,oBACzBxH,EAAO6Y,eAAiB2S,EAAa3S,gBAEnC6/B,EAAclxC,SAAS,cACzBxH,EAAOqpB,gBAAgBmC,EAAanT,WAAW,IAE7C+gC,GAAmBE,IACrBt5C,EAAOwd,eAEL67B,GAAkBC,IACpBt5C,EAAOsb,aAETtb,EAAO6L,QACT,CAwSI4tC,CAAa,CACXz5C,OAAQ5E,KAAK4E,OACbwrB,aAAcpwB,KAAKowB,aACnBktB,cAAe,CAACpD,GAAWQ,OACV,eAAbA,GAA6BtqB,EAAasqB,GAAY,CACxDhxB,OAAQ,sBACRD,OAAQ,uBACN,CAAC,KACY,eAAbixB,GAA6BtqB,EAAasqB,GAAY,CACxD8C,aAAc,sBACZ,CAAC,KACY,cAAb9C,GAA4BtqB,EAAasqB,GAAY,CACvD6C,YAAa,qBACX,CAAC,GAET,CACA,wBAAAe,CAAyBrD,EAAMsD,EAAWH,GAClCp+C,KAAK4E,QAAU5E,KAAK4E,OAAOyW,cACf,SAAdkjC,GAAqC,OAAbH,IAC1BA,GAAW,GAEbp+C,KAAKq9C,yBAAyBpC,EAAMmD,GACtC,CACA,6BAAWI,GAET,OADczE,GAAW78C,OAAOuhD,GAASA,EAAMryC,SAAS,MAAMhK,IAAIq8C,GAASA,EAAMn8C,QAAQ,SAAUmH,GAAK,IAAIA,KAAKnH,QAAQ,IAAK,IAAI4J,cAEpI,EAEF6tC,GAAW18C,QAAQy9C,IACC,SAAdA,IACJA,EAAYA,EAAUx4C,QAAQ,IAAK,IACnC1F,OAAOitC,eAAemS,GAAgB94C,UAAW43C,EAAW,CAC1D4D,cAAc,EACd,GAAA5U,GACE,OAAQ9pC,KAAKowB,cAAgB,CAAC,GAAG0qB,EACnC,EACA,GAAA/Q,CAAIpb,GACG3uB,KAAKowB,eAAcpwB,KAAKowB,aAAe,CAAC,GAC7CpwB,KAAKowB,aAAa0qB,GAAansB,EACzB3uB,KAAK4E,QAAU5E,KAAK4E,OAAOyW,aACjCrb,KAAKq9C,yBAAyBvC,EAAWnsB,EAC3C,OAGJ,MAAMgwB,WAAoBnD,GACxB,WAAA7+C,GACEs/C,QACAj8C,KAAKk8C,aAAa,CAChBC,KAAM,QAEV,CACA,MAAA7Z,GACE,MAAMsc,EAAO5+C,KAAK4+C,MAAsC,KAA9B5+C,KAAKob,aAAa,SAAgD,SAA9Bpb,KAAKob,aAAa,QAGhF,GAFAqgC,GAASz7C,KAAK0G,WA9NK,48DA+NnB1G,KAAK0G,WAAW+3B,YAAYn/B,SAASnB,cAAc,SAC/CygD,EAAM,CACR,MAAMC,EAAUv/C,SAASnB,cAAc,OACvC0gD,EAAQr3C,UAAUC,IAAI,yBACtBo3C,EAAQ/O,KAAKroC,IAAI,aACjBzH,KAAK0G,WAAW+3B,YAAYogB,EAC9B,CACF,CACA,UAAA3B,GACEl9C,KAAKsiC,QACP,CACA,iBAAA6a,GACMn9C,KAAK0hB,mBAGT1hB,KAAKk9C,YACP,EASoB,oBAAXn8C,SACTA,OAAO+9C,4BAA8B15C,IACnC20C,GAAWhzC,QAAQ3B,KANC,oBAAXrE,SACNA,OAAOg+C,eAAejV,IAAI,qBAAqB/oC,OAAOg+C,eAAeC,OAAO,mBAAoBhD,IAChGj7C,OAAOg+C,eAAejV,IAAI,iBAAiB/oC,OAAOg+C,eAAeC,OAAO,eAAgBL,IAUhG,CA9oUD"} \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper-element-bundle.min.mjs b/vendor/javascript/swiper/swiper-element-bundle.min.mjs new file mode 100644 index 0000000..b8ab432 --- /dev/null +++ b/vendor/javascript/swiper/swiper-element-bundle.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +import"./swiper-bundle.mjs";import{p as paramsList,n as needsNavigation,a as needsPagination,b as needsScrollbar,u as updateSwiper,c as attrToProp}from"./shared/update-swiper.min.mjs";import{g as getParams}from"./shared/get-element-params.min.mjs";import{s as setInnerHTML}from"./shared/utils.min.mjs";import{S as Swiper}from"./shared/swiper-core.min.mjs";const SwiperCSS=':host{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;height:100%;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;padding:0;position:relative;width:100%;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:initial;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}.swiper-css-mode.swiper-horizontal ::slotted(swiper-slide):last-child{margin-inline-end:var(--swiper-slides-offset-after)}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}.swiper-css-mode.swiper-vertical ::slotted(swiper-slide):last-child{margin-block-end:var(--swiper-slides-offset-after)}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper:after{content:"";left:0;pointer-events:none;position:absolute;top:0}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{align-items:center;color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;display:flex;height:var(--swiper-navigation-size);justify-content:center;position:absolute;width:var(--swiper-navigation-size);z-index:10}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{height:100%;object-fit:contain;transform-origin:center;width:100%;fill:currentColor;pointer-events:none}.swiper-button-lock{display:none}.swiper-button-next,.swiper-button-prev{margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto}.swiper-button-prev .swiper-navigation-icon{transform:rotate(180deg)}.swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.swiper-horizontal .swiper-button-next,.swiper-horizontal .swiper-button-prev,.swiper-horizontal~.swiper-button-next,.swiper-horizontal~.swiper-button-prev{margin-left:0;margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.swiper-horizontal .swiper-button-prev,.swiper-horizontal.swiper-rtl .swiper-button-next,.swiper-horizontal.swiper-rtl~.swiper-button-next,.swiper-horizontal~.swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto}.swiper-horizontal .swiper-button-next,.swiper-horizontal.swiper-rtl .swiper-button-prev,.swiper-horizontal.swiper-rtl~.swiper-button-prev,.swiper-horizontal~.swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.swiper-horizontal .swiper-button-prev .swiper-navigation-icon,.swiper-horizontal.swiper-rtl .swiper-button-next .swiper-navigation-icon,.swiper-horizontal.swiper-rtl~.swiper-button-next .swiper-navigation-icon,.swiper-horizontal~.swiper-button-prev .swiper-navigation-icon{transform:rotate(180deg)}.swiper-horizontal.swiper-rtl .swiper-button-prev .swiper-navigation-icon,.swiper-horizontal.swiper-rtl~.swiper-button-prev .swiper-navigation-icon{transform:rotate(0deg)}.swiper-vertical .swiper-button-next,.swiper-vertical .swiper-button-prev,.swiper-vertical~.swiper-button-next,.swiper-vertical~.swiper-button-prev{left:var(--swiper-navigation-top-offset,50%);margin-left:calc(0px - var(--swiper-navigation-size)/2);margin-top:0;right:auto}.swiper-vertical .swiper-button-prev,.swiper-vertical~.swiper-button-prev{bottom:auto;top:var(--swiper-navigation-sides-offset,4px)}.swiper-vertical .swiper-button-prev .swiper-navigation-icon,.swiper-vertical~.swiper-button-prev .swiper-navigation-icon{transform:rotate(-90deg)}.swiper-vertical .swiper-button-next,.swiper-vertical~.swiper-button-next{bottom:var(--swiper-navigation-sides-offset,4px);top:auto}.swiper-vertical .swiper-button-next .swiper-navigation-icon,.swiper-vertical~.swiper-button-next .swiper-navigation-icon{transform:rotate(90deg)}.swiper-pagination{position:absolute;text-align:center;transform:translateZ(0);transition:opacity .3s;z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{position:relative;transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);display:inline-block;height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px))}button.swiper-pagination-bullet{appearance:none;border:none;box-shadow:none;margin:0;padding:0}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translate3d(0,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{display:block;margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,left .2s}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,#00000040);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));height:100%;left:0;position:absolute;top:0;transform:scale(0);transform-origin:left top;width:100%}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0;width:100%}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{height:100%;left:0;top:0;width:var(--swiper-pagination-progressbar-size,4px)}.swiper-pagination-lock{display:none}.swiper-scrollbar{background:var(--swiper-scrollbar-bg-color,#0000001a);border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{bottom:var(--swiper-scrollbar-bottom,4px);height:var(--swiper-scrollbar-size,4px);left:var(--swiper-scrollbar-sides-offset,1%);position:absolute;top:var(--swiper-scrollbar-top,auto);width:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);z-index:50}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{height:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);left:var(--swiper-scrollbar-left,auto);position:absolute;right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);width:var(--swiper-scrollbar-size,4px);z-index:50}.swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,#00000080);border-radius:var(--swiper-scrollbar-border-radius,10px);height:100%;left:0;position:relative;top:0;width:100%}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{left:0;opacity:0;pointer-events:none;position:absolute;top:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{margin:0 auto;transition-timing-function:ease-out}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-direction:column;flex-wrap:wrap}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){backface-visibility:hidden;height:100%;pointer-events:none;transform-origin:0 0;visibility:hidden;width:100%;z-index:1}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{bottom:0;height:100%;left:0;opacity:.6;position:absolute;width:100%;z-index:0}.swiper-cube .swiper-cube-shadow:before{background:#000;bottom:0;content:"";filter:blur(50px);left:0;position:absolute;right:0;top:0}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){backface-visibility:hidden;pointer-events:none;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){backface-visibility:hidden;overflow:hidden;transform-origin:center bottom}',SwiperSlideCSS="::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}::slotted(.swiper-slide-shadow){background:#00000026}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(270deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(90deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(0deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(180deg,#00000080,#0000)}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid #0000;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){backface-visibility:hidden;z-index:0}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){backface-visibility:hidden;z-index:0}::slotted(.swiper-zoom-container){align-items:center;display:flex;height:100%;justify-content:center;text-align:center;width:100%}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-height:100%;max-width:100%;object-fit:contain}";class DummyHTMLElement{}const ClassToExtend="undefined"==typeof window||"undefined"==typeof HTMLElement?DummyHTMLElement:HTMLElement,addStyle=(e,i)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const t=new CSSStyleSheet;t.replaceSync(i),e.adoptedStyleSheets=[t]}else{const t=document.createElement("style");t.rel="stylesheet",t.textContent=i,e.appendChild(t)}};class SwiperContainer extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}cssStyles(){return[SwiperCSS,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,i=[...this.querySelectorAll("[slot^=slide-]")].map(e=>parseInt(e.getAttribute("slot").split("slide-")[1],10));if(this.slideSlots=i.length?Math.max(...i)+1:0,this.rendered)if(this.slideSlots>e)for(let i=e;i=0;i-=1)i>this.slideSlots&&e[i].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&addStyle(this.shadowRoot,e),this.cssLinks().forEach(e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const i=document.createElement("link");i.rel="stylesheet",i.href=e,this.shadowRoot.appendChild(i)});const i=document.createElement("div");i.classList.add("swiper"),i.part="container",setInnerHTML(i,`\n \n
\n \n ${Array.from({length:this.slideSlots}).map((e,i)=>`\n \n \n \n `).join("")}\n
\n \n ${needsNavigation(this.passedParams)?'\n
\n
\n ':""}\n ${needsPagination(this.passedParams)?'\n
\n ':""}\n ${needsScrollbar(this.passedParams)?'\n
\n ':""}\n `),this.shadowRoot.appendChild(i),this.rendered=!0}initialize(){if(this.swiper&&this.swiper.initialized)return;const{params:e,passedParams:i}=getParams(this);this.swiperParams=e,this.passedParams=i,delete this.swiperParams.init,this.render(),this.swiper=new Swiper(this.shadowRoot.querySelector(".swiper"),{...e.virtual?{}:{observer:!0},...e,touchEventsTarget:"container",onAny:(i,...t)=>{"observerUpdate"===i&&this.calcSlideSlots();const s=e.eventsPrefix?`${e.eventsPrefix}${i.toLowerCase()}`:i.toLowerCase(),r=new CustomEvent(s,{detail:t,bubbles:"hashChange"!==i,cancelable:!0});this.dispatchEvent(r)}})}connectedCallback(){this.swiper&&this.swiper.initialized&&this.nested&&this.closest("swiper-slide")&&this.closest("swiper-slide").swiperLoopMoveDOM||!1!==this.init&&"false"!==this.getAttribute("init")&&this.initialize()}disconnectedCallback(){this.nested&&this.closest("swiper-slide")&&this.closest("swiper-slide").swiperLoopMoveDOM||this.swiper&&this.swiper.destroy&&this.swiper.destroy()}updateSwiperOnPropChange(e,i){const{params:t,passedParams:s}=getParams(this,e,i);this.passedParams=s,this.swiperParams=t,this.swiper&&this.swiper.params[e]===i||updateSwiper({swiper:this.swiper,passedParams:this.passedParams,changedParams:[attrToProp(e)],..."navigation"===e&&s[e]?{prevEl:".swiper-button-prev",nextEl:".swiper-button-next"}:{},..."pagination"===e&&s[e]?{paginationEl:".swiper-pagination"}:{},..."scrollbar"===e&&s[e]?{scrollbarEl:".swiper-scrollbar"}:{}})}attributeChangedCallback(e,i,t){this.swiper&&this.swiper.initialized&&("true"===i&&null===t&&(t=!1),this.updateSwiperOnPropChange(e,t))}static get observedAttributes(){return paramsList.filter(e=>e.includes("_")).map(e=>e.replace(/[A-Z]/g,e=>`-${e}`).replace("_","").toLowerCase())}}paramsList.forEach(e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(SwiperContainer.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(i){this.passedParams||(this.passedParams={}),this.passedParams[e]=i,this.swiper&&this.swiper.initialized&&this.updateSwiperOnPropChange(e,i)}}))});class SwiperSlide extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(addStyle(this.shadowRoot,SwiperSlideCSS),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.swiperLoopMoveDOM||this.initialize()}}const register=()=>{"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",SwiperContainer),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",SwiperSlide))};"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{paramsList.push(...e)});export{SwiperContainer,SwiperSlide,register}; +//# sourceMappingURL=swiper-element-bundle.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper-element-bundle.min.mjs.map b/vendor/javascript/swiper/swiper-element-bundle.min.mjs.map new file mode 100644 index 0000000..5aae0db --- /dev/null +++ b/vendor/javascript/swiper/swiper-element-bundle.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element-bundle.mjs.mjs","names":["paramsList","needsNavigation","needsPagination","needsScrollbar","updateSwiper","attrToProp","getParams","setInnerHTML","Swiper","SwiperCSS","SwiperSlideCSS","DummyHTMLElement","ClassToExtend","window","HTMLElement","addStyle","shadowRoot","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","style","document","createElement","rel","textContent","appendChild","SwiperContainer","constructor","super","this","attachShadow","mode","cssStyles","injectStyles","Array","isArray","join","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlots","slideSlotChildren","querySelectorAll","map","child","parseInt","getAttribute","split","length","Math","max","rendered","i","slideEl","setAttribute","slotEl","querySelector","slides","swiper","remove","render","localStyles","replace","forEach","url","linkEl","href","el","classList","add","part","from","_","index","passedParams","initialize","initialized","params","swiperParams","init","virtual","observer","touchEventsTarget","onAny","name","args","eventName","eventsPrefix","toLowerCase","event","CustomEvent","detail","bubbles","cancelable","dispatchEvent","connectedCallback","nested","closest","swiperLoopMoveDOM","disconnectedCallback","destroy","updateSwiperOnPropChange","propName","propValue","changedParams","prevEl","nextEl","paginationEl","scrollbarEl","attributeChangedCallback","attr","prevValue","newValue","observedAttributes","filter","param","includes","v","paramName","Object","defineProperty","prototype","configurable","get","set","value","SwiperSlide","lazy","lazyDiv","register","customElements","define","SwiperElementRegisterParams","push"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper-element-bundle.mjs b/vendor/javascript/swiper/swiper-element-bundle.mjs new file mode 100644 index 0000000..db8113c --- /dev/null +++ b/vendor/javascript/swiper/swiper-element-bundle.mjs @@ -0,0 +1,276 @@ +/** + * Swiper Custom Element 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +import './swiper-bundle.mjs'; +import { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs'; +import { g as getParams } from './shared/get-element-params.mjs'; +import { s as setInnerHTML } from './shared/utils.mjs'; +import { S as Swiper } from './shared/swiper-core.mjs'; + +/* eslint-disable spaced-comment */ + +const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;height:100%;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;padding:0;position:relative;width:100%;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:initial;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}.swiper-css-mode.swiper-horizontal ::slotted(swiper-slide):last-child{margin-inline-end:var(--swiper-slides-offset-after)}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}.swiper-css-mode.swiper-vertical ::slotted(swiper-slide):last-child{margin-block-end:var(--swiper-slides-offset-after)}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper:after{content:"";left:0;pointer-events:none;position:absolute;top:0}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{align-items:center;color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;display:flex;height:var(--swiper-navigation-size);justify-content:center;position:absolute;width:var(--swiper-navigation-size);z-index:10}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{height:100%;object-fit:contain;transform-origin:center;width:100%;fill:currentColor;pointer-events:none}.swiper-button-lock{display:none}.swiper-button-next,.swiper-button-prev{margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto}.swiper-button-prev .swiper-navigation-icon{transform:rotate(180deg)}.swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.swiper-horizontal .swiper-button-next,.swiper-horizontal .swiper-button-prev,.swiper-horizontal~.swiper-button-next,.swiper-horizontal~.swiper-button-prev{margin-left:0;margin-top:calc(0px - var(--swiper-navigation-size)/2);top:var(--swiper-navigation-top-offset,50%)}.swiper-horizontal .swiper-button-prev,.swiper-horizontal.swiper-rtl .swiper-button-next,.swiper-horizontal.swiper-rtl~.swiper-button-next,.swiper-horizontal~.swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto}.swiper-horizontal .swiper-button-next,.swiper-horizontal.swiper-rtl .swiper-button-prev,.swiper-horizontal.swiper-rtl~.swiper-button-prev,.swiper-horizontal~.swiper-button-next{left:auto;right:var(--swiper-navigation-sides-offset,4px)}.swiper-horizontal .swiper-button-prev .swiper-navigation-icon,.swiper-horizontal.swiper-rtl .swiper-button-next .swiper-navigation-icon,.swiper-horizontal.swiper-rtl~.swiper-button-next .swiper-navigation-icon,.swiper-horizontal~.swiper-button-prev .swiper-navigation-icon{transform:rotate(180deg)}.swiper-horizontal.swiper-rtl .swiper-button-prev .swiper-navigation-icon,.swiper-horizontal.swiper-rtl~.swiper-button-prev .swiper-navigation-icon{transform:rotate(0deg)}.swiper-vertical .swiper-button-next,.swiper-vertical .swiper-button-prev,.swiper-vertical~.swiper-button-next,.swiper-vertical~.swiper-button-prev{left:var(--swiper-navigation-top-offset,50%);margin-left:calc(0px - var(--swiper-navigation-size)/2);margin-top:0;right:auto}.swiper-vertical .swiper-button-prev,.swiper-vertical~.swiper-button-prev{bottom:auto;top:var(--swiper-navigation-sides-offset,4px)}.swiper-vertical .swiper-button-prev .swiper-navigation-icon,.swiper-vertical~.swiper-button-prev .swiper-navigation-icon{transform:rotate(-90deg)}.swiper-vertical .swiper-button-next,.swiper-vertical~.swiper-button-next{bottom:var(--swiper-navigation-sides-offset,4px);top:auto}.swiper-vertical .swiper-button-next .swiper-navigation-icon,.swiper-vertical~.swiper-button-next .swiper-navigation-icon{transform:rotate(90deg)}.swiper-pagination{position:absolute;text-align:center;transform:translateZ(0);transition:opacity .3s;z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{position:relative;transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);display:inline-block;height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px))}button.swiper-pagination-bullet{appearance:none;border:none;box-shadow:none;margin:0;padding:0}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translate3d(0,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{display:block;margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,left .2s}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,#00000040);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));height:100%;left:0;position:absolute;top:0;transform:scale(0);transform-origin:left top;width:100%}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0;width:100%}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{height:100%;left:0;top:0;width:var(--swiper-pagination-progressbar-size,4px)}.swiper-pagination-lock{display:none}.swiper-scrollbar{background:var(--swiper-scrollbar-bg-color,#0000001a);border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{bottom:var(--swiper-scrollbar-bottom,4px);height:var(--swiper-scrollbar-size,4px);left:var(--swiper-scrollbar-sides-offset,1%);position:absolute;top:var(--swiper-scrollbar-top,auto);width:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);z-index:50}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{height:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);left:var(--swiper-scrollbar-left,auto);position:absolute;right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);width:var(--swiper-scrollbar-size,4px);z-index:50}.swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,#00000080);border-radius:var(--swiper-scrollbar-border-radius,10px);height:100%;left:0;position:relative;top:0;width:100%}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{left:0;opacity:0;pointer-events:none;position:absolute;top:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{margin:0 auto;transition-timing-function:ease-out}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-direction:column;flex-wrap:wrap}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){backface-visibility:hidden;height:100%;pointer-events:none;transform-origin:0 0;visibility:hidden;width:100%;z-index:1}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{bottom:0;height:100%;left:0;opacity:.6;position:absolute;width:100%;z-index:0}.swiper-cube .swiper-cube-shadow:before{background:#000;bottom:0;content:"";filter:blur(50px);left:0;position:absolute;right:0;top:0}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){backface-visibility:hidden;pointer-events:none;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){backface-visibility:hidden;overflow:hidden;transform-origin:center bottom}` +const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}::slotted(.swiper-slide-shadow){background:#00000026}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(270deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(90deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(0deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(180deg,#00000080,#0000)}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid #0000;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){backface-visibility:hidden;z-index:0}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){backface-visibility:hidden;z-index:0}::slotted(.swiper-zoom-container){align-items:center;display:flex;height:100%;justify-content:center;text-align:center;width:100%}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-height:100%;max-width:100%;object-fit:contain}` + +class DummyHTMLElement {} +const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; +const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } +}; +class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + setInnerHTML(el, ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
+
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `); + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + if (this.swiper && this.swiper.initialized) return; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: (name, ...args) => { + if (name === 'observerUpdate') { + this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.swiper && this.swiper.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!(this.swiper && this.swiper.initialized)) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } +} +paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!(this.swiper && this.swiper.initialized)) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); +}); +class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + if (this.swiperLoopMoveDOM) { + return; + } + this.initialize(); + } +} + +// eslint-disable-next-line +const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); +}; +if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/vendor/javascript/swiper/swiper-element.d.ts b/vendor/javascript/swiper/swiper-element.d.ts new file mode 100644 index 0000000..4d40e6d --- /dev/null +++ b/vendor/javascript/swiper/swiper-element.d.ts @@ -0,0 +1,444 @@ +// @ts-ignore +import { Swiper, SwiperOptions } from './types/index.d.ts'; + +declare const register: () => void; + +// prettier-ignore +interface SwiperContainerEventMap extends Omit { + /** + * Event will be fired in when autoplay started + */ + autoplaystart: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when autoplay stopped + */ + autoplaystop: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on autoplay pause + */ + autoplaypause: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on autoplay resume + */ + autoplayresume: CustomEvent<[swiper: Swiper]>; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplaytimeleft: CustomEvent<[swiper: Swiper, timeLeft: number, percentage: number]>; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on window hash change + */ + hashchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper updates the hash + */ + hashset: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on key press + */ + keypress: CustomEvent<[swiper: Swiper, keyCode: string]>;/** + * Event will be fired on mousewheel scroll + */ + scroll: CustomEvent<[swiper: Swiper, event: WheelEvent]>;/** + * Event will be fired on navigation hide + */ + navigationhide: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation show + */ + navigationshow: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation prev button click + */ + navigationprev: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation next button click + */ + navigationnext: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on draggable scrollbar drag start + */ + scrollbardragstart: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbardragmove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbardragend: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>;/** + * Event will be fired on zoom change + */ + zoomchange: CustomEvent<[swiper: Swiper, scale: number, imageEl: HTMLElement, slideEl: HTMLElement]>;/** + * Event will be fired after pagination rendered + */ + paginationrender: CustomEvent<[swiper: Swiper, paginationEl: HTMLElement]>; + + /** + * Event will be fired when pagination updated + */ + paginationupdate: CustomEvent<[swiper: Swiper, paginationEl: HTMLElement]>; + + /** + * Event will be fired on pagination hide + */ + paginationhide: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired on pagination show + */ + paginationshow: CustomEvent<[swiper: Swiper]>; + + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: CustomEvent<[false, + * // other parameters + * }]>; + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: CustomEvent<[{ + * init: function { + * // do something + * }, + * } + * })]>; + * ``` + */ + init: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired right before Swiper destroyed + */ + beforedestroy: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesupdated: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when currently active slide is changed + */ + slidechange: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slidechangetransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slidechangetransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slidenexttransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slidenexttransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slideprevtransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slideprevtransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired in the beginning of transition. + */ + transitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after transition. + */ + transitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchstart: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchmove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchmoveopposite: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + slidermove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchend: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubletap: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: CustomEvent<[swiper: Swiper, progress: number]>; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachbeginning: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper reach last slide + */ + reachend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toedge: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromedge: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + settranslate: CustomEvent<[swiper: Swiper, translate: number]>; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + settransition: CustomEvent<[swiper: Swiper, transition: number]>; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerupdate: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired right before "loop fix" + */ + beforeloopfix: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after "loop fix" + */ + loopfix: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: CustomEvent<[swiper: Swiper, breakpointParams: SwiperOptions]>; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + + + /** + * Event will fired on active index change + */ + activeindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired on snap index change + */ + snapindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired on real index change + */ + realindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired right after initialization + */ + afterinit: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired right before initialization + */ + beforeinit: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before resize handler + */ + beforeresize: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before slide change transition start + */ + beforeslidechangestart: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before transition start + */ + beforetransitionstart: CustomEvent<[swiper: Swiper, speed: number, internal: any]>; // what is internal? + /** + * Event will fired on direction change + */ + changedirection: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleclick: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + /** + * Event will be fired on swiper destroy + */ + destroy: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on momentum bounce + */ + momentumbounce: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideresettransitionstart: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideresettransitionend: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired with first touch/drag move + */ + sliderfirstmove: CustomEvent<[swiper: Swiper, event: TouchEvent]>; + /** + * Event will be fired when number of slides has changed + */ + slideslengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when slides grid has changed + */ + slidesgridlengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when snap grid has changed + */ + snapgridlengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired after swiper.update() call + */ + update: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: CustomEvent<[swiper: Swiper]>; + +} + +interface SwiperContainer extends HTMLElement {} +interface SwiperContainer extends SwiperOptions { + swiper: Swiper; + initialize: () => void; + injectStyles: string[]; + injectStylesUrls: string[]; + eventsPrefix: string; + addEventListener( + type: K, + listener: (this: SwiperContainer, ev: SwiperContainerEventMap[K]) => any, + options?: boolean | AddEventListenerOptions, + ): void; + addEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | AddEventListenerOptions, + ): void; + removeEventListener( + type: K, + listener: (this: SwiperContainer, ev: SwiperContainerEventMap[K]) => any, + options?: boolean | EventListenerOptions, + ): void; + removeEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | EventListenerOptions, + ): void; +} + +interface SwiperSlide extends HTMLElement { + lazy: string | boolean; +} + +declare global { + interface HTMLElementTagNameMap { + 'swiper-container': SwiperContainer; + 'swiper-slide': SwiperSlide; + } +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/vendor/javascript/swiper/swiper-element.js b/vendor/javascript/swiper/swiper-element.js new file mode 100644 index 0000000..3778f19 --- /dev/null +++ b/vendor/javascript/swiper/swiper-element.js @@ -0,0 +1,4939 @@ +/** + * Swiper Custom Element 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +(function () { + 'use strict'; + + /** + * SSR Window 5.0.1 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2025, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: June 27, 2025 + */ + /* eslint-disable no-param-reassign */ + function isObject$2(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$2(target = {}, src = {}) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$2(src[key]) && isObject$2(target[key]) && Object.keys(src[key]).length > 0) { + extend$2(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$2(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$2(win, ssrWindow); + return win; + } + + function classesToTokens(classes = '') { + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay = 0) { + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis = 'x') { + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject$1(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend$1(...args) { + const to = Object(args[0]); + for (let i = 1; i < args.length; i += 1) { + const nextSource = args[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => key !== '__proto__' && key !== 'constructor' && key !== 'prototype'); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll({ + swiper, + targetPosition, + side + }) { + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function elementChildren(element, selector = '') { + const window = getWindow(); + const children = [...element.children]; + if (window.HTMLSlotElement && element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); + } + function elementIsChildOfSlot(el, slot) { + // Breadth-first search through all parent's children and assigned elements + const elementsQueue = [slot]; + while (elementsQueue.length > 0) { + const elementToCheck = elementsQueue.shift(); + if (el === elementToCheck) { + return true; + } + elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : [])); + } + } + function elementIsChildOf(el, parent) { + const window = getWindow(); + let isChild = parent.contains(el); + if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) { + const children = [...parent.assignedElements()]; + isChild = children.includes(el); + if (!isChild) { + isChild = elementIsChildOfSlot(el, parent); + } + } + return isChild; + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes = []) { + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + function setInnerHTML(el, html = '') { + if (typeof trustedTypes !== 'undefined') { + el.innerHTML = trustedTypes.createPolicy('html', { + createHTML: s => s + }).createHTML(html); + } else { + el.innerHTML = html; + } + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice({ + userAgent + } = {}) { + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad)(?!\1).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides = {}) { + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize({ + swiper, + on, + emit + }) { + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(({ + contentBoxSize, + contentRect, + target + }) => { + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer({ + swiper, + extendParams, + on, + emit + }) { + const observers = []; + const window = getWindow(); + const attach = (target, options = {}) => { + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler(...args) { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit(...args) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + const swiperSize = swiper.size - offsetBefore - offsetAfter; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween - offsetBefore - offsetAfter; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + + // set cssMode offsets + if (params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-slides-offset-before', `${offsetBefore}px`); + setCSSProperty(wrapperEl, '--swiper-slides-offset-after', `${offsetAfter}px`); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + const slide = slides[i]; + if (slide) { + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + } + + if (isVirtual && params.slidesPerView === 'auto') { + if (params.virtual.slidesPerViewAutoSlideSize) { + slideSize = params.virtual.slidesPerViewAutoSlideSize; + } + if (slideSize && slide) { + if (params.roundLengths) slideSize = Math.floor(slideSize); + slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } else if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slide.style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slide) { + slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slide) { + slide.swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + // Check if snapToSlideEdge should be applied + const isFractionalSlidesPerView = params.slidesPerView !== 'auto' && params.slidesPerView % 1 !== 0; + const shouldSnapToSlideEdge = params.snapToSlideEdge && !params.loop && (params.slidesPerView === 'auto' || isFractionalSlidesPerView); + + // Calculate the last allowed snap index when snapToSlideEdge is enabled + // This ensures minimum slides are visible at the end + let lastAllowedSnapIndex = snapGrid.length; + if (shouldSnapToSlideEdge) { + let minVisibleSlides; + if (params.slidesPerView === 'auto') { + // For 'auto' mode, calculate how many slides fit based on actual sizes + minVisibleSlides = 1; + let accumulatedSize = 0; + for (let i = slidesSizesGrid.length - 1; i >= 0; i -= 1) { + accumulatedSize += slidesSizesGrid[i] + (i < slidesSizesGrid.length - 1 ? spaceBetween : 0); + if (accumulatedSize <= swiperSize) { + minVisibleSlides = slidesSizesGrid.length - i; + } else { + break; + } + } + } else { + minVisibleSlides = Math.floor(params.slidesPerView); + } + lastAllowedSnapIndex = Math.max(slidesLength - minVisibleSlides, 0); + } + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (shouldSnapToSlideEdge) { + // When snapToSlideEdge is enabled, only keep snaps up to lastAllowedSnapIndex + if (i <= lastAllowedSnapIndex) { + newSlidesGrid.push(slidesGridItem); + } + } else if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + // When snapToSlideEdge is disabled, keep snaps that fit within scrollable area + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + // Only add edge-aligned snap if snapToSlideEdge is not enabled + if (!shouldSnapToSlideEdge) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesProgress(translate = this && this.translate || 0) { + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.find(slideEl => slideEl.column === activeIndex); + nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1); + prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1); + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove(); + } + }); + } + } + // Skip removal if managed by React/Vue component + if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled) { + if (params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else { + realIndex = activeIndex; + } + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex); + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') { + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) { + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit({ + swiper, + runCallbacks, + direction, + step + }) { + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + } else if (runCallbacks && activeIndex !== previousIndex) { + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks = true, direction) { + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks = true, direction) { + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index = 0, speed, runCallbacks = true, internal, initial) { + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // initial virtual + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + const isInitialVirtual = isVirtual && initial; + // Update Index + if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + const browser = getBrowser(); + const isSafari = browser.isSafari; + if (isVirtual && !initial && isSafari && swiper.isElement) { + swiper.virtual.update(false, false, slideIndex); + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index = 0, speed, runCallbacks = true, internal) { + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides, + slidesOffsetBefore, + slidesOffsetAfter + } = swiper.params; + const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (bothDirections && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (bothDirections) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && bothDirections && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = bothDirections ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks = true, internal) { + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks = true, internal) { + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + const isFreeMode = params.freeMode && params.freeMode.enabled; + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks = true, internal) { + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks = true, internal, threshold = 0.5) { + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.getSlideIndexWhenGrid(swiper.clickedIndex); + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + const isGrid = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + swiper.slideToLoop(realIndex); + } else if (slideToIndex > (isGrid ? (swiper.slides.length - slidesPerView) / 2 - (swiper.params.grid.rows - 1) : swiper.slides.length - slidesPerView)) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex, initial) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const clearBlankSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideBlankClass}`); + slides.forEach(el => { + el.remove(); + }); + if (slides.length > 0) { + swiper.recalcSlides(); + swiper.updateSlides(); + } + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (params.loopAddBlankSlides && (params.slidesPerGroup > 1 || gridEnabled)) { + clearBlankSlides(); + } + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + const bothDirections = params.centeredSlides || !!params.slidesOffsetBefore || !!params.slidesOffsetAfter; + swiper.loopFix({ + slideRealIndex, + direction: bothDirections ? undefined : 'next', + initial + }); + } + + function loopFix({ + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + initial, + byController, + byMousewheel + } = {}) { + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides, + slidesOffsetBefore, + slidesOffsetAfter, + initialSlide + } = params; + const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!bothDirections && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (bothDirections && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (bothDirections && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = bothDirections ? Math.max(slidesPerGroup, Math.ceil(slidesPerView / 2)) : slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !bothDirections; + let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass))); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (bothDirections && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + if (isInitialOverflow) { + slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1); + } + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) { + if (appendSlidesIndexes.includes(activeSlideIndex)) { + appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1); + } + if (prependSlidesIndexes.includes(activeSlideIndex)) { + prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1); + } + } + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base = this) { + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId); + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) { + return; + } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) { + return; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') { + document.activeElement.blur(); + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId); + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + const document = getDocument(); + + // Get breakpoint for window/container width and update parameters + const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container'; + const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase); + const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend$1(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base = 'window', containerEl) { + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + snapToSlideEdge: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj = {}) { + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend$1(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend$1(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend$1(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor(...args) { + let el; + let params; + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend$1({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend$1({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + params.modules.forEach(mod => { + if (typeof mod === 'function' && swiper.modules.indexOf(mod) < 0) { + swiper.modules.push(mod); + } + }); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend$1({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend$1({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend$1({}, swiper.params); + swiper.passedParams = extend$1({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)); + } + getSlideIndexWhenGrid(index) { + if (this.grid && this.params.grid && this.params.grid.rows > 1) { + if (this.params.grid.fill === 'column') { + index = Math.floor(index / this.params.grid.rows); + } else if (this.params.grid.fill === 'row') { + index = index % Math.ceil(this.slides.length / this.params.grid.rows); + } + } + return index; + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view = 'current', exact = false) { + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate = true) { + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(undefined, true); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance = true, cleanStyles = true) { + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend$1(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + /* underscore in name -> watch for changes */ + const paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_snapToSlideEdge', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', + // modules + 'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; + } + function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); + } + function needsNavigation(params = {}) { + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; + } + function needsPagination(params = {}) { + return params.pagination && typeof params.pagination.el === 'undefined'; + } + function needsScrollbar(params = {}) { + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; + } + function attrToProp(attrName = '') { + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); + } + + function updateSwiper({ + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + }) { + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && !passedParams.thumbs.swiper.destroyed && currentParams.thumbs && (!currentParams.thumbs.swiper || currentParams.thumbs.swiper.destroyed)) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + setInnerHTML(nextEl, swiper.navigation.arrowSvg); + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + setInnerHTML(prevEl, swiper.navigation.arrowSvg); + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); + } + + const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; + }; + const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; + function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.find(mParam => attr.name.startsWith(`${mParam}-`)); + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') { + passedParams[parentObjName] = {}; + } + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + if (passedParams[parentObjName] === false) { + passedParams[parentObjName] = { + enabled: false + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; + } + + /** + * Swiper Custom Element 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + + + /* eslint-disable spaced-comment */ + + const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;height:100%;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;padding:0;position:relative;width:100%;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:initial;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}.swiper-css-mode.swiper-horizontal ::slotted(swiper-slide):last-child{margin-inline-end:var(--swiper-slides-offset-after)}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}.swiper-css-mode.swiper-vertical ::slotted(swiper-slide):last-child{margin-block-end:var(--swiper-slides-offset-after)}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}`; + const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}::slotted(.swiper-slide-shadow){background:#00000026}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(270deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(90deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(0deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(180deg,#00000080,#0000)}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid #0000;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){backface-visibility:hidden;z-index:0}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){backface-visibility:hidden;z-index:0}::slotted(.swiper-zoom-container){align-items:center;display:flex;height:100%;justify-content:center;text-align:center;width:100%}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-height:100%;max-width:100%;object-fit:contain}`; + + class DummyHTMLElement {} + const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; + const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } + }; + class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + setInnerHTML(el, ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
+
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `); + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + if (this.swiper && this.swiper.initialized) return; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: (name, ...args) => { + if (name === 'observerUpdate') { + this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.swiper && this.swiper.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!(this.swiper && this.swiper.initialized)) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } + } + paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!(this.swiper && this.swiper.initialized)) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); + }); + class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + if (this.swiperLoopMoveDOM) { + return; + } + this.initialize(); + } + } + + // eslint-disable-next-line + const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); + }; + if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; + } + + register(); + +})(); diff --git a/vendor/javascript/swiper/swiper-element.min.js b/vendor/javascript/swiper/swiper-element.min.js new file mode 100644 index 0000000..bad9339 --- /dev/null +++ b/vendor/javascript/swiper/swiper-element.min.js @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +!function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s={},i={}){const r=["__proto__","constructor","prototype"];Object.keys(i).filter(e=>r.indexOf(e)<0).forEach(r=>{void 0===s[r]?s[r]=i[r]:e(i[r])&&e(s[r])&&Object.keys(i[r]).length>0&&t(s[r],i[r])})}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const r={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function n(){const e="undefined"!=typeof window?window:{};return t(e,r),e}function a(e,t=0){return setTimeout(e,t)}function o(){return Date.now()}function l(e,t="x"){const s=n();let i,r,a;const o=function(e){const t=n();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(r=o.transform||o.webkitTransform,r.split(",").length>6&&(r=r.split(", ").map(e=>e.replace(",",".")).join(", ")),a=new s.WebKitCSSMatrix("none"===r?"":r)):(a=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=a.toString().split(",")),"x"===t&&(r=s.WebKitCSSMatrix?a.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(r=s.WebKitCSSMatrix?a.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),r||0}function d(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function p(...e){const t=Object(e[0]);for(let s=1;s"__proto__"!==e&&"constructor"!==e&&"prototype"!==e);for(let s=0,r=e.length;sr?"next":"prev",c=(e,t)=>"next"===d&&e>=t||"prev"===d&&e<=t,p=()=>{a=(new Date).getTime(),null===o&&(o=a);const n=Math.max(Math.min((a-o)/l,1),0),d=.5-Math.cos(n*Math.PI)/2;let u=r+d*(t-r);if(c(u,t)&&(u=t),e.wrapperEl.scrollTo({[s]:u}),c(u,t))return e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.scrollSnapType="",setTimeout(()=>{e.wrapperEl.style.overflow="",e.wrapperEl.scrollTo({[s]:u})}),void i.cancelAnimationFrame(e.cssModeFrameID);e.cssModeFrameID=i.requestAnimationFrame(p)};p()}function f(e,t=""){const s=n(),i=[...e.children];return s.HTMLSlotElement&&e instanceof HTMLSlotElement&&i.push(...e.assignedElements()),t?i.filter(e=>e.matches(t)):i}function m(e){try{return void console.warn(e)}catch(e){}}function w(e,t=[]){const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:function(e=""){return e.trim().split(" ").filter(e=>!!e.trim())}(t)),s}function g(e,t){return n().getComputedStyle(e,null).getPropertyValue(t)}function v(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function b(e,t,s){const i=n();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function S(e,t=""){"undefined"!=typeof trustedTypes?e.innerHTML=trustedTypes.createPolicy("html",{createHTML:e=>e}).createHTML(t):e.innerHTML=t}let T,y,x;function E(){return T||(T=function(){const e=n(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),T}function M(e={}){return y||(y=function({userAgent:e}={}){const t=E(),s=n(),i=s.navigator.platform,r=e||s.navigator.userAgent,a={ios:!1,android:!1},o=s.screen.width,l=s.screen.height,d=r.match(/(Android);?[\s\/]+([\d.]+)?/);let c=r.match(/(iPad)(?!\1).*OS\s([\d_]+)/);const p=r.match(/(iPod)(.*OS\s([\d_]+))?/),u=!c&&r.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===i;let f="MacIntel"===i;return!c&&f&&t.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${l}`)>=0&&(c=r.match(/(Version)\/([\d.]+)/),c||(c=[0,1,"13_0_0"]),f=!1),d&&!h&&(a.os="android",a.android=!0),(c||u||p)&&(a.os="ios",a.ios=!0),a}(e)),y}function P(){return x||(x=function(){const e=n(),t=M();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map(e=>Number(e));s=e<16||16===e&&i<2}}const r=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),a=i();return{isSafari:s||a,needPerspectiveFix:s,need3dFix:a||r&&t.ios,isWebView:r}}()),x}var C={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach(e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)}),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(...s){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy,t.apply(i,s)}return r.__emitterProxy=t,i.on(e,r,s)},onAny(e,t){const s=this;if(!s.eventsListeners||s.destroyed)return s;if("function"!=typeof e)return s;const i=t?"unshift":"push";return s.eventsAnyListeners.indexOf(e)<0&&s.eventsAnyListeners[i](e),s},offAny(e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsAnyListeners)return t;const s=t.eventsAnyListeners.indexOf(e);return s>=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach(e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)})}),s):s},emit(...e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsListeners)return t;let s,i,r;"string"==typeof e[0]||Array.isArray(e[0])?(s=e[0],i=e.slice(1,e.length),r=t):(s=e[0].events,i=e[0].data,r=e[0].context||t),i.unshift(r);return(Array.isArray(s)?s:s.split(" ")).forEach(e=>{t.eventsAnyListeners&&t.eventsAnyListeners.length&&t.eventsAnyListeners.forEach(t=>{t.apply(r,[e,...i])}),t.eventsListeners&&t.eventsListeners[e]&&t.eventsListeners[e].forEach(e=>{e.apply(r,i)})}),t}};const k=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const L=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const z=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame(()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&!t.lazyPreloaderManaged&&t.remove())})),t&&!t.lazyPreloaderManaged&&t.remove()}},O=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},I=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map((e,t)=>s+i+t)),void e.slides.forEach((t,s)=>{n.includes(t.column)&&O(e,s)})}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&O(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=0?x=parseFloat(x.replace("%",""))/100*y:"string"==typeof x&&(x=parseFloat(x)),e.virtualSize=-x-w-v,d.forEach(e=>{n?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""}),s.centeredSlides&&s.cssMode&&(u(i,"--swiper-centered-offset-before",""),u(i,"--swiper-centered-offset-after","")),s.cssMode&&(u(i,"--swiper-slides-offset-before",`${w}px`),u(i,"--swiper-slides-offset-after",`${v}px`));const C=s.grid&&s.grid.rows>1&&e.grid;let k;C?e.grid.initSlides(d):e.grid&&e.grid.unsetSlides();const L="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter(e=>void 0!==s.breakpoints[e].slidesPerView).length>0;for(let i=0;i=0&&(t+=m[s]+(s1&&(i||p.push(e.virtualSize-y))}if(o&&s.loop){const t=m[0]+x;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==d.length-1).forEach(e=>{e.style[t]=`${x}px`})}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;m.forEach(t=>{e+=t+(x||0)}),e-=x;const t=e>y?e-y:0;p=p.map(e=>e<=0?-w:e>t?t+v:e)}if(s.centerInsufficientSlides){let e=0;if(m.forEach(t=>{e+=t+(x||0)}),e-=x,e{p[s]=e-t}),h.forEach((e,s)=>{h[s]=e+t})}}if(Object.assign(e,{slides:d,snapGrid:p,slidesGrid:h,slidesSizesGrid:m}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){u(i,"--swiper-centered-offset-before",-p[0]+"px"),u(i,"--swiper-centered-offset-after",e.size/2-m[m.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map(e=>e+t),e.slidesGrid=e.slidesGrid.map(e=>e+s)}if(c!==l&&e.emit("slidesLengthChange"),p.length!==S&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==T&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);c<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach(e=>{s.push(e)});else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i=0?o=parseFloat(o.replace("%",""))/100*t.size:"string"==typeof o&&(o=parseFloat(o));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],m=u>=0&&u1&&h<=t.size||u<=0&&h>=t.size;m&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e)),k(l,m,s.slideVisibleClass),k(l,f,s.slideFullyVisibleClass),l.progress=r?-c:c,l.originalProgress=r?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:o}=t;const l=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,o=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=o||r>=1,s&&(r=0),o&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],l=Math.abs(e);o=l>=r?(l-r)/a:(l+a-n)/a,o>1&&(o-=1)}Object.assign(t,{progress:r,progressLoop:o,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!l&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(l&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,o=e=>f(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let l,d,c;if(n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),l=o(`[data-swiper-slide-index="${t}"]`)}else l=o(`[data-swiper-slide-index="${r}"]`);else a?(l=t.find(e=>e.column===r),c=t.find(e=>e.column===r+1),d=t.find(e=>e.column===r-1)):l=t[r];l&&(a||(c=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach(e=>{L(e,e===l,s.slideActiveClass),L(e,e===c,s.slideNextClass),L(e,e===d,s.slidePrevClass)}),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:o}=t;let l,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let r;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}(t)),i.indexOf(s)>=0)l=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);l=e+Math.floor((d-e)/r.slidesPerGroup)}if(l>=i.length&&(l=i.length-1),d===n&&!t.params.loop)return void(l!==o&&(t.snapIndex=l,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled)u=r.loop?c(d):d;else if(p){const e=t.slides.find(e=>e.column===d);let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:o,snapIndex:l,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&I(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach(e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)});let n,a=!1;if(r)for(let e=0;el?l:i&&en?"next":r=l.length&&(g=l.length-1);const v=-l[g];if(o.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(u?v>n.translate&&v>n.minTranslate():vn.translate&&v>n.maxTranslate()&&(p||0)!==a)return!1}let b;a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(v),b=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame(()=>{f[e?"scrollLeft":"scrollTop"]=s})):f[e?"scrollLeft":"scrollTop"]=s,S&&requestAnimationFrame(()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1});else{if(!n.support.smoothScroll)return h({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;f.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}const T=P().isSafari;return S&&!r&&T&&n.isElement&&n.virtual.update(!1,!1,a),n.setTransition(t),n.setTranslate(v),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,b),0===t?n.transitionEnd(s,b):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,b))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e=0,t,s=!0,i){if("string"==typeof e){e=parseInt(e,10)}const r=this;if(r.destroyed)return;void 0===t&&(t=r.params.speed);const n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.find(e=>1*e.getAttribute("data-swiper-slide-index")===t).column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s,slidesOffsetBefore:o,slidesOffsetAfter:l}=r.params,d=s||!!o||!!l;let c=r.params.slidesPerView;"auto"===c?c=r.slidesPerViewDynamic():(c=Math.ceil(parseFloat(r.params.slidesPerView,10)),d&&c%2==0&&(c+=1));let p=t-e1*t.getAttribute("data-swiper-slide-index")===e).column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame(()=>{r.slideTo(a,t,s,i)}),r},slideNext:function(e,t=!0,s){const i=this,{enabled:r,params:n,animating:a}=i;if(!r||i.destroyed)return i;void 0===e&&(e=i.params.speed);let o=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(o=Math.max(i.slidesPerViewDynamic("current",!0),1));const l=i.activeIndex{i.slideTo(i.activeIndex+l,e,t,s)}),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+l,e,t,s)},slidePrev:function(e,t=!0,s){const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:o,enabled:l,animating:d}=i;if(!l||i.destroyed)return i;void 0===e&&(e=i.params.speed);const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(o?i.translate:-i.translate),h=n.map(e=>p(e)),f=r.freeMode&&r.freeMode.enabled;let m=n[h.indexOf(u)-1];if(void 0===m&&(r.cssMode||f)){let e;n.forEach((t,s)=>{u>=t&&(e=s)}),void 0!==e&&(m=f?n[e]:n[e>0?e-1:e])}let w=0;if(void 0!==m&&(w=a.indexOf(m),w<0&&(w=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(w=w-i.slidesPerViewDynamic("previous",!0)+1,w=Math.max(w,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame(()=>{i.slideTo(w,e,t,s)}),!0):i.slideTo(w,e,t,s)},slideReset:function(e,t=!0,s){const i=this;if(!i.destroyed)return void 0===e&&(e=i.params.speed),i.slideTo(i.activeIndex,e,t,s)},slideToClosest:function(e,t=!0,s,i=.5){const r=this;if(r.destroyed)return;void 0===e&&(e=r.params.speed);let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),o=a+Math.floor((n-a)/r.params.slidesPerGroup),l=r.rtlTranslate?r.translate:-r.translate;if(l>=r.snapGrid[o]){const e=r.snapGrid[o];l-e>(r.snapGrid[o+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[o-1];l-e<=(r.snapGrid[o]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.getSlideIndexWhenGrid(e.clickedIndex);const o=e.isElement?"swiper-slide":`.${t.slideClass}`,l=e.grid&&e.params.grid&&e.params.grid.rows>1;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?e.slideToLoop(r):n>(l?(e.slides.length-i)/2-(e.params.grid.rows-1):e.slides.length-i)?(e.loopFix(),n=e.getSlideIndex(f(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a(()=>{e.slideTo(n)})):e.slideTo(n)}else e.slideTo(n)}};var V={loopCreate:function(e,t){const s=this,{params:i,slidesEl:r}=s;if(!i.loop||s.virtual&&s.params.virtual.enabled)return;const n=()=>{f(r,`.${i.slideClass}, swiper-slide`).forEach((e,t)=>{e.setAttribute("data-swiper-slide-index",t)})},a=s.grid&&i.grid&&i.grid.rows>1;i.loopAddBlankSlides&&(i.slidesPerGroup>1||a)&&(()=>{const e=f(r,`.${i.slideBlankClass}`);e.forEach(e=>{e.remove()}),e.length>0&&(s.recalcSlides(),s.updateSlides())})();const o=i.slidesPerGroup*(a?i.grid.rows:1),l=s.slides.length%o!==0,d=a&&s.slides.length%i.grid.rows!==0,c=e=>{for(let t=0;t1;d.lengthe.classList.contains(h.slideActiveClass))):k=r;const L="next"===s||!s,z="prev"===s||!s;let O=0,I=0;const _=(x?d[r].column:r)+(b&&void 0===i?-S/2+.5:0);if(_=0;t-=1)d[t].column===e&&E.push(t)}else E.push(P-t-1)}}else if(_+S>P-y){I=Math.max(_-(P-2*y),T),C&&(I=Math.max(I,S-P+v+1));for(let e=0;e{e.column===t&&M.push(s)}):M.push(t)}}if(l.__preventObserver__=!0,requestAnimationFrame(()=>{l.__preventObserver__=!1}),"cards"===l.params.effect&&d.length{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1}),L&&M.forEach(e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1}),l.recalcSlides(),"auto"===h.slidesPerView?l.updateSlides():x&&(E.length>0&&z||M.length>0&&L)&&l.slides.forEach((e,t)=>{l.grid.updateSlide(t,e,l.slides)}),h.watchSlidesProgress&&l.updateSlidesOffset(),t)if(E.length>0&&z){if(void 0===e){const e=l.slidesGrid[k],t=l.slidesGrid[k+O]-e;o?l.setTranslate(l.translate-t):(l.slideTo(k+Math.ceil(O),0,!1,!0),i&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else if(i){const e=x?E.length/h.grid.rows:E.length;l.slideTo(l.activeIndex+e,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(M.length>0&&L)if(void 0===e){const e=l.slidesGrid[k],t=l.slidesGrid[k-I]-e;o?l.setTranslate(l.translate-t):(l.slideTo(k-I,0,!1,!0),i&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else{const e=x?M.length/h.grid.rows:M.length;l.slideTo(l.activeIndex-e,0,!1,!0)}if(l.allowSlidePrev=c,l.allowSlideNext=p,l.controller&&l.controller.control&&!a){const n={slideRealIndex:e,direction:s,setTranslate:i,activeSlideIndex:r,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach(e=>{!e.destroyed&&e.params.loop&&e.loopFix({...n,slideTo:e.params.slidesPerView===h.slidesPerView&&t})}):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...n,slideTo:l.controller.control.params.slidesPerView===h.slidesPerView&&t})}l.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||!s||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach(e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e}),e.slides.forEach(e=>{e.removeAttribute("data-swiper-slide-index")}),i.forEach(e=>{s.append(e)}),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function B(e,t,s){const i=n(),{params:r}=e,a=r.edgeSwipeDetection,o=r.edgeSwipeThreshold;return!a||!(s<=o||s>=i.innerWidth-o)||"prevent"===a&&(t.preventDefault(),!0)}function N(e){const t=this,s=i();let r=e;r.originalEvent&&(r=r.originalEvent);const a=t.touchEventsData;if("pointerdown"===r.type){if(null!==a.pointerId&&a.pointerId!==r.pointerId)return;a.pointerId=r.pointerId}else"touchstart"===r.type&&1===r.targetTouches.length&&(a.touchId=r.targetTouches[0].identifier);if("touchstart"===r.type)return void B(t,r,r.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===r.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=r.target;if("wrapper"===l.touchEventsTarget&&!function(e,t){const s=n();let i=t.contains(e);!i&&s.HTMLSlotElement&&t instanceof HTMLSlotElement&&(i=[...t.assignedElements()].includes(e),i||(i=function(e,t){const s=[t];for(;s.length>0;){const t=s.shift();if(e===t)return!0;s.push(...t.children,...t.shadowRoot?t.shadowRoot.children:[],...t.assignedElements?t.assignedElements():[])}}(e,t)));return i}(p,t.wrapperEl))return;if("which"in r&&3===r.which)return;if("button"in r&&r.button>0)return;if(a.isTouched&&a.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,h=r.composedPath?r.composedPath():r.path;u&&r.target&&r.target.shadowRoot&&h&&(p=h[0]);const f=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,m=!(!r.target||!r.target.shadowRoot);if(l.noSwiping&&(m?function(e,t=this){return function t(s){if(!s||s===i()||s===n())return null;s.assignedSlot&&(s=s.assignedSlot);const r=s.closest(e);return r||s.getRootNode?r||t(s.getRootNode().host):null}(t)}(f,p):p.closest(f)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=r.pageX,d.currentY=r.pageY;const w=d.currentX,g=d.currentY;if(!B(t,r,w))return;Object.assign(a,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=w,d.startY=g,a.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(a.allowThresholdMove=!1);let v=!0;p.matches(a.focusableElements)&&(v=!1,"SELECT"===p.nodeName&&(a.isTouched=!1)),s.activeElement&&s.activeElement.matches(a.focusableElements)&&s.activeElement!==p&&("mouse"===r.pointerType||"mouse"!==r.pointerType&&!p.matches(a.focusableElements))&&s.activeElement.blur();const b=v&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||p.isContentEditable||r.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",r)}function $(e){const t=i(),s=this,r=s.touchEventsData,{params:n,touches:a,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!n.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==r.touchId)return;if(p.pointerId!==r.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].find(e=>e.identifier===r.touchId),!c||c.identifier!==r.touchId)return}else c=p;if(!r.isTouched)return void(r.startMoving&&r.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,h=c.pageY;if(p.preventedByNestedSwiper)return a.startX=u,void(a.startY=h);if(!s.allowTouchMove)return p.target.matches(r.focusableElements)||(s.allowClick=!1),void(r.isTouched&&(Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h}),r.touchStartTime=o()));if(n.touchReleaseOnEdges&&!n.loop)if(s.isVertical()){if(ha.startY&&s.translate>=s.minTranslate())return r.isTouched=!1,void(r.isMoved=!1)}else{if(l&&(u>a.startX&&-s.translate<=s.maxTranslate()||u=s.minTranslate()))return;if(!l&&(ua.startX&&s.translate>=s.minTranslate()))return}if(t.activeElement&&t.activeElement.matches(r.focusableElements)&&t.activeElement!==p.target&&"mouse"!==p.pointerType&&t.activeElement.blur(),t.activeElement&&p.target===t.activeElement&&p.target.matches(r.focusableElements))return r.isMoved=!0,void(s.allowClick=!1);r.allowTouchCallbacks&&s.emit("touchMove",p),a.previousX=a.currentX,a.previousY=a.currentY,a.currentX=u,a.currentY=h;const f=a.currentX-a.startX,m=a.currentY-a.startY;if(s.params.threshold&&Math.sqrt(f**2+m**2)=25&&(e=180*Math.atan2(Math.abs(m),Math.abs(f))/Math.PI,r.isScrolling=s.isHorizontal()?e>n.touchAngle:90-e>n.touchAngle)}if(r.isScrolling&&s.emit("touchMoveOpposite",p),void 0===r.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(r.startMoving=!0)),r.isScrolling||"touchmove"===p.type&&r.preventTouchMoveFromPointerMove)return void(r.isTouched=!1);if(!r.startMoving)return;s.allowClick=!1,!n.cssMode&&p.cancelable&&p.preventDefault(),n.touchMoveStopPropagation&&!n.nested&&p.stopPropagation();let w=s.isHorizontal()?f:m,g=s.isHorizontal()?a.currentX-a.previousX:a.currentY-a.previousY;n.oneWayMovement&&(w=Math.abs(w)*(l?1:-1),g=Math.abs(g)*(l?1:-1)),a.diff=w,w*=n.touchRatio,l&&(w=-w,g=-g);const v=s.touchesDirection;s.swipeDirection=w>0?"prev":"next",s.touchesDirection=g>0?"prev":"next";const b=s.params.loop&&!n.cssMode,S="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!r.isMoved){if(b&&S&&s.loopFix({direction:s.swipeDirection}),r.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}r.allowMomentumBounce=!1,!n.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),!1!==n._loopSwapReset&&r.isMoved&&r.allowThresholdMove&&v!==s.touchesDirection&&b&&S&&Math.abs(w)>=1)return Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h,startTranslate:r.currentTranslate}),r.loopSwapReset=!0,void(r.startTranslate=r.currentTranslate);s.emit("sliderMove",p),r.isMoved=!0,r.currentTranslate=w+r.startTranslate;let T=!0,y=n.resistanceRatio;if(n.touchReleaseOnEdges&&(y=0),w>0?(b&&S&&r.allowThresholdMove&&r.currentTranslate>(n.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]-("auto"!==n.slidesPerView&&s.slides.length-n.slidesPerView>=2?s.slidesSizesGrid[s.activeIndex+1]+s.params.spaceBetween:0)-s.params.spaceBetween:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),r.currentTranslate>s.minTranslate()&&(T=!1,n.resistance&&(r.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+r.startTranslate+w)**y))):w<0&&(b&&S&&r.allowThresholdMove&&r.currentTranslate<(n.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]+s.params.spaceBetween+("auto"!==n.slidesPerView&&s.slides.length-n.slidesPerView>=2?s.slidesSizesGrid[s.slidesSizesGrid.length-1]+s.params.spaceBetween:0):s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===n.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(n.slidesPerView,10)))}),r.currentTranslater.startTranslate&&(r.currentTranslate=r.startTranslate),s.allowSlidePrev||s.allowSlideNext||(r.currentTranslate=r.startTranslate),n.threshold>0){if(!(Math.abs(w)>n.threshold||r.allowThresholdMove))return void(r.currentTranslate=r.startTranslate);if(!r.allowThresholdMove)return r.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,r.currentTranslate=r.startTranslate,void(a.diff=s.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}n.followFinger&&!n.cssMode&&((n.freeMode&&n.freeMode.enabled&&s.freeMode||n.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),n.freeMode&&n.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(r.currentTranslate),s.setTranslate(r.currentTranslate))}function F(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].find(e=>e.identifier===s.touchId),!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:l,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),h=u-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),h<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=o(),a(()=>{t.destroyed||(t.allowClick=!0)}),!s.isTouched||!s.isMoved||!t.swipeDirection||0===l.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let f;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,f=n.followFinger?d?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:f});const m=f>=-t.maxTranslate()&&!t.params.loop;let w=0,g=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&f=c[e])&&(w=e,g=c[c.length-1]-c[c.length-2])}let v=null,b=null;n.rewind&&(t.isBeginning?b=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(v=0));const S=(f-c[w])/g,T=wn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(S>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?v:w+T):t.slideTo(w)),"prev"===t.swipeDirection&&(S>1-n.longSwipesRatio?t.slideTo(w+T):null!==b&&S<0&&Math.abs(S)>n.longSwipesRatio?t.slideTo(b):t.slideTo(w))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(w+T):t.slideTo(w):("next"===t.swipeDirection&&t.slideTo(null!==v?v:w+T),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:w))}}function R(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const o=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout(()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()},500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function j(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function H(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function W(e){const t=this;z(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function q(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const X=(e,t)=>{const s=i(),{params:r,el:n,wrapperEl:a,device:o}=e,l=!!r.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;n&&"string"!=typeof n&&(s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),n[d]("touchstart",e.onTouchStart,{passive:!1}),n[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(r.preventClicks||r.preventClicksPropagation)&&n[d]("click",e.onClick,!0),r.cssMode&&a[d]("scroll",e.onScroll),r.updateOnWindowResize?e[c](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",R,!0):e[c]("observerUpdate",R,!0),n[d]("load",e.onLoad,{capture:!0}))};const Y=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var U={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,snapToSlideEdge:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function K(e,t){return function(s={}){const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),p(t,s)):p(t,s)):p(t,s)}}const Z={eventsEmitter:C,update:_,translate:A,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e=!0,t){const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),G({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e=!0,t){const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),G({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:D,loop:V,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame(()=>{t.__preventObserver__=!1})},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame(()=>{e.__preventObserver__=!1}))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=N.bind(e),e.onTouchMove=$.bind(e),e.onTouchEnd=F.bind(e),e.onDocumentTouchStart=q.bind(e),t.cssMode&&(e.onScroll=H.bind(e)),e.onClick=j.bind(e),e.onLoad=W.bind(e),X(e,"on")},detachEvents:function(){X(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:r,el:n}=e,a=r.breakpoints;if(!a||a&&0===Object.keys(a).length)return;const o=i(),l="window"!==r.breakpointsBase&&r.breakpointsBase?"container":r.breakpointsBase,d=["window","container"].includes(r.breakpointsBase)||!r.breakpointsBase?e.el:o.querySelector(r.breakpointsBase),c=e.getBreakpoint(a,l,d);if(!c||e.currentBreakpoint===c)return;const u=(c in a?a[c]:void 0)||e.originalParams,h=Y(e,r),f=Y(e,u),m=e.params.grabCursor,w=u.grabCursor,g=r.enabled;h&&!f?(n.classList.remove(`${r.containerModifierClass}grid`,`${r.containerModifierClass}grid-column`),e.emitContainerClasses()):!h&&f&&(n.classList.add(`${r.containerModifierClass}grid`),(u.grid.fill&&"column"===u.grid.fill||!u.grid.fill&&"column"===r.grid.fill)&&n.classList.add(`${r.containerModifierClass}grid-column`),e.emitContainerClasses()),m&&!w?e.unsetGrabCursor():!m&&w&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach(t=>{if(void 0===u[t])return;const s=r[t]&&r[t].enabled,i=u[t]&&u[t].enabled;s&&!i&&e[t].disable(),!s&&i&&e[t].enable()});const v=u.direction&&u.direction!==r.direction,b=r.loop&&(u.slidesPerView!==r.slidesPerView||v),S=r.loop;v&&s&&e.changeDirection(),p(e.params,u);const T=e.params.enabled,y=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),g&&!T?e.disable():!g&&T&&e.enable(),e.currentBreakpoint=c,e.emit("_beforeBreakpoint",u),s&&(b?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!S&&y?(e.loopCreate(t),e.updateSlides()):S&&!y&&e.loopDestroy()),e.emit("breakpoint",u)},getBreakpoint:function(e,t="window",s){if(!e||"container"===t&&!s)return;let i=!1;const r=n(),a="window"===t?r.innerHeight:s.clientHeight,o=Object.keys(e).map(e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:a*t,point:e}}return{value:e,point:e}});o.sort((e,t)=>parseInt(e.value,10)-parseInt(t.value,10));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=function(e,t){const s=[];return e.forEach(e=>{"object"==typeof e?Object.keys(e).forEach(i=>{e[i]&&s.push(t+i)}):"string"==typeof e&&s.push(t+e)}),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},J={};class Q{constructor(...e){let t,s;1===e.length&&e[0].constructor&&"Object"===Object.prototype.toString.call(e[0]).slice(8,-1)?s=e[0]:[t,s]=e,s||(s={}),s=p({},s),t&&!s.el&&(s.el=t);const r=i();if(s.el&&"string"==typeof s.el&&r.querySelectorAll(s.el).length>1){const e=[];return r.querySelectorAll(s.el).forEach(t=>{const i=p({},s,{el:t});e.push(new Q(i))}),e}const n=this;n.__swiper__=!0,n.support=E(),n.device=M({userAgent:s.userAgent}),n.browser=P(),n.eventsListeners={},n.eventsAnyListeners=[],n.modules=[...n.__modules__],s.modules&&Array.isArray(s.modules)&&s.modules.forEach(e=>{"function"==typeof e&&n.modules.indexOf(e)<0&&n.modules.push(e)});const a={};n.modules.forEach(e=>{e({params:s,swiper:n,extendParams:K(s,a),on:n.on.bind(n),once:n.once.bind(n),off:n.off.bind(n),emit:n.emit.bind(n)})});const o=p({},U,a);return n.params=p({},o,J,s),n.originalParams=p({},n.params),n.passedParams=p({},s),n.params&&n.params.on&&Object.keys(n.params.on).forEach(e=>{n.on(e,n.params.on[e])}),n.params&&n.params.onAny&&n.onAny(n.params.onAny),Object.assign(n,{enabled:n.params.enabled,el:t,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===n.params.direction,isVertical:()=>"vertical"===n.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:n.params.allowSlideNext,allowSlidePrev:n.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:n.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:n.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),n.emit("_swiper"),n.params.init&&n.init(),n}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=v(f(t,`.${s.slideClass}, swiper-slide`)[0]);return v(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.find(t=>1*t.getAttribute("data-swiper-slide-index")===e))}getSlideIndexWhenGrid(e){return this.grid&&this.params.grid&&this.params.grid.rows>1&&("column"===this.params.grid.fill?e=Math.floor(e/this.params.grid.rows):"row"===this.params.grid.fill&&(e%=Math.ceil(this.slides.length/this.params.grid.rows))),e}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=f(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter(t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter(e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass)).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach(s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)}),e.emit("_slideClasses",t)}slidesPerViewDynamic(e="current",t=!1){const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:o}=this;let l=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[o]?Math.ceil(i[o].swiperSlideSize):0;for(let s=o+1;sa&&(e=!0));for(let s=o-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,l+=1,t>a&&(e=!0))}else if("current"===e)for(let e=o+1;e=0;e-=1){r[o]-r[e]{t.complete&&z(e,t)}),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t=!0){const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach(t=>{"vertical"===e?t.style.width="":t.style.height=""}),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return f(s,i())[0]})();return!r&&t.params.createElements&&(r=w("div",t.params.wrapperClass),s.append(r),f(s,`.${t.params.slideClass}`).forEach(e=>{r.append(e)})),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===g(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===g(s,"direction")),wrongRTL:"-webkit-box"===g(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(void 0,!0),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach(e=>{e.complete?z(t,e):e.addEventListener("load",e=>{z(t,e.target)})}),I(t),t.initialized=!0,I(t),t.emit("init"),t.emit("afterInit"),t}destroy(e=!0,t=!0){const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r&&"string"!=typeof r&&r.removeAttribute("style"),n&&n.removeAttribute("style"),a&&a.length&&a.forEach(e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")})),s.emit("destroy"),Object.keys(s.eventsListeners).forEach(e=>{s.off(e)}),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),function(e){const t=e;Object.keys(t).forEach(e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}})}(s)),s.destroyed=!0),null}static extendDefaults(e){p(J,e)}static get extendedDefaults(){return J}static get defaults(){return U}static installModule(e){Q.prototype.__modules__||(Q.prototype.__modules__=[]);const t=Q.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach(e=>Q.installModule(e)),Q):(Q.installModule(e),Q)}}Object.keys(Z).forEach(e=>{Object.keys(Z[e]).forEach(t=>{Q.prototype[t]=Z[e][t]})}),Q.use([function({swiper:e,on:t,emit:s}){const i=n();let r=null,a=null;const o=()=>{e&&!e.destroyed&&e.initialized&&(s("beforeResize"),s("resize"))},l=()=>{e&&!e.destroyed&&e.initialized&&s("orientationchange")};t("init",()=>{e.params.resizeObserver&&void 0!==i.ResizeObserver?e&&!e.destroyed&&e.initialized&&(r=new ResizeObserver(t=>{a=i.requestAnimationFrame(()=>{const{width:s,height:i}=e;let r=s,n=i;t.forEach(({contentBoxSize:t,contentRect:s,target:i})=>{i&&i!==e.el||(r=s?s.width:(t[0]||t).inlineSize,n=s?s.height:(t[0]||t).blockSize)}),r===s&&n===i||o()})}),r.observe(e.el)):(i.addEventListener("resize",o),i.addEventListener("orientationchange",l))}),t("destroy",()=>{a&&i.cancelAnimationFrame(a),r&&r.unobserve&&e.el&&(r.unobserve(e.el),r=null),i.removeEventListener("resize",o),i.removeEventListener("orientationchange",l)})},function({swiper:e,extendParams:t,on:s,emit:i}){const r=[],a=n(),o=(t,s={})=>{const n=new(a.MutationObserver||a.WebkitMutationObserver)(t=>{if(e.__preventObserver__)return;if(1===t.length)return void i("observerUpdate",t[0]);const s=function(){i("observerUpdate",t[0])};a.requestAnimationFrame?a.requestAnimationFrame(s):a.setTimeout(s,0)});n.observe(t,{attributes:void 0===s.attributes||s.attributes,childList:e.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),r.push(n)};t({observer:!1,observeParents:!1,observeSlideChildren:!1}),s("init",()=>{if(e.params.observer){if(e.params.observeParents){const t=function(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}(e.hostEl);for(let e=0;e{r.forEach(e=>{e.disconnect()}),r.splice(0,r.length)})}]);const ee=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","swiperElementNodeName","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_snapToSlideEdge","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function te(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function se(e,t){const s=["__proto__","constructor","prototype"];Object.keys(t).filter(e=>s.indexOf(e)<0).forEach(s=>{void 0===e[s]?e[s]=t[s]:te(t[s])&&te(e[s])&&Object.keys(t[s]).length>0?t[s].__swiper__?e[s]=t[s]:se(e[s],t[s]):e[s]=t[s]})}function ie(e=""){return e.replace(/-[a-z]/g,e=>e.toUpperCase().replace("-",""))}const re=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let t;try{t=JSON.parse(e)}catch(s){t=e}return t}return e}},ne=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function ae(e,t,s){const i={},r={};se(i,U);const n=[...ee,"on"],a=n.map(e=>e.replace(/_/,""));n.forEach(t=>{t=t.replace("_",""),void 0!==e[t]&&(r[t]=e[t])});const o=[...e.attributes];return"string"==typeof t&&void 0!==s&&o.push({name:t,value:te(s)?{...s}:s}),o.forEach(e=>{const t=ne.find(t=>e.name.startsWith(`${t}-`));if(t){const s=ie(t),i=ie(e.name.split(`${t}-`)[1]);void 0===r[s]&&(r[s]={}),!0===r[s]&&(r[s]={enabled:!0}),!1===r[s]&&(r[s]={enabled:!1}),r[s][i]=re(e.value)}else{const t=ie(e.name);if(!a.includes(t))return;const s=re(e.value);r[t]&&ne.includes(e.name)&&!te(s)?(r[t].constructor!==Object&&(r[t]={}),r[t].enabled=!!s):r[t]=s}}),se(i,r),i.navigation?i.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==i.navigation?i.navigation:{}}:!1===i.navigation&&delete i.navigation,i.scrollbar?i.scrollbar={el:".swiper-scrollbar",...!0!==i.scrollbar?i.scrollbar:{}}:!1===i.scrollbar&&delete i.scrollbar,i.pagination?i.pagination={el:".swiper-pagination",...!0!==i.pagination?i.pagination:{}}:!1===i.pagination&&delete i.pagination,{params:i,passedParams:r}}const oe=':host{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;height:100%;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;padding:0;position:relative;width:100%;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:initial;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}.swiper-css-mode.swiper-horizontal ::slotted(swiper-slide):last-child{margin-inline-end:var(--swiper-slides-offset-after)}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}.swiper-css-mode.swiper-vertical ::slotted(swiper-slide):last-child{margin-block-end:var(--swiper-slides-offset-after)}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}';const le="undefined"==typeof window||"undefined"==typeof HTMLElement?class{}:HTMLElement,de=(e,t)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const s=new CSSStyleSheet;s.replaceSync(t),e.adoptedStyleSheets=[s]}else{const s=document.createElement("style");s.rel="stylesheet",s.textContent=t,e.appendChild(s)}};class ce extends le{constructor(){super(),this.attachShadow({mode:"open"})}cssStyles(){return[oe,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,t=[...this.querySelectorAll("[slot^=slide-]")].map(e=>parseInt(e.getAttribute("slot").split("slide-")[1],10));if(this.slideSlots=t.length?Math.max(...t)+1:0,this.rendered)if(this.slideSlots>e)for(let t=e;t=0;t-=1)t>this.slideSlots&&e[t].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&de(this.shadowRoot,e),this.cssLinks().forEach(e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const t=document.createElement("link");t.rel="stylesheet",t.href=e,this.shadowRoot.appendChild(t)});const t=document.createElement("div");t.classList.add("swiper"),t.part="container",S(t,`\n \n
\n \n ${Array.from({length:this.slideSlots}).map((e,t)=>`\n \n \n \n `).join("")}\n
\n \n ${function(e={}){return e.navigation&&void 0===e.navigation.nextEl&&void 0===e.navigation.prevEl}(this.passedParams)?'\n
\n
\n ':""}\n ${function(e={}){return e.pagination&&void 0===e.pagination.el}(this.passedParams)?'\n
\n ':""}\n ${function(e={}){return e.scrollbar&&void 0===e.scrollbar.el}(this.passedParams)?'\n
\n ':""}\n `),this.shadowRoot.appendChild(t),this.rendered=!0}initialize(){if(this.swiper&&this.swiper.initialized)return;const{params:e,passedParams:t}=ae(this);this.swiperParams=e,this.passedParams=t,delete this.swiperParams.init,this.render(),this.swiper=new Q(this.shadowRoot.querySelector(".swiper"),{...e.virtual?{}:{observer:!0},...e,touchEventsTarget:"container",onAny:(t,...s)=>{"observerUpdate"===t&&this.calcSlideSlots();const i=e.eventsPrefix?`${e.eventsPrefix}${t.toLowerCase()}`:t.toLowerCase(),r=new CustomEvent(i,{detail:s,bubbles:"hashChange"!==t,cancelable:!0});this.dispatchEvent(r)}})}connectedCallback(){this.swiper&&this.swiper.initialized&&this.nested&&this.closest("swiper-slide")&&this.closest("swiper-slide").swiperLoopMoveDOM||!1!==this.init&&"false"!==this.getAttribute("init")&&this.initialize()}disconnectedCallback(){this.nested&&this.closest("swiper-slide")&&this.closest("swiper-slide").swiperLoopMoveDOM||this.swiper&&this.swiper.destroy&&this.swiper.destroy()}updateSwiperOnPropChange(e,t){const{params:s,passedParams:i}=ae(this,e,t);this.passedParams=i,this.swiperParams=s,this.swiper&&this.swiper.params[e]===t||function({swiper:e,slides:t,passedParams:s,changedParams:i,nextEl:r,prevEl:n,scrollbarEl:a,paginationEl:o}){const l=i.filter(e=>"children"!==e&&"direction"!==e&&"wrapperClass"!==e),{params:d,pagination:c,navigation:p,scrollbar:u,virtual:h,thumbs:f}=e;let m,w,g,v,b,T,y,x;i.includes("thumbs")&&s.thumbs&&s.thumbs.swiper&&!s.thumbs.swiper.destroyed&&d.thumbs&&(!d.thumbs.swiper||d.thumbs.swiper.destroyed)&&(m=!0),i.includes("controller")&&s.controller&&s.controller.control&&d.controller&&!d.controller.control&&(w=!0),i.includes("pagination")&&s.pagination&&(s.pagination.el||o)&&(d.pagination||!1===d.pagination)&&c&&!c.el&&(g=!0),i.includes("scrollbar")&&s.scrollbar&&(s.scrollbar.el||a)&&(d.scrollbar||!1===d.scrollbar)&&u&&!u.el&&(v=!0),i.includes("navigation")&&s.navigation&&(s.navigation.prevEl||n)&&(s.navigation.nextEl||r)&&(d.navigation||!1===d.navigation)&&p&&!p.prevEl&&!p.nextEl&&(b=!0);const E=t=>{e[t]&&(e[t].destroy(),"navigation"===t?(e.isElement&&(e[t].prevEl.remove(),e[t].nextEl.remove()),d[t].prevEl=void 0,d[t].nextEl=void 0,e[t].prevEl=void 0,e[t].nextEl=void 0):(e.isElement&&e[t].el.remove(),d[t].el=void 0,e[t].el=void 0))};i.includes("loop")&&e.isElement&&(d.loop&&!s.loop?T=!0:!d.loop&&s.loop?y=!0:x=!0),l.forEach(e=>{if(te(d[e])&&te(s[e]))Object.assign(d[e],s[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in s[e])||s[e].enabled||E(e);else{const t=s[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?d[e]=s[e]:!1===t&&E(e)}}),l.includes("controller")&&!w&&e.controller&&e.controller.control&&d.controller&&d.controller.control&&(e.controller.control=d.controller.control),i.includes("children")&&t&&h&&d.virtual.enabled?(h.slides=t,h.update(!0)):i.includes("virtual")&&h&&d.virtual.enabled&&(t&&(h.slides=t),h.update(!0)),i.includes("children")&&t&&d.loop&&(x=!0),m&&f.init()&&f.update(!0);w&&(e.controller.control=d.controller.control),g&&(!e.isElement||o&&"string"!=typeof o||((o=document.createElement("div")).classList.add("swiper-pagination"),o.part.add("pagination"),e.el.appendChild(o)),o&&(d.pagination.el=o),c.init(),c.render(),c.update()),v&&(!e.isElement||a&&"string"!=typeof a||((a=document.createElement("div")).classList.add("swiper-scrollbar"),a.part.add("scrollbar"),e.el.appendChild(a)),a&&(d.scrollbar.el=a),u.init(),u.updateSize(),u.setTranslate()),b&&(e.isElement&&(r&&"string"!=typeof r||((r=document.createElement("div")).classList.add("swiper-button-next"),S(r,e.navigation.arrowSvg),r.part.add("button-next"),e.el.appendChild(r)),n&&"string"!=typeof n||((n=document.createElement("div")).classList.add("swiper-button-prev"),S(n,e.navigation.arrowSvg),n.part.add("button-prev"),e.el.appendChild(n))),r&&(d.navigation.nextEl=r),n&&(d.navigation.prevEl=n),p.init(),p.update()),i.includes("allowSlideNext")&&(e.allowSlideNext=s.allowSlideNext),i.includes("allowSlidePrev")&&(e.allowSlidePrev=s.allowSlidePrev),i.includes("direction")&&e.changeDirection(s.direction,!1),(T||x)&&e.loopDestroy(),(y||x)&&e.loopCreate(),e.update()}({swiper:this.swiper,passedParams:this.passedParams,changedParams:[ie(e)],..."navigation"===e&&i[e]?{prevEl:".swiper-button-prev",nextEl:".swiper-button-next"}:{},..."pagination"===e&&i[e]?{paginationEl:".swiper-pagination"}:{},..."scrollbar"===e&&i[e]?{scrollbarEl:".swiper-scrollbar"}:{}})}attributeChangedCallback(e,t,s){this.swiper&&this.swiper.initialized&&("true"===t&&null===s&&(s=!1),this.updateSwiperOnPropChange(e,s))}static get observedAttributes(){return ee.filter(e=>e.includes("_")).map(e=>e.replace(/[A-Z]/g,e=>`-${e}`).replace("_","").toLowerCase())}}ee.forEach(e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(ce.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(t){this.passedParams||(this.passedParams={}),this.passedParams[e]=t,this.swiper&&this.swiper.initialized&&this.updateSwiperOnPropChange(e,t)}}))});class pe extends le{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(de(this.shadowRoot,"::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}::slotted(.swiper-slide-shadow){background:#00000026}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(270deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(90deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(0deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(180deg,#00000080,#0000)}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid #0000;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){backface-visibility:hidden;z-index:0}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){backface-visibility:hidden;z-index:0}::slotted(.swiper-zoom-container){align-items:center;display:flex;height:100%;justify-content:center;text-align:center;width:100%}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-height:100%;max-width:100%;object-fit:contain}"),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.swiperLoopMoveDOM||this.initialize()}}"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{ee.push(...e)}),"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",ce),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",pe))}(); +//# sourceMappingURL=swiper-element.min.js.map \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper-element.min.js.map b/vendor/javascript/swiper/swiper-element.min.js.map new file mode 100644 index 0000000..1c95925 --- /dev/null +++ b/vendor/javascript/swiper/swiper-element.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element.js.js","names":["isObject$2","obj","constructor","Object","extend$2","target","src","noExtend","keys","filter","key","indexOf","forEach","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject$1","o","prototype","call","slice","isNode","node","HTMLElement","nodeType","extend$1","args","to","i","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","undefined","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","showWarning","text","console","warn","err","tag","classes","classList","add","Array","isArray","trim","c","classesToTokens","elementStyle","prop","elementIndex","child","previousSibling","elementOuterSize","size","includeMargins","offsetWidth","setInnerHTML","html","trustedTypes","innerHTML","createPolicy","createHTML","s","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","unshift","toggleSlideClasses$1","slideEl","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","lazyPreloaderManaged","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","swiperSize","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slidesPerViewAutoSlideSize","roundLengths","floor","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","isFractionalSlidesPerView","shouldSnapToSlideEdge","snapToSlideEdge","lastAllowedSnapIndex","minVisibleSlides","accumulatedSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","find","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","e","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","bothDirections","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","isFreeMode","freeMode","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","getSlideIndexWhenGrid","slideSelector","isGrid","getSlideIndex","loopCreate","loopAddBlankSlides","slideBlankClass","recalcSlides","clearBlankSlides","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","append","byMousewheel","loopedSlides","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isInitialOverflow","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","parent","isChild","slot","elementsQueue","elementToCheck","elementIsChildOfSlot","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","_loopSwapReset","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpointContainer","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parentElement","elementParents","disconnect","paramsList","isObject","extend","attrToProp","attrName","l","formatValue","JSON","parse","modulesParamsList","getParams","propName","propValue","localParamsList","allowedParams","paramName","attrsList","name","attr","moduleParam","mParam","startsWith","parentObjName","subObjName","scrollbar","pagination","SwiperCSS","ClassToExtend","addStyle","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","rel","textContent","appendChild","SwiperContainer","super","attachShadow","mode","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","rendered","slotEl","render","localStyles","linkEl","part","needsNavigation","needsPagination","needsScrollbar","initialize","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","newValue","arrowSvg","updateSwiper","attributeChangedCallback","prevValue","observedAttributes","param","defineProperty","configurable","get","set","SwiperSlide","lazy","lazyDiv","SwiperElementRegisterParams","customElements","define"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper-element.min.mjs b/vendor/javascript/swiper/swiper-element.min.mjs new file mode 100644 index 0000000..16507c9 --- /dev/null +++ b/vendor/javascript/swiper/swiper-element.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +import{S as Swiper}from"./shared/swiper-core.min.mjs";import{p as paramsList,n as needsNavigation,a as needsPagination,b as needsScrollbar,u as updateSwiper,c as attrToProp}from"./shared/update-swiper.min.mjs";import{g as getParams}from"./shared/get-element-params.min.mjs";import{s as setInnerHTML}from"./shared/utils.min.mjs";const SwiperCSS=':host{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;height:100%;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;padding:0;position:relative;width:100%;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:initial;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}.swiper-css-mode.swiper-horizontal ::slotted(swiper-slide):last-child{margin-inline-end:var(--swiper-slides-offset-after)}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}.swiper-css-mode.swiper-vertical ::slotted(swiper-slide):last-child{margin-block-end:var(--swiper-slides-offset-after)}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}',SwiperSlideCSS="::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}::slotted(.swiper-slide-shadow){background:#00000026}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(270deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(90deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(0deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(180deg,#00000080,#0000)}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid #0000;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){backface-visibility:hidden;z-index:0}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){backface-visibility:hidden;z-index:0}::slotted(.swiper-zoom-container){align-items:center;display:flex;height:100%;justify-content:center;text-align:center;width:100%}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-height:100%;max-width:100%;object-fit:contain}";class DummyHTMLElement{}const ClassToExtend="undefined"==typeof window||"undefined"==typeof HTMLElement?DummyHTMLElement:HTMLElement,addStyle=(e,s)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const i=new CSSStyleSheet;i.replaceSync(s),e.adoptedStyleSheets=[i]}else{const i=document.createElement("style");i.rel="stylesheet",i.textContent=s,e.appendChild(i)}};class SwiperContainer extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}cssStyles(){return[SwiperCSS,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,s=[...this.querySelectorAll("[slot^=slide-]")].map(e=>parseInt(e.getAttribute("slot").split("slide-")[1],10));if(this.slideSlots=s.length?Math.max(...s)+1:0,this.rendered)if(this.slideSlots>e)for(let s=e;s=0;s-=1)s>this.slideSlots&&e[s].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&addStyle(this.shadowRoot,e),this.cssLinks().forEach(e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const s=document.createElement("link");s.rel="stylesheet",s.href=e,this.shadowRoot.appendChild(s)});const s=document.createElement("div");s.classList.add("swiper"),s.part="container",setInnerHTML(s,`\n \n
\n \n ${Array.from({length:this.slideSlots}).map((e,s)=>`\n \n \n \n `).join("")}\n
\n \n ${needsNavigation(this.passedParams)?'\n
\n
\n ':""}\n ${needsPagination(this.passedParams)?'\n
\n ':""}\n ${needsScrollbar(this.passedParams)?'\n
\n ':""}\n `),this.shadowRoot.appendChild(s),this.rendered=!0}initialize(){if(this.swiper&&this.swiper.initialized)return;const{params:e,passedParams:s}=getParams(this);this.swiperParams=e,this.passedParams=s,delete this.swiperParams.init,this.render(),this.swiper=new Swiper(this.shadowRoot.querySelector(".swiper"),{...e.virtual?{}:{observer:!0},...e,touchEventsTarget:"container",onAny:(s,...i)=>{"observerUpdate"===s&&this.calcSlideSlots();const t=e.eventsPrefix?`${e.eventsPrefix}${s.toLowerCase()}`:s.toLowerCase(),r=new CustomEvent(t,{detail:i,bubbles:"hashChange"!==s,cancelable:!0});this.dispatchEvent(r)}})}connectedCallback(){this.swiper&&this.swiper.initialized&&this.nested&&this.closest("swiper-slide")&&this.closest("swiper-slide").swiperLoopMoveDOM||!1!==this.init&&"false"!==this.getAttribute("init")&&this.initialize()}disconnectedCallback(){this.nested&&this.closest("swiper-slide")&&this.closest("swiper-slide").swiperLoopMoveDOM||this.swiper&&this.swiper.destroy&&this.swiper.destroy()}updateSwiperOnPropChange(e,s){const{params:i,passedParams:t}=getParams(this,e,s);this.passedParams=t,this.swiperParams=i,this.swiper&&this.swiper.params[e]===s||updateSwiper({swiper:this.swiper,passedParams:this.passedParams,changedParams:[attrToProp(e)],..."navigation"===e&&t[e]?{prevEl:".swiper-button-prev",nextEl:".swiper-button-next"}:{},..."pagination"===e&&t[e]?{paginationEl:".swiper-pagination"}:{},..."scrollbar"===e&&t[e]?{scrollbarEl:".swiper-scrollbar"}:{}})}attributeChangedCallback(e,s,i){this.swiper&&this.swiper.initialized&&("true"===s&&null===i&&(i=!1),this.updateSwiperOnPropChange(e,i))}static get observedAttributes(){return paramsList.filter(e=>e.includes("_")).map(e=>e.replace(/[A-Z]/g,e=>`-${e}`).replace("_","").toLowerCase())}}paramsList.forEach(e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(SwiperContainer.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(s){this.passedParams||(this.passedParams={}),this.passedParams[e]=s,this.swiper&&this.swiper.initialized&&this.updateSwiperOnPropChange(e,s)}}))});class SwiperSlide extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(addStyle(this.shadowRoot,SwiperSlideCSS),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.swiperLoopMoveDOM||this.initialize()}}const register=()=>{"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",SwiperContainer),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",SwiperSlide))};"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{paramsList.push(...e)});export{SwiperContainer,SwiperSlide,register}; +//# sourceMappingURL=swiper-element.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper-element.min.mjs.map b/vendor/javascript/swiper/swiper-element.min.mjs.map new file mode 100644 index 0000000..9947210 --- /dev/null +++ b/vendor/javascript/swiper/swiper-element.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element.mjs.mjs","names":["Swiper","paramsList","needsNavigation","needsPagination","needsScrollbar","updateSwiper","attrToProp","getParams","setInnerHTML","SwiperCSS","SwiperSlideCSS","DummyHTMLElement","ClassToExtend","window","HTMLElement","addStyle","shadowRoot","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","style","document","createElement","rel","textContent","appendChild","SwiperContainer","constructor","super","this","attachShadow","mode","cssStyles","injectStyles","Array","isArray","join","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlots","slideSlotChildren","querySelectorAll","map","child","parseInt","getAttribute","split","length","Math","max","rendered","i","slideEl","setAttribute","slotEl","querySelector","slides","swiper","remove","render","localStyles","replace","forEach","url","linkEl","href","el","classList","add","part","from","_","index","passedParams","initialize","initialized","params","swiperParams","init","virtual","observer","touchEventsTarget","onAny","name","args","eventName","eventsPrefix","toLowerCase","event","CustomEvent","detail","bubbles","cancelable","dispatchEvent","connectedCallback","nested","closest","swiperLoopMoveDOM","disconnectedCallback","destroy","updateSwiperOnPropChange","propName","propValue","changedParams","prevEl","nextEl","paginationEl","scrollbarEl","attributeChangedCallback","attr","prevValue","newValue","observedAttributes","filter","param","includes","v","paramName","Object","defineProperty","prototype","configurable","get","set","value","SwiperSlide","lazy","lazyDiv","register","customElements","define","SwiperElementRegisterParams","push"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper-element.mjs b/vendor/javascript/swiper/swiper-element.mjs new file mode 100644 index 0000000..041e813 --- /dev/null +++ b/vendor/javascript/swiper/swiper-element.mjs @@ -0,0 +1,275 @@ +/** + * Swiper Custom Element 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +import { S as Swiper } from './shared/swiper-core.mjs'; +import { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs'; +import { g as getParams } from './shared/get-element-params.mjs'; +import { s as setInnerHTML } from './shared/utils.mjs'; + +/* eslint-disable spaced-comment */ + +const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;height:100%;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;padding:0;position:relative;width:100%;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:initial;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}.swiper-css-mode.swiper-horizontal ::slotted(swiper-slide):last-child{margin-inline-end:var(--swiper-slides-offset-after)}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}.swiper-css-mode.swiper-vertical ::slotted(swiper-slide):last-child{margin-block-end:var(--swiper-slides-offset-after)}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}` +const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}::slotted(.swiper-slide-shadow){background:#00000026}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(270deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(90deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(0deg,#00000080,#0000)}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(180deg,#00000080,#0000)}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid #0000;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){backface-visibility:hidden;z-index:0}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){backface-visibility:hidden;z-index:0}::slotted(.swiper-zoom-container){align-items:center;display:flex;height:100%;justify-content:center;text-align:center;width:100%}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-height:100%;max-width:100%;object-fit:contain}` + +class DummyHTMLElement {} +const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; +const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } +}; +class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + setInnerHTML(el, ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
+
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `); + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + if (this.swiper && this.swiper.initialized) return; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: (name, ...args) => { + if (name === 'observerUpdate') { + this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.swiper && this.swiper.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!(this.swiper && this.swiper.initialized)) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } +} +paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!(this.swiper && this.swiper.initialized)) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); +}); +class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + if (this.swiperLoopMoveDOM) { + return; + } + this.initialize(); + } +} + +// eslint-disable-next-line +const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); +}; +if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/vendor/javascript/swiper/swiper-react.d.ts b/vendor/javascript/swiper/swiper-react.d.ts new file mode 100644 index 0000000..f70b51a --- /dev/null +++ b/vendor/javascript/swiper/swiper-react.d.ts @@ -0,0 +1,501 @@ +import * as React from 'react'; + +import type { SwiperOptions, Swiper as SwiperClass } from './types/index.d.ts'; + +type SwiperProps = Omit< + React.HTMLAttributes, + | 'onProgress' + | 'onClick' + | 'onTouchEnd' + | 'onTouchMove' + | 'onTouchStart' + | 'onTransitionEnd' + | 'onKeyPress' + | 'onDoubleClick' + | 'onScroll' + | 'onResize' +> & + SwiperOptions & { + /** + * Swiper container tag + * + * @default 'div' + */ + tag?: string; + + /** + * Swiper wrapper tag + * + * @default 'div' + */ + wrapperTag?: string; + + /** + * Get Swiper instance + */ + onSwiper?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in when autoplay started + */ + onAutoplayStart?: (swiper: SwiperClass) => void; + /** + * Event will be fired when autoplay stopped + */ + onAutoplayStop?: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay pause + */ + onAutoplayPause?: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay resume + */ + onAutoplayResume?: (swiper: SwiperClass) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + onAutoplayTimeLeft?: (swiper: SwiperClass, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + onAutoplay?: (swiper: SwiperClass) => void;/** + * Event will be fired on window hash change + */ + onHashChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper updates the hash + */ + onHashSet?: (swiper: SwiperClass) => void;/** + * Event will be fired on key press + */ + onKeyPress?: (swiper: SwiperClass, keyCode: string) => void;/** + * Event will be fired on mousewheel scroll + */ + onScroll?: (swiper: SwiperClass, event: WheelEvent) => void;/** + * Event will be fired on navigation hide + */ + onNavigationHide?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation show + */ + onNavigationShow?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation prev button click + */ + onNavigationPrev?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation next button click + */ + onNavigationNext?: (swiper: SwiperClass) => void;/** + * Event will be fired on draggable scrollbar drag start + */ + onScrollbarDragStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + onScrollbarDragMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + onScrollbarDragEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;/** + * Event will be fired on zoom change + */ + onZoomChange?: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void;/** + * Event will be fired after pagination rendered + */ + onPaginationRender?: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + onPaginationUpdate?: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + onPaginationHide?: (swiper: SwiperClass) => void; + + /** + * Event will be fired on pagination show + */ + onPaginationShow?: (swiper: SwiperClass) => void; + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + onInit?: (swiper: SwiperClass) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + onBeforeDestroy?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + onSlidesUpdated?: (swiper: SwiperClass) => void; + /** + * Event will be fired when currently active slide is changed + */ + onSlideChange?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + onSlideChangeTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + onSlideChangeTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + onSlideNextTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + onSlideNextTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + onSlidePrevTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + onSlidePrevTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of transition. + */ + onTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after transition. + */ + onTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + onTouchStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + onTouchMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + onTouchMoveOpposite?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + onSliderMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + onTouchEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + onClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + onTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + onDoubleTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + onProgress?: (swiper: SwiperClass, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + onReachBeginning?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + onReachEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + onToEdge?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + onFromEdge?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + onSetTranslate?: (swiper: SwiperClass, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + onSetTransition?: (swiper: SwiperClass, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + onResize?: (swiper: SwiperClass) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + onObserverUpdate?: (swiper: SwiperClass) => void; + + /** + * Event will be fired right before "loop fix" + */ + onBeforeLoopFix?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after "loop fix" + */ + onLoopFix?: (swiper: SwiperClass) => void; + + /** + * Event will be fired on breakpoint change + */ + onBreakpoint?: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint?: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses?: (swiper: SwiperClass, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass?: (swiper: SwiperClass, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses?: ( + swiper: SwiperClass, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper?: (swiper: SwiperClass) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease?: (swiper: SwiperClass) => void; + + /** + * Event will fired on active index change + */ + onActiveIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired on snap index change + */ + onSnapIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired on real index change + */ + onRealIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired right after initialization + */ + onAfterInit?: (swiper: SwiperClass) => void; + /** + * Event will fired right before initialization + */ + onBeforeInit?: (swiper: SwiperClass) => void; + /** + * Event will fired before resize handler + */ + onBeforeResize?: (swiper: SwiperClass) => void; + /** + * Event will fired before slide change transition start + */ + onBeforeSlideChangeStart?: (swiper: SwiperClass) => void; + /** + * Event will fired before transition start + */ + onBeforeTransitionStart?: (swiper: SwiperClass, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + onChangeDirection?: (swiper: SwiperClass) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + onDoubleClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + onDestroy?: (swiper: SwiperClass) => void; + /** + * Event will be fired on momentum bounce + */ + onMomentumBounce?: (swiper: SwiperClass) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + onOrientationchange?: (swiper: SwiperClass) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + onSlideResetTransitionStart?: (swiper: SwiperClass) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + onSlideResetTransitionEnd?: (swiper: SwiperClass) => void; + /** + * Event will be fired with first touch/drag move + */ + onSliderFirstMove?: (swiper: SwiperClass, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + onSlidesLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when slides grid has changed + */ + onSlidesGridLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when snap grid has changed + */ + onSnapGridLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired after swiper.update() call + */ + onUpdate?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + onLock?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + onUnlock?: (swiper: SwiperClass) => void; + + }; + +interface SlideData { + isActive: boolean; + isVisible: boolean; + isPrev: boolean; + isNext: boolean; +} + +type SwiperSlideProps = Omit, 'children'> & { + /** + * Slide tag + * + * @default 'div' + */ + tag?: string; + + /** + * Enables additional wrapper required for zoom mode + * + * @default false + */ + zoom?: boolean; + + /** + * Adds lazy preloader to the slide + * + * @default false + */ + lazy?: boolean; + + /** + * Slide's index in slides array/collection + * + * @default false + */ + virtualIndex?: number; + + /** + * Slide's child element or render function + * + * @default undefined + */ + children?: React.ReactNode | ((slideData: SlideData) => React.ReactNode); +}; + +interface SwiperRef extends React.HTMLAttributes { + swiper: SwiperClass; +} + +declare const Swiper: React.FunctionComponent< + React.RefAttributes & React.PropsWithChildren +>; +declare const SwiperSlide: React.FunctionComponent; + +declare const useSwiper: () => SwiperClass; +declare const useSwiperSlide: () => SlideData; + +export { + Swiper, + SwiperSlide, + SwiperProps, + SwiperSlideProps, + SwiperRef, + useSwiper, + useSwiperSlide, + SwiperClass, +}; diff --git a/vendor/javascript/swiper/swiper-react.mjs b/vendor/javascript/swiper/swiper-react.mjs new file mode 100644 index 0000000..5b7917d --- /dev/null +++ b/vendor/javascript/swiper/swiper-react.mjs @@ -0,0 +1,398 @@ +/** + * Swiper React 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +import React, { useEffect, useLayoutEffect, useContext, createContext, forwardRef, useState, useRef } from 'react'; +import { S as Swiper$1 } from './shared/swiper-core.mjs'; +import { g as getParams, m as mountSwiper, a as getChangedParams, u as updateOnVirtualData } from './shared/update-on-virtual-data.mjs'; +import { d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination, e as extend, u as updateSwiper } from './shared/update-swiper.mjs'; + +function _extends() { + _extends = Object.assign ? Object.assign.bind() : function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + return _extends.apply(this, arguments); +} + +function isChildSwiperSlide(child) { + return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide'); +} +function processChildren(c) { + const slides = []; + React.Children.toArray(c).forEach(child => { + if (isChildSwiperSlide(child)) { + slides.push(child); + } else if (child.props && child.props.children) { + processChildren(child.props.children).forEach(slide => slides.push(slide)); + } + }); + return slides; +} +function getChildren(c) { + const slides = []; + const slots = { + 'container-start': [], + 'container-end': [], + 'wrapper-start': [], + 'wrapper-end': [] + }; + React.Children.toArray(c).forEach(child => { + if (isChildSwiperSlide(child)) { + slides.push(child); + } else if (child.props && child.props.slot && slots[child.props.slot]) { + slots[child.props.slot].push(child); + } else if (child.props && child.props.children) { + const foundSlides = processChildren(child.props.children); + if (foundSlides.length > 0) { + foundSlides.forEach(slide => slides.push(slide)); + } else { + slots['container-end'].push(child); + } + } else { + slots['container-end'].push(child); + } + }); + return { + slides, + slots + }; +} + +function renderVirtual(swiper, slides, virtualData) { + if (!virtualData) return null; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + const style = swiper.isHorizontal() ? { + [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` + } : { + top: `${virtualData.offset}px` + }; + const { + from, + to + } = virtualData; + const loopFrom = swiper.params.loop ? -slides.length : 0; + const loopTo = swiper.params.loop ? slides.length * 2 : slides.length; + const slidesToRender = []; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + slidesToRender.push(slides[getSlideIndex(i)]); + } + } + return slidesToRender.map((child, index) => { + return /*#__PURE__*/React.cloneElement(child, { + swiper, + style, + key: child.props.virtualIndex || child.key || `slide-${index}` + }); + }); +} + +function useIsomorphicLayoutEffect(callback, deps) { + // eslint-disable-next-line + if (typeof window === 'undefined') return useEffect(callback, deps); + return useLayoutEffect(callback, deps); +} + +const SwiperSlideContext = /*#__PURE__*/createContext(null); +const useSwiperSlide = () => { + return useContext(SwiperSlideContext); +}; +const SwiperContext = /*#__PURE__*/createContext(null); +const useSwiper = () => { + return useContext(SwiperContext); +}; + +const Swiper = /*#__PURE__*/forwardRef(({ + className, + tag: Tag = 'div', + wrapperTag: WrapperTag = 'div', + children, + onSwiper, + ...rest +} = {}, externalElRef) => { + let eventsAssigned = false; + const [containerClasses, setContainerClasses] = useState('swiper'); + const [virtualData, setVirtualData] = useState(null); + const [breakpointChanged, setBreakpointChanged] = useState(false); + const initializedRef = useRef(false); + const swiperElRef = useRef(null); + const swiperRef = useRef(null); + const oldPassedParamsRef = useRef(null); + const oldSlides = useRef(null); + const nextElRef = useRef(null); + const prevElRef = useRef(null); + const paginationElRef = useRef(null); + const scrollbarElRef = useRef(null); + const { + params: swiperParams, + passedParams, + rest: restProps, + events + } = getParams(rest); + const { + slides, + slots + } = getChildren(children); + const onBeforeBreakpoint = () => { + setBreakpointChanged(!breakpointChanged); + }; + Object.assign(swiperParams.on, { + _containerClasses(swiper, classes) { + setContainerClasses(classes); + } + }); + const initSwiper = () => { + // init swiper + Object.assign(swiperParams.on, events); + eventsAssigned = true; + const passParams = { + ...swiperParams + }; + delete passParams.wrapperClass; + swiperRef.current = new Swiper$1(passParams); + if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) { + swiperRef.current.virtual.slides = slides; + const extendWith = { + cache: false, + slides, + renderExternal: setVirtualData, + renderExternalUpdate: false + }; + extend(swiperRef.current.params.virtual, extendWith); + extend(swiperRef.current.originalParams.virtual, extendWith); + } + }; + if (!swiperElRef.current) { + initSwiper(); + } + + // Listen for breakpoints change + if (swiperRef.current) { + swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint); + } + const attachEvents = () => { + if (eventsAssigned || !events || !swiperRef.current) return; + Object.keys(events).forEach(eventName => { + swiperRef.current.on(eventName, events[eventName]); + }); + }; + const detachEvents = () => { + if (!events || !swiperRef.current) return; + Object.keys(events).forEach(eventName => { + swiperRef.current.off(eventName, events[eventName]); + }); + }; + useEffect(() => { + return () => { + if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint); + }; + }); + + // set initialized flag + useEffect(() => { + if (!initializedRef.current && swiperRef.current) { + swiperRef.current.emitSlidesClasses(); + initializedRef.current = true; + } + }); + + // mount swiper + useIsomorphicLayoutEffect(() => { + if (externalElRef) { + externalElRef.current = swiperElRef.current; + } + if (!swiperElRef.current) return; + if (swiperRef.current.destroyed) { + initSwiper(); + } + mountSwiper({ + el: swiperElRef.current, + nextEl: nextElRef.current, + prevEl: prevElRef.current, + paginationEl: paginationElRef.current, + scrollbarEl: scrollbarElRef.current, + swiper: swiperRef.current + }, swiperParams); + if (onSwiper && !swiperRef.current.destroyed) onSwiper(swiperRef.current); + // eslint-disable-next-line + return () => { + if (swiperRef.current && !swiperRef.current.destroyed) { + swiperRef.current.destroy(true, false); + } + }; + }, []); + + // watch for params change + useIsomorphicLayoutEffect(() => { + attachEvents(); + const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key); + oldPassedParamsRef.current = passedParams; + oldSlides.current = slides; + if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) { + updateSwiper({ + swiper: swiperRef.current, + slides, + passedParams, + changedParams, + nextEl: nextElRef.current, + prevEl: prevElRef.current, + scrollbarEl: scrollbarElRef.current, + paginationEl: paginationElRef.current + }); + } + return () => { + detachEvents(); + }; + }); + + // update on virtual update + useIsomorphicLayoutEffect(() => { + updateOnVirtualData(swiperRef.current); + }, [virtualData]); + + // bypass swiper instance to slides + function renderSlides() { + if (swiperParams.virtual) { + return renderVirtual(swiperRef.current, slides, virtualData); + } + return slides.map((child, index) => { + return /*#__PURE__*/React.cloneElement(child, { + swiper: swiperRef.current, + swiperSlideIndex: index + }); + }); + } + return /*#__PURE__*/React.createElement(Tag, _extends({ + ref: swiperElRef, + className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`) + }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, { + value: swiperRef.current + }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, { + className: wrapperClass(swiperParams.wrapperClass) + }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { + ref: prevElRef, + className: "swiper-button-prev" + }), /*#__PURE__*/React.createElement("div", { + ref: nextElRef, + className: "swiper-button-next" + })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement("div", { + ref: scrollbarElRef, + className: "swiper-scrollbar" + }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement("div", { + ref: paginationElRef, + className: "swiper-pagination" + }), slots['container-end'])); +}); +Swiper.displayName = 'Swiper'; + +const SwiperSlide = /*#__PURE__*/forwardRef(({ + tag: Tag = 'div', + children, + className = '', + swiper, + zoom, + lazy, + virtualIndex, + swiperSlideIndex, + ...rest +} = {}, externalRef) => { + const slideElRef = useRef(null); + const [slideClasses, setSlideClasses] = useState('swiper-slide'); + const [lazyLoaded, setLazyLoaded] = useState(false); + function updateClasses(_s, el, classNames) { + if (el === slideElRef.current) { + setSlideClasses(classNames); + } + } + useIsomorphicLayoutEffect(() => { + if (typeof swiperSlideIndex !== 'undefined') { + slideElRef.current.swiperSlideIndex = swiperSlideIndex; + } + if (externalRef) { + externalRef.current = slideElRef.current; + } + if (!slideElRef.current || !swiper) { + return; + } + if (swiper.destroyed) { + if (slideClasses !== 'swiper-slide') { + setSlideClasses('swiper-slide'); + } + return; + } + swiper.on('_slideClass', updateClasses); + // eslint-disable-next-line + return () => { + if (!swiper) return; + swiper.off('_slideClass', updateClasses); + }; + }); + useIsomorphicLayoutEffect(() => { + if (swiper && slideElRef.current && !swiper.destroyed) { + setSlideClasses(swiper.getSlideClasses(slideElRef.current)); + } + }, [swiper]); + const slideData = { + isActive: slideClasses.indexOf('swiper-slide-active') >= 0, + isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0, + isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0, + isNext: slideClasses.indexOf('swiper-slide-next') >= 0 + }; + const renderChildren = () => { + return typeof children === 'function' ? children(slideData) : children; + }; + const onLoad = () => { + setLazyLoaded(true); + }; + return /*#__PURE__*/React.createElement(Tag, _extends({ + ref: slideElRef, + className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`), + "data-swiper-slide-index": virtualIndex, + onLoad: onLoad + }, rest), zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, { + value: slideData + }, /*#__PURE__*/React.createElement("div", { + className: "swiper-zoom-container", + "data-swiper-zoom": typeof zoom === 'number' ? zoom : undefined + }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement("div", { + className: "swiper-lazy-preloader", + ref: node => { + if (node) node.lazyPreloaderManaged = true; + } + }))), !zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, { + value: slideData + }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement("div", { + className: "swiper-lazy-preloader", + ref: node => { + if (node) node.lazyPreloaderManaged = true; + } + }))); +}); +SwiperSlide.displayName = 'SwiperSlide'; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/vendor/javascript/swiper/swiper-vue.d.ts b/vendor/javascript/swiper/swiper-vue.d.ts new file mode 100644 index 0000000..cc30419 --- /dev/null +++ b/vendor/javascript/swiper/swiper-vue.d.ts @@ -0,0 +1,870 @@ +import type { + A11yOptions, + AutoplayOptions, + ControllerOptions, + CoverflowEffectOptions, + CubeEffectOptions, + FadeEffectOptions, + FlipEffectOptions, + CreativeEffectOptions, + CardsEffectOptions, + HashNavigationOptions, + HistoryOptions, + KeyboardOptions, + MousewheelOptions, + NavigationOptions, + PaginationOptions, + ParallaxOptions, + ScrollbarOptions, + ThumbsOptions, + VirtualOptions, + ZoomOptions, + FreeModeOptions, + GridOptions, +} from './types/index.d.ts'; +import { ComponentOptionsMixin, DefineComponent, PropType, Ref } from 'vue'; +import type { SwiperOptions, Swiper as SwiperClass } from './types/index.d.ts'; + +declare const Swiper: DefineComponent< + { + tag: { + type: StringConstructor; + default: string; + }; + wrapperTag: { + type: StringConstructor; + default: string; + }; + modules: { + type: ArrayConstructor; + default: undefined; + }; + init: { + type: BooleanConstructor; + default: undefined; + }; + direction: { + type: PropType; + default: SwiperOptions['direction']; + }; + oneWayMovement: { + type: PropType; + default: SwiperOptions['oneWayMovement']; + }; + swiperElementNodeName: { + type: PropType; + default: SwiperOptions['swiperElementNodeName']; + }; + touchEventsTarget: { + type: PropType; + default: undefined; + }; + initialSlide: { + type: NumberConstructor; + default: undefined; + }; + speed: { type: NumberConstructor; default: undefined }; + cssMode: { type: BooleanConstructor; default: undefined }; + updateOnWindowResize: { + type: BooleanConstructor; + default: undefined; + }; + resizeObserver: { + type: BooleanConstructor; + default: undefined; + }; + nested: { type: BooleanConstructor; default: undefined }; + focusableElements: { + type: StringConstructor; + default: undefined; + }; + width: { type: NumberConstructor; default: undefined }; + height: { type: NumberConstructor; default: undefined }; + preventInteractionOnTransition: { + type: BooleanConstructor; + default: undefined; + }; + userAgent: { type: StringConstructor; default: undefined }; + url: { type: StringConstructor; default: undefined }; + edgeSwipeDetection: { + type: BooleanConstructor | StringConstructor; + default: undefined; + }; + edgeSwipeThreshold: { + type: NumberConstructor; + default: undefined; + }; + autoHeight: { + type: BooleanConstructor; + default: undefined; + }; + setWrapperSize: { + type: BooleanConstructor; + default: undefined; + }; + virtualTranslate: { + type: BooleanConstructor; + default: undefined; + }; + effect: { + type: PropType; + default: undefined; + }; + breakpoints: { + type: PropType; + default: undefined; + }; + spaceBetween: { + type: PropType; + default: undefined; + }; + slidesPerView: { + type: PropType; + default: undefined; + }; + maxBackfaceHiddenSlides: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroup: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroupSkip: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroupAuto: { + type: BooleanConstructor; + default: undefined; + }; + centeredSlides: { + type: BooleanConstructor; + default: undefined; + }; + centeredSlidesBounds: { + type: BooleanConstructor; + default: undefined; + }; + slidesOffsetBefore: { + type: NumberConstructor; + default: undefined; + }; + slidesOffsetAfter: { + type: NumberConstructor; + default: undefined; + }; + normalizeSlideIndex: { + type: BooleanConstructor; + default: undefined; + }; + centerInsufficientSlides: { + type: BooleanConstructor; + default: undefined; + }; + snapToSlideEdge: { + type: BooleanConstructor; + default: undefined; + }; + watchOverflow: { + type: BooleanConstructor; + default: undefined; + }; + roundLengths: { + type: BooleanConstructor; + default: undefined; + }; + touchRatio: { + type: NumberConstructor; + default: undefined; + }; + touchAngle: { + type: NumberConstructor; + default: undefined; + }; + simulateTouch: { + type: BooleanConstructor; + default: undefined; + }; + shortSwipes: { + type: BooleanConstructor; + default: undefined; + }; + longSwipes: { + type: BooleanConstructor; + default: undefined; + }; + longSwipesRatio: { + type: NumberConstructor; + default: undefined; + }; + longSwipesMs: { + type: NumberConstructor; + default: undefined; + }; + followFinger: { + type: BooleanConstructor; + default: undefined; + }; + allowTouchMove: { + type: BooleanConstructor; + default: undefined; + }; + threshold: { type: NumberConstructor; default: undefined }; + touchMoveStopPropagation: { + type: BooleanConstructor; + default: undefined; + }; + touchStartPreventDefault: { + type: BooleanConstructor; + default: undefined; + }; + touchStartForcePreventDefault: { + type: BooleanConstructor; + default: undefined; + }; + touchReleaseOnEdges: { + type: BooleanConstructor; + default: undefined; + }; + uniqueNavElements: { + type: BooleanConstructor; + default: undefined; + }; + resistance: { + type: BooleanConstructor; + default: undefined; + }; + resistanceRatio: { + type: NumberConstructor; + default: undefined; + }; + watchSlidesProgress: { + type: BooleanConstructor; + default: undefined; + }; + grabCursor: { + type: BooleanConstructor; + default: undefined; + }; + preventClicks: { + type: BooleanConstructor; + default: undefined; + }; + preventClicksPropagation: { + type: BooleanConstructor; + default: undefined; + }; + slideToClickedSlide: { + type: BooleanConstructor; + default: undefined; + }; + loop: { type: BooleanConstructor; default: undefined }; + loopAddBlankSlides: { type: BooleanConstructor; default: undefined }; + loopAdditionalSlides: { + type: NumberConstructor; + default: undefined; + }; + loopPreventsSliding: { type: BooleanConstructor; default: undefined }; + rewind: { type: BooleanConstructor; default: undefined }; + allowSlidePrev: { + type: BooleanConstructor; + default: undefined; + }; + allowSlideNext: { + type: BooleanConstructor; + default: undefined; + }; + swipeHandler: { + type: BooleanConstructor; + default: undefined; + }; + noSwiping: { + type: BooleanConstructor; + default: undefined; + }; + noSwipingClass: { + type: StringConstructor; + default: undefined; + }; + noSwipingSelector: { + type: StringConstructor; + default: undefined; + }; + passiveListeners: { + type: BooleanConstructor; + default: undefined; + }; + containerModifierClass: { + type: StringConstructor; + default: undefined; + }; + slideClass: { + type: StringConstructor; + default: undefined; + }; + slideActiveClass: { + type: StringConstructor; + default: undefined; + }; + slideVisibleClass: { + type: StringConstructor; + default: undefined; + }; + slideFullyVisibleClass: { + type: StringConstructor; + default: undefined; + }; + slideBlankClass: { + type: StringConstructor; + default: undefined; + }; + slideNextClass: { + type: StringConstructor; + default: undefined; + }; + slidePrevClass: { + type: StringConstructor; + default: undefined; + }; + wrapperClass: { + type: StringConstructor; + default: undefined; + }; + lazyPreloaderClass: { + type: StringConstructor; + default: undefined; + }; + lazyPreloadPrevNext: { + type: NumberConstructor; + default: undefined; + }; + runCallbacksOnInit: { + type: BooleanConstructor; + default: undefined; + }; + observer: { type: BooleanConstructor; default: undefined }; + observeParents: { + type: BooleanConstructor; + default: undefined; + }; + observeSlideChildren: { + type: BooleanConstructor; + default: undefined; + }; + a11y: { + type: PropType; + default: undefined; + }; + autoplay: { + type: PropType; + default: undefined; + }; + controller: { + type: PropType; + default: undefined; + }; + coverflowEffect: { + type: PropType; + default: undefined; + }; + cubeEffect: { + type: PropType; + default: undefined; + }; + fadeEffect: { + type: PropType; + default: undefined; + }; + flipEffect: { + type: PropType; + default: undefined; + }; + creativeEffect: { + type: PropType; + default: undefined; + }; + cardsEffect: { + type: PropType; + default: undefined; + }; + hashNavigation: { + type: PropType; + default: undefined; + }; + history: { + type: PropType; + default: undefined; + }; + keyboard: { + type: PropType; + default: undefined; + }; + mousewheel: { + type: PropType; + default: undefined; + }; + navigation: { + type: PropType; + default: undefined; + }; + pagination: { + type: PropType; + default: undefined; + }; + parallax: { + type: PropType; + default: undefined; + }; + scrollbar: { + type: PropType; + default: undefined; + }; + thumbs: { type: PropType; default: undefined }; + virtual: { + type: PropType; + default: undefined; + }; + zoom: { + type: PropType; + default: undefined; + }; + freeMode: { + type: PropType; + default: undefined; + }; + grid: { + type: PropType; + default: undefined; + }; + }, + () => JSX.Element, + unknown, + {}, + {}, + ComponentOptionsMixin, + ComponentOptionsMixin, + { + swiper: (swiper: SwiperClass) => void; + /** + * Event will be fired in when autoplay started + */ + autoplayStart: (swiper: SwiperClass) => void; + /** + * Event will be fired when autoplay stopped + */ + autoplayStop: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay pause + */ + autoplayPause: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay resume + */ + autoplayResume: (swiper: SwiperClass) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplayTimeLeft: (swiper: SwiperClass, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: (swiper: SwiperClass) => void;/** + * Event will be fired on window hash change + */ + hashChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper updates the hash + */ + hashSet: (swiper: SwiperClass) => void;/** + * Event will be fired on key press + */ + keyPress: (swiper: SwiperClass, keyCode: string) => void;/** + * Event will be fired on mousewheel scroll + */ + scroll: (swiper: SwiperClass, event: WheelEvent) => void;/** + * Event will be fired on navigation hide + */ + navigationHide: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation show + */ + navigationShow: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation prev button click + */ + navigationPrev: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation next button click + */ + navigationNext: (swiper: SwiperClass) => void;/** + * Event will be fired on draggable scrollbar drag start + */ + scrollbarDragStart: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbarDragMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbarDragEnd: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;/** + * Event will be fired on zoom change + */ + zoomChange: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void;/** + * Event will be fired after pagination rendered + */ + paginationRender: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + paginationUpdate: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + paginationHide: (swiper: SwiperClass) => void; + + /** + * Event will be fired on pagination show + */ + paginationShow: (swiper: SwiperClass) => void; + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + init: (swiper: SwiperClass) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + beforeDestroy: (swiper: SwiperClass) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesUpdated: (swiper: SwiperClass) => void; + /** + * Event will be fired when currently active slide is changed + */ + slideChange: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slideChangeTransitionStart: (swiper: SwiperClass) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slideChangeTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slideNextTransitionStart: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slideNextTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slidePrevTransitionStart: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slidePrevTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of transition. + */ + transitionStart: (swiper: SwiperClass) => void; + + /** + * Event will be fired after transition. + */ + transitionEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchStart: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchMoveOpposite: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + sliderMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchEnd: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubleTap: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: (swiper: SwiperClass, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachBeginning: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + reachEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toEdge: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromEdge: (swiper: SwiperClass) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + setTranslate: (swiper: SwiperClass, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + setTransition: (swiper: SwiperClass, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: (swiper: SwiperClass) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerUpdate: (swiper: SwiperClass) => void; + + /** + * Event will be fired right before "loop fix" + */ + beforeLoopFix: (swiper: SwiperClass) => void; + + /** + * Event will be fired after "loop fix" + */ + loopFix: (swiper: SwiperClass) => void; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses: (swiper: SwiperClass, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass: (swiper: SwiperClass, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses: ( + swiper: SwiperClass, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper: (swiper: SwiperClass) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease: (swiper: SwiperClass) => void; + + /** + * Event will fired on active index change + */ + activeIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired on snap index change + */ + snapIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired on real index change + */ + realIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired right after initialization + */ + afterInit: (swiper: SwiperClass) => void; + /** + * Event will fired right before initialization + */ + beforeInit: (swiper: SwiperClass) => void; + /** + * Event will fired before resize handler + */ + beforeResize: (swiper: SwiperClass) => void; + /** + * Event will fired before slide change transition start + */ + beforeSlideChangeStart: (swiper: SwiperClass) => void; + /** + * Event will fired before transition start + */ + beforeTransitionStart: (swiper: SwiperClass, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + changeDirection: (swiper: SwiperClass) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleClick: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + destroy: (swiper: SwiperClass) => void; + /** + * Event will be fired on momentum bounce + */ + momentumBounce: (swiper: SwiperClass) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: (swiper: SwiperClass) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideResetTransitionStart: (swiper: SwiperClass) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideResetTransitionEnd: (swiper: SwiperClass) => void; + /** + * Event will be fired with first touch/drag move + */ + sliderFirstMove: (swiper: SwiperClass, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + slidesLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when slides grid has changed + */ + slidesGridLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when snap grid has changed + */ + snapGridLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired after swiper.update() call + */ + update: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: (swiper: SwiperClass) => void; + + } +>; + +declare const SwiperSlide: DefineComponent<{ + tag: { + type: StringConstructor; + default: string; + }; + swiperRef: { type: PropType; required: false }; + lazy: { type: BooleanConstructor; default: false }; + zoom: { type: BooleanConstructor; default: undefined }; + virtualIndex: { + type: StringConstructor | NumberConstructor; + default: undefined; + }; +}>; + +declare const useSwiper: () => Ref; +declare const useSwiperSlide: () => Ref<{ + isActive: boolean; + isVisible: boolean; + isPrev: boolean; + isNext: boolean; +}>; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/vendor/javascript/swiper/swiper-vue.mjs b/vendor/javascript/swiper/swiper-vue.mjs new file mode 100644 index 0000000..8f3f41d --- /dev/null +++ b/vendor/javascript/swiper/swiper-vue.mjs @@ -0,0 +1,836 @@ +/** + * Swiper Vue 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +import { h, ref, onUpdated, provide, watch, nextTick, onMounted, onBeforeUnmount, onBeforeUpdate, computed, inject } from 'vue'; +import { S as Swiper$1 } from './shared/swiper-core.mjs'; +import { g as getParams, a as getChangedParams, u as updateOnVirtualData, m as mountSwiper } from './shared/update-on-virtual-data.mjs'; +import { e as extend, u as updateSwiper, d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination } from './shared/update-swiper.mjs'; + +function getChildren(originalSlots = {}, slidesRef, oldSlidesRef) { + const slides = []; + const slots = { + 'container-start': [], + 'container-end': [], + 'wrapper-start': [], + 'wrapper-end': [] + }; + const getSlidesFromElements = (els, slotName) => { + if (!Array.isArray(els)) { + return; + } + els.forEach(vnode => { + const isFragment = typeof vnode.type === 'symbol'; + if (slotName === 'default') slotName = 'container-end'; + if (isFragment && vnode.children) { + getSlidesFromElements(vnode.children, slotName); + } else if (vnode.type && (vnode.type.name === 'SwiperSlide' || vnode.type.name === 'AsyncComponentWrapper') || vnode.componentOptions && vnode.componentOptions.tag === 'SwiperSlide') { + slides.push(vnode); + } else if (slots[slotName]) { + slots[slotName].push(vnode); + } + }); + }; + Object.keys(originalSlots).forEach(slotName => { + if (typeof originalSlots[slotName] !== 'function') return; + const els = originalSlots[slotName](); + getSlidesFromElements(els, slotName); + }); + oldSlidesRef.value = slidesRef.value; + slidesRef.value = slides; + return { + slides, + slots + }; +} + +function renderVirtual(swiperRef, slides, virtualData) { + if (!virtualData) return null; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + const style = swiperRef.value.isHorizontal() ? { + [swiperRef.value.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` + } : { + top: `${virtualData.offset}px` + }; + const { + from, + to + } = virtualData; + const loopFrom = swiperRef.value.params.loop ? -slides.length : 0; + const loopTo = swiperRef.value.params.loop ? slides.length * 2 : slides.length; + const slidesToRender = []; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to && slidesToRender.length < slides.length) { + slidesToRender.push(slides[getSlideIndex(i)]); + } + } + return slidesToRender.map(slide => { + if (!slide.props) slide.props = {}; + if (!slide.props.style) slide.props.style = {}; + slide.props.swiperRef = swiperRef; + slide.props.style = style; + if (slide.type) { + return h(slide.type, { + ...slide.props + }, slide.children); + } else if (slide.componentOptions) { + return h(slide.componentOptions.Ctor, { + ...slide.props + }, slide.componentOptions.children); + } + }); +} + +const Swiper = { + name: 'Swiper', + props: { + tag: { + type: String, + default: 'div' + }, + wrapperTag: { + type: String, + default: 'div' + }, + modules: { + type: Array, + default: undefined + }, + init: { + type: Boolean, + default: undefined + }, + direction: { + type: String, + default: undefined + }, + oneWayMovement: { + type: Boolean, + default: undefined + }, + swiperElementNodeName: { + type: String, + default: 'SWIPER-CONTAINER' + }, + touchEventsTarget: { + type: String, + default: undefined + }, + initialSlide: { + type: Number, + default: undefined + }, + speed: { + type: Number, + default: undefined + }, + cssMode: { + type: Boolean, + default: undefined + }, + updateOnWindowResize: { + type: Boolean, + default: undefined + }, + resizeObserver: { + type: Boolean, + default: undefined + }, + nested: { + type: Boolean, + default: undefined + }, + focusableElements: { + type: String, + default: undefined + }, + width: { + type: Number, + default: undefined + }, + height: { + type: Number, + default: undefined + }, + preventInteractionOnTransition: { + type: Boolean, + default: undefined + }, + userAgent: { + type: String, + default: undefined + }, + url: { + type: String, + default: undefined + }, + edgeSwipeDetection: { + type: [Boolean, String], + default: undefined + }, + edgeSwipeThreshold: { + type: Number, + default: undefined + }, + autoHeight: { + type: Boolean, + default: undefined + }, + setWrapperSize: { + type: Boolean, + default: undefined + }, + virtualTranslate: { + type: Boolean, + default: undefined + }, + effect: { + type: String, + default: undefined + }, + breakpoints: { + type: Object, + default: undefined + }, + breakpointsBase: { + type: String, + default: undefined + }, + spaceBetween: { + type: [Number, String], + default: undefined + }, + slidesPerView: { + type: [Number, String], + default: undefined + }, + maxBackfaceHiddenSlides: { + type: Number, + default: undefined + }, + slidesPerGroup: { + type: Number, + default: undefined + }, + slidesPerGroupSkip: { + type: Number, + default: undefined + }, + slidesPerGroupAuto: { + type: Boolean, + default: undefined + }, + centeredSlides: { + type: Boolean, + default: undefined + }, + centeredSlidesBounds: { + type: Boolean, + default: undefined + }, + slidesOffsetBefore: { + type: Number, + default: undefined + }, + slidesOffsetAfter: { + type: Number, + default: undefined + }, + normalizeSlideIndex: { + type: Boolean, + default: undefined + }, + centerInsufficientSlides: { + type: Boolean, + default: undefined + }, + watchOverflow: { + type: Boolean, + default: undefined + }, + roundLengths: { + type: Boolean, + default: undefined + }, + touchRatio: { + type: Number, + default: undefined + }, + touchAngle: { + type: Number, + default: undefined + }, + simulateTouch: { + type: Boolean, + default: undefined + }, + shortSwipes: { + type: Boolean, + default: undefined + }, + longSwipes: { + type: Boolean, + default: undefined + }, + longSwipesRatio: { + type: Number, + default: undefined + }, + longSwipesMs: { + type: Number, + default: undefined + }, + followFinger: { + type: Boolean, + default: undefined + }, + allowTouchMove: { + type: Boolean, + default: undefined + }, + threshold: { + type: Number, + default: undefined + }, + touchMoveStopPropagation: { + type: Boolean, + default: undefined + }, + touchStartPreventDefault: { + type: Boolean, + default: undefined + }, + touchStartForcePreventDefault: { + type: Boolean, + default: undefined + }, + touchReleaseOnEdges: { + type: Boolean, + default: undefined + }, + uniqueNavElements: { + type: Boolean, + default: undefined + }, + resistance: { + type: Boolean, + default: undefined + }, + resistanceRatio: { + type: Number, + default: undefined + }, + watchSlidesProgress: { + type: Boolean, + default: undefined + }, + grabCursor: { + type: Boolean, + default: undefined + }, + preventClicks: { + type: Boolean, + default: undefined + }, + preventClicksPropagation: { + type: Boolean, + default: undefined + }, + slideToClickedSlide: { + type: Boolean, + default: undefined + }, + loop: { + type: Boolean, + default: undefined + }, + loopedSlides: { + type: Number, + default: undefined + }, + loopPreventsSliding: { + type: Boolean, + default: undefined + }, + loopAdditionalSlides: { + type: Number, + default: undefined + }, + loopAddBlankSlides: { + type: Boolean, + default: undefined + }, + rewind: { + type: Boolean, + default: undefined + }, + allowSlidePrev: { + type: Boolean, + default: undefined + }, + allowSlideNext: { + type: Boolean, + default: undefined + }, + swipeHandler: { + type: Boolean, + default: undefined + }, + noSwiping: { + type: Boolean, + default: undefined + }, + noSwipingClass: { + type: String, + default: undefined + }, + noSwipingSelector: { + type: String, + default: undefined + }, + passiveListeners: { + type: Boolean, + default: undefined + }, + containerModifierClass: { + type: String, + default: undefined + }, + slideClass: { + type: String, + default: undefined + }, + slideActiveClass: { + type: String, + default: undefined + }, + slideVisibleClass: { + type: String, + default: undefined + }, + slideFullyVisibleClass: { + type: String, + default: undefined + }, + slideBlankClass: { + type: String, + default: undefined + }, + slideNextClass: { + type: String, + default: undefined + }, + slidePrevClass: { + type: String, + default: undefined + }, + wrapperClass: { + type: String, + default: undefined + }, + lazyPreloaderClass: { + type: String, + default: undefined + }, + lazyPreloadPrevNext: { + type: Number, + default: undefined + }, + runCallbacksOnInit: { + type: Boolean, + default: undefined + }, + observer: { + type: Boolean, + default: undefined + }, + observeParents: { + type: Boolean, + default: undefined + }, + observeSlideChildren: { + type: Boolean, + default: undefined + }, + a11y: { + type: [Boolean, Object], + default: undefined + }, + autoplay: { + type: [Boolean, Object], + default: undefined + }, + controller: { + type: Object, + default: undefined + }, + coverflowEffect: { + type: Object, + default: undefined + }, + cubeEffect: { + type: Object, + default: undefined + }, + fadeEffect: { + type: Object, + default: undefined + }, + flipEffect: { + type: Object, + default: undefined + }, + creativeEffect: { + type: Object, + default: undefined + }, + cardsEffect: { + type: Object, + default: undefined + }, + hashNavigation: { + type: [Boolean, Object], + default: undefined + }, + history: { + type: [Boolean, Object], + default: undefined + }, + keyboard: { + type: [Boolean, Object], + default: undefined + }, + mousewheel: { + type: [Boolean, Object], + default: undefined + }, + navigation: { + type: [Boolean, Object], + default: undefined + }, + pagination: { + type: [Boolean, Object], + default: undefined + }, + parallax: { + type: [Boolean, Object], + default: undefined + }, + scrollbar: { + type: [Boolean, Object], + default: undefined + }, + thumbs: { + type: Object, + default: undefined + }, + virtual: { + type: [Boolean, Object], + default: undefined + }, + zoom: { + type: [Boolean, Object], + default: undefined + }, + grid: { + type: [Object], + default: undefined + }, + freeMode: { + type: [Boolean, Object], + default: undefined + }, + enabled: { + type: Boolean, + default: undefined + } + }, + emits: ['_beforeBreakpoint', '_containerClasses', '_slideClass', '_slideClasses', '_swiper', '_freeModeNoMomentumRelease', '_virtualUpdated', 'activeIndexChange', 'afterInit', 'autoplay', 'autoplayStart', 'autoplayStop', 'autoplayPause', 'autoplayResume', 'autoplayTimeLeft', 'beforeDestroy', 'beforeInit', 'beforeLoopFix', 'beforeResize', 'beforeSlideChangeStart', 'beforeTransitionStart', 'breakpoint', 'changeDirection', 'click', 'disable', 'doubleTap', 'doubleClick', 'destroy', 'enable', 'fromEdge', 'hashChange', 'hashSet', 'init', 'keyPress', 'lock', 'loopFix', 'momentumBounce', 'navigationHide', 'navigationShow', 'navigationPrev', 'navigationNext', 'observerUpdate', 'orientationchange', 'paginationHide', 'paginationRender', 'paginationShow', 'paginationUpdate', 'progress', 'reachBeginning', 'reachEnd', 'realIndexChange', 'resize', 'scroll', 'scrollbarDragEnd', 'scrollbarDragMove', 'scrollbarDragStart', 'setTransition', 'setTranslate', 'slidesUpdated', 'slideChange', 'slideChangeTransitionEnd', 'slideChangeTransitionStart', 'slideNextTransitionEnd', 'slideNextTransitionStart', 'slidePrevTransitionEnd', 'slidePrevTransitionStart', 'slideResetTransitionStart', 'slideResetTransitionEnd', 'sliderMove', 'sliderFirstMove', 'slidesLengthChange', 'slidesGridLengthChange', 'snapGridLengthChange', 'snapIndexChange', 'swiper', 'tap', 'toEdge', 'touchEnd', 'touchMove', 'touchMoveOpposite', 'touchStart', 'transitionEnd', 'transitionStart', 'unlock', 'update', 'virtualUpdate', 'zoomChange'], + setup(props, { + slots: originalSlots, + emit + }) { + const { + tag: Tag, + wrapperTag: WrapperTag + } = props; + const containerClasses = ref('swiper'); + const virtualData = ref(null); + const breakpointChanged = ref(false); + const initializedRef = ref(false); + const swiperElRef = ref(null); + const swiperRef = ref(null); + const oldPassedParamsRef = ref(null); + const slidesRef = { + value: [] + }; + const oldSlidesRef = { + value: [] + }; + const nextElRef = ref(null); + const prevElRef = ref(null); + const paginationElRef = ref(null); + const scrollbarElRef = ref(null); + const { + params: swiperParams, + passedParams + } = getParams(props, false); + getChildren(originalSlots, slidesRef, oldSlidesRef); + oldPassedParamsRef.value = passedParams; + oldSlidesRef.value = slidesRef.value; + const onBeforeBreakpoint = () => { + getChildren(originalSlots, slidesRef, oldSlidesRef); + breakpointChanged.value = true; + }; + swiperParams.onAny = (event, ...args) => { + emit(event, ...args); + }; + Object.assign(swiperParams.on, { + _beforeBreakpoint: onBeforeBreakpoint, + _containerClasses(swiper, classes) { + containerClasses.value = classes; + } + }); + + // init Swiper + const passParams = { + ...swiperParams + }; + delete passParams.wrapperClass; + swiperRef.value = new Swiper$1(passParams); + if (swiperRef.value.virtual && swiperRef.value.params.virtual.enabled) { + swiperRef.value.virtual.slides = slidesRef.value; + const extendWith = { + cache: false, + slides: slidesRef.value, + renderExternal: data => { + virtualData.value = data; + }, + renderExternalUpdate: false + }; + extend(swiperRef.value.params.virtual, extendWith); + extend(swiperRef.value.originalParams.virtual, extendWith); + } + onUpdated(() => { + // set initialized flag + if (!initializedRef.value && swiperRef.value) { + swiperRef.value.emitSlidesClasses(); + initializedRef.value = true; + } + // watch for params change + const { + passedParams: newPassedParams + } = getParams(props, false); + const changedParams = getChangedParams(newPassedParams, oldPassedParamsRef.value, slidesRef.value, oldSlidesRef.value, c => c.props && c.props.key); + oldPassedParamsRef.value = newPassedParams; + if ((changedParams.length || breakpointChanged.value) && swiperRef.value && !swiperRef.value.destroyed) { + updateSwiper({ + swiper: swiperRef.value, + slides: slidesRef.value, + passedParams: newPassedParams, + changedParams, + nextEl: nextElRef.value, + prevEl: prevElRef.value, + scrollbarEl: scrollbarElRef.value, + paginationEl: paginationElRef.value + }); + } + breakpointChanged.value = false; + }); + provide('swiper', swiperRef); + + // update on virtual update + watch(virtualData, () => { + nextTick(() => { + updateOnVirtualData(swiperRef.value); + }); + }); + + // mount swiper + onMounted(() => { + if (!swiperElRef.value) return; + mountSwiper({ + el: swiperElRef.value, + nextEl: nextElRef.value, + prevEl: prevElRef.value, + paginationEl: paginationElRef.value, + scrollbarEl: scrollbarElRef.value, + swiper: swiperRef.value + }, swiperParams); + emit('swiper', swiperRef.value); + }); + onBeforeUnmount(() => { + if (swiperRef.value && !swiperRef.value.destroyed) { + swiperRef.value.destroy(true, false); + } + }); + + // bypass swiper instance to slides + function renderSlides(slides) { + if (swiperParams.virtual) { + return renderVirtual(swiperRef, slides, virtualData.value); + } + slides.forEach((slide, index) => { + if (!slide.props) slide.props = {}; + slide.props.swiperRef = swiperRef; + slide.props.swiperSlideIndex = index; + }); + return slides; + } + return () => { + const { + slides, + slots + } = getChildren(originalSlots, slidesRef, oldSlidesRef); + return h(Tag, { + ref: swiperElRef, + class: uniqueClasses(containerClasses.value) + }, [slots['container-start'], h(WrapperTag, { + class: wrapperClass(swiperParams.wrapperClass) + }, [slots['wrapper-start'], renderSlides(slides), slots['wrapper-end']]), needsNavigation(props) && [h('div', { + ref: prevElRef, + class: 'swiper-button-prev' + }), h('div', { + ref: nextElRef, + class: 'swiper-button-next' + })], needsScrollbar(props) && h('div', { + ref: scrollbarElRef, + class: 'swiper-scrollbar' + }), needsPagination(props) && h('div', { + ref: paginationElRef, + class: 'swiper-pagination' + }), slots['container-end']]); + }; + } +}; + +const SwiperSlide = { + name: 'SwiperSlide', + props: { + tag: { + type: String, + default: 'div' + }, + swiperRef: { + type: Object, + required: false + }, + swiperSlideIndex: { + type: Number, + default: undefined, + required: false + }, + zoom: { + type: Boolean, + default: undefined, + required: false + }, + lazy: { + type: Boolean, + default: false, + required: false + }, + virtualIndex: { + type: [String, Number], + default: undefined + } + }, + setup(props, { + slots + }) { + let eventAttached = false; + const { + swiperRef + } = props; + const slideElRef = ref(null); + const slideClasses = ref('swiper-slide'); + const lazyLoaded = ref(false); + function updateClasses(swiper, el, classNames) { + if (el === slideElRef.value) { + slideClasses.value = classNames; + } + } + onMounted(() => { + if (!swiperRef || !swiperRef.value) return; + swiperRef.value.on('_slideClass', updateClasses); + eventAttached = true; + }); + onBeforeUpdate(() => { + if (eventAttached || !swiperRef || !swiperRef.value) return; + swiperRef.value.on('_slideClass', updateClasses); + eventAttached = true; + }); + onUpdated(() => { + if (!slideElRef.value || !swiperRef || !swiperRef.value) return; + if (typeof props.swiperSlideIndex !== 'undefined') { + slideElRef.value.swiperSlideIndex = props.swiperSlideIndex; + } + if (swiperRef.value.destroyed) { + if (slideClasses.value !== 'swiper-slide') { + slideClasses.value = 'swiper-slide'; + } + } + }); + onBeforeUnmount(() => { + if (!swiperRef || !swiperRef.value) return; + swiperRef.value.off('_slideClass', updateClasses); + }); + const slideData = computed(() => ({ + isActive: slideClasses.value.indexOf('swiper-slide-active') >= 0, + isVisible: slideClasses.value.indexOf('swiper-slide-visible') >= 0, + isPrev: slideClasses.value.indexOf('swiper-slide-prev') >= 0, + isNext: slideClasses.value.indexOf('swiper-slide-next') >= 0 + })); + provide('swiperSlide', slideData); + const onLoad = () => { + lazyLoaded.value = true; + }; + return () => { + return h(props.tag, { + class: uniqueClasses(`${slideClasses.value}`), + ref: slideElRef, + 'data-swiper-slide-index': typeof props.virtualIndex === 'undefined' && swiperRef && swiperRef.value && swiperRef.value.params.loop ? props.swiperSlideIndex : props.virtualIndex, + onLoadCapture: onLoad + }, props.zoom ? h('div', { + class: 'swiper-zoom-container', + 'data-swiper-zoom': typeof props.zoom === 'number' ? props.zoom : undefined + }, [slots.default && slots.default(slideData.value), props.lazy && !lazyLoaded.value && h('div', { + class: 'swiper-lazy-preloader', + onVnodeMounted: vnode => { + if (vnode.el) vnode.el.lazyPreloaderManaged = true; + } + })]) : [slots.default && slots.default(slideData.value), props.lazy && !lazyLoaded.value && h('div', { + class: 'swiper-lazy-preloader', + onVnodeMounted: vnode => { + if (vnode.el) vnode.el.lazyPreloaderManaged = true; + } + })]); + }; + } +}; + +const useSwiperSlide = () => { + return inject('swiperSlide'); +}; +const useSwiper = () => { + return inject('swiper'); +}; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/vendor/javascript/swiper/swiper.css b/vendor/javascript/swiper/swiper.css new file mode 100644 index 0000000..7d9403a --- /dev/null +++ b/vendor/javascript/swiper/swiper.css @@ -0,0 +1,251 @@ +/** + * Swiper 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +:root { + --swiper-theme-color: #007aff; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; + .swiper-slide, + .swiper-cube-shadow { + transform-style: preserve-3d; + } +} + +/* CSS Mode */ +.swiper-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } + &.swiper-horizontal { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } + > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-slides-offset-before); + scroll-margin-inline-start: var(--swiper-slides-offset-before); + } + > .swiper-wrapper > .swiper-slide:last-child { + margin-inline-end: var(--swiper-slides-offset-after); + } + } + &.swiper-vertical { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } + > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-slides-offset-before); + scroll-margin-block-start: var(--swiper-slides-offset-before); + } + > .swiper-wrapper > .swiper-slide:last-child { + margin-block-end: var(--swiper-slides-offset-after); + } + } + &.swiper-free-mode { + > .swiper-wrapper { + scroll-snap-type: none; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; + } + } + &.swiper-centered { + > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; + } + } + &.swiper-centered.swiper-horizontal { + > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); + } + } + &.swiper-centered.swiper-vertical { + > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); + } + } +} + +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d { + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress), +.swiper-watch-progress .swiper-slide-visible { + .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; + } +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ diff --git a/vendor/javascript/swiper/swiper.d.ts b/vendor/javascript/swiper/swiper.d.ts new file mode 100644 index 0000000..07e4e50 --- /dev/null +++ b/vendor/javascript/swiper/swiper.d.ts @@ -0,0 +1,5 @@ +// @ts-ignore +import Swiper from './types/swiper-class.d.ts'; + +export default Swiper; +export { Swiper }; diff --git a/vendor/javascript/swiper/swiper.js b/vendor/javascript/swiper/swiper.js new file mode 100644 index 0000000..de00cbe --- /dev/null +++ b/vendor/javascript/swiper/swiper.js @@ -0,0 +1,4348 @@ +/** + * Swiper 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +var Swiper = (function () { + 'use strict'; + + /** + * SSR Window 5.0.1 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2025, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: June 27, 2025 + */ + /* eslint-disable no-param-reassign */ + function isObject$1(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$1(target = {}, src = {}) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) { + extend$1(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$1(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$1(win, ssrWindow); + return win; + } + + function classesToTokens(classes = '') { + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay = 0) { + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis = 'x') { + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend(...args) { + const to = Object(args[0]); + for (let i = 1; i < args.length; i += 1) { + const nextSource = args[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => key !== '__proto__' && key !== 'constructor' && key !== 'prototype'); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll({ + swiper, + targetPosition, + side + }) { + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function elementChildren(element, selector = '') { + const window = getWindow(); + const children = [...element.children]; + if (window.HTMLSlotElement && element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); + } + function elementIsChildOfSlot(el, slot) { + // Breadth-first search through all parent's children and assigned elements + const elementsQueue = [slot]; + while (elementsQueue.length > 0) { + const elementToCheck = elementsQueue.shift(); + if (el === elementToCheck) { + return true; + } + elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : [])); + } + } + function elementIsChildOf(el, parent) { + const window = getWindow(); + let isChild = parent.contains(el); + if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) { + const children = [...parent.assignedElements()]; + isChild = children.includes(el); + if (!isChild) { + isChild = elementIsChildOfSlot(el, parent); + } + } + return isChild; + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes = []) { + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice({ + userAgent + } = {}) { + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad)(?!\1).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides = {}) { + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize({ + swiper, + on, + emit + }) { + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(({ + contentBoxSize, + contentRect, + target + }) => { + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer({ + swiper, + extendParams, + on, + emit + }) { + const observers = []; + const window = getWindow(); + const attach = (target, options = {}) => { + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler(...args) { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit(...args) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + const swiperSize = swiper.size - offsetBefore - offsetAfter; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween - offsetBefore - offsetAfter; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + + // set cssMode offsets + if (params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-slides-offset-before', `${offsetBefore}px`); + setCSSProperty(wrapperEl, '--swiper-slides-offset-after', `${offsetAfter}px`); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + const slide = slides[i]; + if (slide) { + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + } + + if (isVirtual && params.slidesPerView === 'auto') { + if (params.virtual.slidesPerViewAutoSlideSize) { + slideSize = params.virtual.slidesPerViewAutoSlideSize; + } + if (slideSize && slide) { + if (params.roundLengths) slideSize = Math.floor(slideSize); + slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } else if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slide.style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slide) { + slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slide) { + slide.swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + // Check if snapToSlideEdge should be applied + const isFractionalSlidesPerView = params.slidesPerView !== 'auto' && params.slidesPerView % 1 !== 0; + const shouldSnapToSlideEdge = params.snapToSlideEdge && !params.loop && (params.slidesPerView === 'auto' || isFractionalSlidesPerView); + + // Calculate the last allowed snap index when snapToSlideEdge is enabled + // This ensures minimum slides are visible at the end + let lastAllowedSnapIndex = snapGrid.length; + if (shouldSnapToSlideEdge) { + let minVisibleSlides; + if (params.slidesPerView === 'auto') { + // For 'auto' mode, calculate how many slides fit based on actual sizes + minVisibleSlides = 1; + let accumulatedSize = 0; + for (let i = slidesSizesGrid.length - 1; i >= 0; i -= 1) { + accumulatedSize += slidesSizesGrid[i] + (i < slidesSizesGrid.length - 1 ? spaceBetween : 0); + if (accumulatedSize <= swiperSize) { + minVisibleSlides = slidesSizesGrid.length - i; + } else { + break; + } + } + } else { + minVisibleSlides = Math.floor(params.slidesPerView); + } + lastAllowedSnapIndex = Math.max(slidesLength - minVisibleSlides, 0); + } + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (shouldSnapToSlideEdge) { + // When snapToSlideEdge is enabled, only keep snaps up to lastAllowedSnapIndex + if (i <= lastAllowedSnapIndex) { + newSlidesGrid.push(slidesGridItem); + } + } else if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + // When snapToSlideEdge is disabled, keep snaps that fit within scrollable area + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + // Only add edge-aligned snap if snapToSlideEdge is not enabled + if (!shouldSnapToSlideEdge) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesProgress(translate = this && this.translate || 0) { + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.find(slideEl => slideEl.column === activeIndex); + nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1); + prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1); + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove(); + } + }); + } + } + // Skip removal if managed by React/Vue component + if (lazyEl && !lazyEl.lazyPreloaderManaged) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled) { + if (params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else { + realIndex = activeIndex; + } + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex); + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') { + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) { + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit({ + swiper, + runCallbacks, + direction, + step + }) { + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + } else if (runCallbacks && activeIndex !== previousIndex) { + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks = true, direction) { + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks = true, direction) { + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index = 0, speed, runCallbacks = true, internal, initial) { + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // initial virtual + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + const isInitialVirtual = isVirtual && initial; + // Update Index + if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + const browser = getBrowser(); + const isSafari = browser.isSafari; + if (isVirtual && !initial && isSafari && swiper.isElement) { + swiper.virtual.update(false, false, slideIndex); + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index = 0, speed, runCallbacks = true, internal) { + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides, + slidesOffsetBefore, + slidesOffsetAfter + } = swiper.params; + const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (bothDirections && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (bothDirections) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && bothDirections && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = bothDirections ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks = true, internal) { + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks = true, internal) { + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + const isFreeMode = params.freeMode && params.freeMode.enabled; + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks = true, internal) { + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks = true, internal, threshold = 0.5) { + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.getSlideIndexWhenGrid(swiper.clickedIndex); + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + const isGrid = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + swiper.slideToLoop(realIndex); + } else if (slideToIndex > (isGrid ? (swiper.slides.length - slidesPerView) / 2 - (swiper.params.grid.rows - 1) : swiper.slides.length - slidesPerView)) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex, initial) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const clearBlankSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideBlankClass}`); + slides.forEach(el => { + el.remove(); + }); + if (slides.length > 0) { + swiper.recalcSlides(); + swiper.updateSlides(); + } + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (params.loopAddBlankSlides && (params.slidesPerGroup > 1 || gridEnabled)) { + clearBlankSlides(); + } + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + const bothDirections = params.centeredSlides || !!params.slidesOffsetBefore || !!params.slidesOffsetAfter; + swiper.loopFix({ + slideRealIndex, + direction: bothDirections ? undefined : 'next', + initial + }); + } + + function loopFix({ + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + initial, + byController, + byMousewheel + } = {}) { + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides, + slidesOffsetBefore, + slidesOffsetAfter, + initialSlide + } = params; + const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!bothDirections && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (bothDirections && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (bothDirections && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = bothDirections ? Math.max(slidesPerGroup, Math.ceil(slidesPerView / 2)) : slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !bothDirections; + let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass))); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (bothDirections && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + if (isInitialOverflow) { + slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1); + } + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) { + if (appendSlidesIndexes.includes(activeSlideIndex)) { + appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1); + } + if (prependSlidesIndexes.includes(activeSlideIndex)) { + prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1); + } + } + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base = this) { + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId); + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) { + return; + } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) { + return; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') { + document.activeElement.blur(); + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId); + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + const document = getDocument(); + + // Get breakpoint for window/container width and update parameters + const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container'; + const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase); + const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base = 'window', containerEl) { + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + snapToSlideEdge: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj = {}) { + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor(...args) { + let el; + let params; + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + params.modules.forEach(mod => { + if (typeof mod === 'function' && swiper.modules.indexOf(mod) < 0) { + swiper.modules.push(mod); + } + }); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)); + } + getSlideIndexWhenGrid(index) { + if (this.grid && this.params.grid && this.params.grid.rows > 1) { + if (this.params.grid.fill === 'column') { + index = Math.floor(index / this.params.grid.rows); + } else if (this.params.grid.fill === 'row') { + index = index % Math.ceil(this.slides.length / this.params.grid.rows); + } + } + return index; + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view = 'current', exact = false) { + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate = true) { + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(undefined, true); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance = true, cleanStyles = true) { + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + return Swiper; + +})(); diff --git a/vendor/javascript/swiper/swiper.min.css b/vendor/javascript/swiper/swiper.min.css new file mode 100644 index 0000000..370223f --- /dev/null +++ b/vendor/javascript/swiper/swiper.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +:root{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;padding:0;position:relative;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:initial;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px;.swiper-cube-shadow,.swiper-slide{transform-style:preserve-3d}}.swiper-css-mode{>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none;&::-webkit-scrollbar{display:none}}>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}&.swiper-horizontal{>.swiper-wrapper{scroll-snap-type:x mandatory}>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}>.swiper-wrapper>.swiper-slide:last-child{margin-inline-end:var(--swiper-slides-offset-after)}}&.swiper-vertical{>.swiper-wrapper{scroll-snap-type:y mandatory}>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}>.swiper-wrapper>.swiper-slide:last-child{margin-block-end:var(--swiper-slides-offset-after)}}&.swiper-free-mode{>.swiper-wrapper{scroll-snap-type:none}>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}}&.swiper-centered{>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}}&.swiper-centered.swiper-horizontal{>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}}&.swiper-centered.swiper-vertical{>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}}}.swiper-3d{.swiper-slide-shadow,.swiper-slide-shadow-bottom,.swiper-slide-shadow-left,.swiper-slide-shadow-right,.swiper-slide-shadow-top{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}.swiper-slide-shadow{background:#00000026}.swiper-slide-shadow-left{background-image:linear-gradient(270deg,#00000080,#0000)}.swiper-slide-shadow-right{background-image:linear-gradient(90deg,#00000080,#0000)}.swiper-slide-shadow-top{background-image:linear-gradient(0deg,#00000080,#0000)}.swiper-slide-shadow-bottom{background-image:linear-gradient(180deg,#00000080,#0000)}}.swiper-lazy-preloader{border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid #0000;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}.swiper-watch-progress .swiper-slide-visible,.swiper:not(.swiper-watch-progress){.swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite}}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}} \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper.min.js b/vendor/javascript/swiper/swiper.min.js new file mode 100644 index 0000000..a68ceb8 --- /dev/null +++ b/vendor/javascript/swiper/swiper.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +var Swiper=function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s={},i={}){const r=["__proto__","constructor","prototype"];Object.keys(i).filter(e=>r.indexOf(e)<0).forEach(r=>{void 0===s[r]?s[r]=i[r]:e(i[r])&&e(s[r])&&Object.keys(i[r]).length>0&&t(s[r],i[r])})}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const r={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function n(){const e="undefined"!=typeof window?window:{};return t(e,r),e}function a(e,t=0){return setTimeout(e,t)}function o(){return Date.now()}function l(e,t="x"){const s=n();let i,r,a;const o=function(e){const t=n();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(r=o.transform||o.webkitTransform,r.split(",").length>6&&(r=r.split(", ").map(e=>e.replace(",",".")).join(", ")),a=new s.WebKitCSSMatrix("none"===r?"":r)):(a=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=a.toString().split(",")),"x"===t&&(r=s.WebKitCSSMatrix?a.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(r=s.WebKitCSSMatrix?a.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),r||0}function d(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function p(...e){const t=Object(e[0]);for(let s=1;s"__proto__"!==e&&"constructor"!==e&&"prototype"!==e);for(let s=0,r=e.length;sr?"next":"prev",c=(e,t)=>"next"===d&&e>=t||"prev"===d&&e<=t,p=()=>{a=(new Date).getTime(),null===o&&(o=a);const n=Math.max(Math.min((a-o)/l,1),0),d=.5-Math.cos(n*Math.PI)/2;let u=r+d*(t-r);if(c(u,t)&&(u=t),e.wrapperEl.scrollTo({[s]:u}),c(u,t))return e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.scrollSnapType="",setTimeout(()=>{e.wrapperEl.style.overflow="",e.wrapperEl.scrollTo({[s]:u})}),void i.cancelAnimationFrame(e.cssModeFrameID);e.cssModeFrameID=i.requestAnimationFrame(p)};p()}function h(e,t=""){const s=n(),i=[...e.children];return s.HTMLSlotElement&&e instanceof HTMLSlotElement&&i.push(...e.assignedElements()),t?i.filter(e=>e.matches(t)):i}function m(e){try{return void console.warn(e)}catch(e){}}function g(e,t=[]){const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:function(e=""){return e.trim().split(" ").filter(e=>!!e.trim())}(t)),s}function v(e,t){return n().getComputedStyle(e,null).getPropertyValue(t)}function w(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function S(e,t,s){const i=n();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let T,b,x;function y(){return T||(T=function(){const e=n(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),T}function E(e={}){return b||(b=function({userAgent:e}={}){const t=y(),s=n(),i=s.navigator.platform,r=e||s.navigator.userAgent,a={ios:!1,android:!1},o=s.screen.width,l=s.screen.height,d=r.match(/(Android);?[\s\/]+([\d.]+)?/);let c=r.match(/(iPad)(?!\1).*OS\s([\d_]+)/);const p=r.match(/(iPod)(.*OS\s([\d_]+))?/),u=!c&&r.match(/(iPhone\sOS|iOS)\s([\d_]+)/),f="Win32"===i;let h="MacIntel"===i;return!c&&h&&t.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${l}`)>=0&&(c=r.match(/(Version)\/([\d.]+)/),c||(c=[0,1,"13_0_0"]),h=!1),d&&!f&&(a.os="android",a.android=!0),(c||u||p)&&(a.os="ios",a.ios=!0),a}(e)),b}function M(){return x||(x=function(){const e=n(),t=E();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map(e=>Number(e));s=e<16||16===e&&i<2}}const r=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),a=i();return{isSafari:s||a,needPerspectiveFix:s,need3dFix:a||r&&t.ios,isWebView:r}}()),x}var P={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach(e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)}),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(...s){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy,t.apply(i,s)}return r.__emitterProxy=t,i.on(e,r,s)},onAny(e,t){const s=this;if(!s.eventsListeners||s.destroyed)return s;if("function"!=typeof e)return s;const i=t?"unshift":"push";return s.eventsAnyListeners.indexOf(e)<0&&s.eventsAnyListeners[i](e),s},offAny(e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsAnyListeners)return t;const s=t.eventsAnyListeners.indexOf(e);return s>=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach(e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)})}),s):s},emit(...e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsListeners)return t;let s,i,r;"string"==typeof e[0]||Array.isArray(e[0])?(s=e[0],i=e.slice(1,e.length),r=t):(s=e[0].events,i=e[0].data,r=e[0].context||t),i.unshift(r);return(Array.isArray(s)?s:s.split(" ")).forEach(e=>{t.eventsAnyListeners&&t.eventsAnyListeners.length&&t.eventsAnyListeners.forEach(t=>{t.apply(r,[e,...i])}),t.eventsListeners&&t.eventsListeners[e]&&t.eventsListeners[e].forEach(e=>{e.apply(r,i)})}),t}};const C=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const I=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const L=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame(()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&!t.lazyPreloaderManaged&&t.remove())})),t&&!t.lazyPreloaderManaged&&t.remove()}},k=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},O=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map((e,t)=>s+i+t)),void e.slides.forEach((t,s)=>{n.includes(t.column)&&k(e,s)})}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&k(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=0?y=parseFloat(y.replace("%",""))/100*x:"string"==typeof y&&(y=parseFloat(y)),e.virtualSize=-y-g-w,d.forEach(e=>{n?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""}),s.centeredSlides&&s.cssMode&&(u(i,"--swiper-centered-offset-before",""),u(i,"--swiper-centered-offset-after","")),s.cssMode&&(u(i,"--swiper-slides-offset-before",`${g}px`),u(i,"--swiper-slides-offset-after",`${w}px`));const C=s.grid&&s.grid.rows>1&&e.grid;let I;C?e.grid.initSlides(d):e.grid&&e.grid.unsetSlides();const L="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter(e=>void 0!==s.breakpoints[e].slidesPerView).length>0;for(let i=0;i=0&&(t+=m[s]+(s1&&(i||p.push(e.virtualSize-x))}if(o&&s.loop){const t=m[0]+y;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==d.length-1).forEach(e=>{e.style[t]=`${y}px`})}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;m.forEach(t=>{e+=t+(y||0)}),e-=y;const t=e>x?e-x:0;p=p.map(e=>e<=0?-g:e>t?t+w:e)}if(s.centerInsufficientSlides){let e=0;if(m.forEach(t=>{e+=t+(y||0)}),e-=y,e{p[s]=e-t}),f.forEach((e,s)=>{f[s]=e+t})}}if(Object.assign(e,{slides:d,snapGrid:p,slidesGrid:f,slidesSizesGrid:m}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){u(i,"--swiper-centered-offset-before",-p[0]+"px"),u(i,"--swiper-centered-offset-after",e.size/2-m[m.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map(e=>e+t),e.slidesGrid=e.slidesGrid.map(e=>e+s)}if(c!==l&&e.emit("slidesLengthChange"),p.length!==T&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),f.length!==b&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);c<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach(e=>{s.push(e)});else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i=0?o=parseFloat(o.replace("%",""))/100*t.size:"string"==typeof o&&(o=parseFloat(o));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],m=u>=0&&u1&&f<=t.size||u<=0&&f>=t.size;m&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e)),C(l,m,s.slideVisibleClass),C(l,h,s.slideFullyVisibleClass),l.progress=r?-c:c,l.originalProgress=r?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:o}=t;const l=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,o=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=o||r>=1,s&&(r=0),o&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],l=Math.abs(e);o=l>=r?(l-r)/a:(l+a-n)/a,o>1&&(o-=1)}Object.assign(t,{progress:r,progressLoop:o,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!l&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(l&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,o=e=>h(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let l,d,c;if(n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),l=o(`[data-swiper-slide-index="${t}"]`)}else l=o(`[data-swiper-slide-index="${r}"]`);else a?(l=t.find(e=>e.column===r),c=t.find(e=>e.column===r+1),d=t.find(e=>e.column===r-1)):l=t[r];l&&(a||(c=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach(e=>{I(e,e===l,s.slideActiveClass),I(e,e===c,s.slideNextClass),I(e,e===d,s.slidePrevClass)}),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:o}=t;let l,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let r;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}(t)),i.indexOf(s)>=0)l=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);l=e+Math.floor((d-e)/r.slidesPerGroup)}if(l>=i.length&&(l=i.length-1),d===n&&!t.params.loop)return void(l!==o&&(t.snapIndex=l,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled)u=r.loop?c(d):d;else if(p){const e=t.slides.find(e=>e.column===d);let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:o,snapIndex:l,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&O(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach(e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)});let n,a=!1;if(r)for(let e=0;el?l:i&&en?"next":r=l.length&&(v=l.length-1);const w=-l[v];if(o.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(u?w>n.translate&&w>n.minTranslate():wn.translate&&w>n.maxTranslate()&&(p||0)!==a)return!1}let S;a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(w),S=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame(()=>{h[e?"scrollLeft":"scrollTop"]=s})):h[e?"scrollLeft":"scrollTop"]=s,T&&requestAnimationFrame(()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1});else{if(!n.support.smoothScroll)return f({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}const b=M().isSafari;return T&&!r&&b&&n.isElement&&n.virtual.update(!1,!1,a),n.setTransition(t),n.setTranslate(w),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,S),0===t?n.transitionEnd(s,S):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,S))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e=0,t,s=!0,i){if("string"==typeof e){e=parseInt(e,10)}const r=this;if(r.destroyed)return;void 0===t&&(t=r.params.speed);const n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.find(e=>1*e.getAttribute("data-swiper-slide-index")===t).column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s,slidesOffsetBefore:o,slidesOffsetAfter:l}=r.params,d=s||!!o||!!l;let c=r.params.slidesPerView;"auto"===c?c=r.slidesPerViewDynamic():(c=Math.ceil(parseFloat(r.params.slidesPerView,10)),d&&c%2==0&&(c+=1));let p=t-e1*t.getAttribute("data-swiper-slide-index")===e).column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame(()=>{r.slideTo(a,t,s,i)}),r},slideNext:function(e,t=!0,s){const i=this,{enabled:r,params:n,animating:a}=i;if(!r||i.destroyed)return i;void 0===e&&(e=i.params.speed);let o=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(o=Math.max(i.slidesPerViewDynamic("current",!0),1));const l=i.activeIndex{i.slideTo(i.activeIndex+l,e,t,s)}),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+l,e,t,s)},slidePrev:function(e,t=!0,s){const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:o,enabled:l,animating:d}=i;if(!l||i.destroyed)return i;void 0===e&&(e=i.params.speed);const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(o?i.translate:-i.translate),f=n.map(e=>p(e)),h=r.freeMode&&r.freeMode.enabled;let m=n[f.indexOf(u)-1];if(void 0===m&&(r.cssMode||h)){let e;n.forEach((t,s)=>{u>=t&&(e=s)}),void 0!==e&&(m=h?n[e]:n[e>0?e-1:e])}let g=0;if(void 0!==m&&(g=a.indexOf(m),g<0&&(g=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(g=g-i.slidesPerViewDynamic("previous",!0)+1,g=Math.max(g,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame(()=>{i.slideTo(g,e,t,s)}),!0):i.slideTo(g,e,t,s)},slideReset:function(e,t=!0,s){const i=this;if(!i.destroyed)return void 0===e&&(e=i.params.speed),i.slideTo(i.activeIndex,e,t,s)},slideToClosest:function(e,t=!0,s,i=.5){const r=this;if(r.destroyed)return;void 0===e&&(e=r.params.speed);let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),o=a+Math.floor((n-a)/r.params.slidesPerGroup),l=r.rtlTranslate?r.translate:-r.translate;if(l>=r.snapGrid[o]){const e=r.snapGrid[o];l-e>(r.snapGrid[o+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[o-1];l-e<=(r.snapGrid[o]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.getSlideIndexWhenGrid(e.clickedIndex);const o=e.isElement?"swiper-slide":`.${t.slideClass}`,l=e.grid&&e.params.grid&&e.params.grid.rows>1;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?e.slideToLoop(r):n>(l?(e.slides.length-i)/2-(e.params.grid.rows-1):e.slides.length-i)?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a(()=>{e.slideTo(n)})):e.slideTo(n)}else e.slideTo(n)}};var D={loopCreate:function(e,t){const s=this,{params:i,slidesEl:r}=s;if(!i.loop||s.virtual&&s.params.virtual.enabled)return;const n=()=>{h(r,`.${i.slideClass}, swiper-slide`).forEach((e,t)=>{e.setAttribute("data-swiper-slide-index",t)})},a=s.grid&&i.grid&&i.grid.rows>1;i.loopAddBlankSlides&&(i.slidesPerGroup>1||a)&&(()=>{const e=h(r,`.${i.slideBlankClass}`);e.forEach(e=>{e.remove()}),e.length>0&&(s.recalcSlides(),s.updateSlides())})();const o=i.slidesPerGroup*(a?i.grid.rows:1),l=s.slides.length%o!==0,d=a&&s.slides.length%i.grid.rows!==0,c=e=>{for(let t=0;t1;d.lengthe.classList.contains(f.slideActiveClass))):I=r;const L="next"===s||!s,k="prev"===s||!s;let O=0,z=0;const A=(y?d[r].column:r)+(S&&void 0===i?-T/2+.5:0);if(A=0;t-=1)d[t].column===e&&E.push(t)}else E.push(P-t-1)}}else if(A+T>P-x){z=Math.max(A-(P-2*x),b),C&&(z=Math.max(z,T-P+w+1));for(let e=0;e{e.column===t&&M.push(s)}):M.push(t)}}if(l.__preventObserver__=!0,requestAnimationFrame(()=>{l.__preventObserver__=!1}),"cards"===l.params.effect&&d.length{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1}),L&&M.forEach(e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1}),l.recalcSlides(),"auto"===f.slidesPerView?l.updateSlides():y&&(E.length>0&&k||M.length>0&&L)&&l.slides.forEach((e,t)=>{l.grid.updateSlide(t,e,l.slides)}),f.watchSlidesProgress&&l.updateSlidesOffset(),t)if(E.length>0&&k){if(void 0===e){const e=l.slidesGrid[I],t=l.slidesGrid[I+O]-e;o?l.setTranslate(l.translate-t):(l.slideTo(I+Math.ceil(O),0,!1,!0),i&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else if(i){const e=y?E.length/f.grid.rows:E.length;l.slideTo(l.activeIndex+e,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(M.length>0&&L)if(void 0===e){const e=l.slidesGrid[I],t=l.slidesGrid[I-z]-e;o?l.setTranslate(l.translate-t):(l.slideTo(I-z,0,!1,!0),i&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else{const e=y?M.length/f.grid.rows:M.length;l.slideTo(l.activeIndex-e,0,!1,!0)}if(l.allowSlidePrev=c,l.allowSlideNext=p,l.controller&&l.controller.control&&!a){const n={slideRealIndex:e,direction:s,setTranslate:i,activeSlideIndex:r,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach(e=>{!e.destroyed&&e.params.loop&&e.loopFix({...n,slideTo:e.params.slidesPerView===f.slidesPerView&&t})}):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...n,slideTo:l.controller.control.params.slidesPerView===f.slidesPerView&&t})}l.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||!s||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach(e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e}),e.slides.forEach(e=>{e.removeAttribute("data-swiper-slide-index")}),i.forEach(e=>{s.append(e)}),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function V(e,t,s){const i=n(),{params:r}=e,a=r.edgeSwipeDetection,o=r.edgeSwipeThreshold;return!a||!(s<=o||s>=i.innerWidth-o)||"prevent"===a&&(t.preventDefault(),!0)}function B(e){const t=this,s=i();let r=e;r.originalEvent&&(r=r.originalEvent);const a=t.touchEventsData;if("pointerdown"===r.type){if(null!==a.pointerId&&a.pointerId!==r.pointerId)return;a.pointerId=r.pointerId}else"touchstart"===r.type&&1===r.targetTouches.length&&(a.touchId=r.targetTouches[0].identifier);if("touchstart"===r.type)return void V(t,r,r.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===r.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=r.target;if("wrapper"===l.touchEventsTarget&&!function(e,t){const s=n();let i=t.contains(e);!i&&s.HTMLSlotElement&&t instanceof HTMLSlotElement&&(i=[...t.assignedElements()].includes(e),i||(i=function(e,t){const s=[t];for(;s.length>0;){const t=s.shift();if(e===t)return!0;s.push(...t.children,...t.shadowRoot?t.shadowRoot.children:[],...t.assignedElements?t.assignedElements():[])}}(e,t)));return i}(p,t.wrapperEl))return;if("which"in r&&3===r.which)return;if("button"in r&&r.button>0)return;if(a.isTouched&&a.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,f=r.composedPath?r.composedPath():r.path;u&&r.target&&r.target.shadowRoot&&f&&(p=f[0]);const h=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,m=!(!r.target||!r.target.shadowRoot);if(l.noSwiping&&(m?function(e,t=this){return function t(s){if(!s||s===i()||s===n())return null;s.assignedSlot&&(s=s.assignedSlot);const r=s.closest(e);return r||s.getRootNode?r||t(s.getRootNode().host):null}(t)}(h,p):p.closest(h)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=r.pageX,d.currentY=r.pageY;const g=d.currentX,v=d.currentY;if(!V(t,r,g))return;Object.assign(a,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=g,d.startY=v,a.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(a.allowThresholdMove=!1);let w=!0;p.matches(a.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(a.isTouched=!1)),s.activeElement&&s.activeElement.matches(a.focusableElements)&&s.activeElement!==p&&("mouse"===r.pointerType||"mouse"!==r.pointerType&&!p.matches(a.focusableElements))&&s.activeElement.blur();const S=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!S||p.isContentEditable||r.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",r)}function N(e){const t=i(),s=this,r=s.touchEventsData,{params:n,touches:a,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!n.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==r.touchId)return;if(p.pointerId!==r.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].find(e=>e.identifier===r.touchId),!c||c.identifier!==r.touchId)return}else c=p;if(!r.isTouched)return void(r.startMoving&&r.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,f=c.pageY;if(p.preventedByNestedSwiper)return a.startX=u,void(a.startY=f);if(!s.allowTouchMove)return p.target.matches(r.focusableElements)||(s.allowClick=!1),void(r.isTouched&&(Object.assign(a,{startX:u,startY:f,currentX:u,currentY:f}),r.touchStartTime=o()));if(n.touchReleaseOnEdges&&!n.loop)if(s.isVertical()){if(fa.startY&&s.translate>=s.minTranslate())return r.isTouched=!1,void(r.isMoved=!1)}else{if(l&&(u>a.startX&&-s.translate<=s.maxTranslate()||u=s.minTranslate()))return;if(!l&&(ua.startX&&s.translate>=s.minTranslate()))return}if(t.activeElement&&t.activeElement.matches(r.focusableElements)&&t.activeElement!==p.target&&"mouse"!==p.pointerType&&t.activeElement.blur(),t.activeElement&&p.target===t.activeElement&&p.target.matches(r.focusableElements))return r.isMoved=!0,void(s.allowClick=!1);r.allowTouchCallbacks&&s.emit("touchMove",p),a.previousX=a.currentX,a.previousY=a.currentY,a.currentX=u,a.currentY=f;const h=a.currentX-a.startX,m=a.currentY-a.startY;if(s.params.threshold&&Math.sqrt(h**2+m**2)=25&&(e=180*Math.atan2(Math.abs(m),Math.abs(h))/Math.PI,r.isScrolling=s.isHorizontal()?e>n.touchAngle:90-e>n.touchAngle)}if(r.isScrolling&&s.emit("touchMoveOpposite",p),void 0===r.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(r.startMoving=!0)),r.isScrolling||"touchmove"===p.type&&r.preventTouchMoveFromPointerMove)return void(r.isTouched=!1);if(!r.startMoving)return;s.allowClick=!1,!n.cssMode&&p.cancelable&&p.preventDefault(),n.touchMoveStopPropagation&&!n.nested&&p.stopPropagation();let g=s.isHorizontal()?h:m,v=s.isHorizontal()?a.currentX-a.previousX:a.currentY-a.previousY;n.oneWayMovement&&(g=Math.abs(g)*(l?1:-1),v=Math.abs(v)*(l?1:-1)),a.diff=g,g*=n.touchRatio,l&&(g=-g,v=-v);const w=s.touchesDirection;s.swipeDirection=g>0?"prev":"next",s.touchesDirection=v>0?"prev":"next";const S=s.params.loop&&!n.cssMode,T="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!r.isMoved){if(S&&T&&s.loopFix({direction:s.swipeDirection}),r.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}r.allowMomentumBounce=!1,!n.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),!1!==n._loopSwapReset&&r.isMoved&&r.allowThresholdMove&&w!==s.touchesDirection&&S&&T&&Math.abs(g)>=1)return Object.assign(a,{startX:u,startY:f,currentX:u,currentY:f,startTranslate:r.currentTranslate}),r.loopSwapReset=!0,void(r.startTranslate=r.currentTranslate);s.emit("sliderMove",p),r.isMoved=!0,r.currentTranslate=g+r.startTranslate;let b=!0,x=n.resistanceRatio;if(n.touchReleaseOnEdges&&(x=0),g>0?(S&&T&&r.allowThresholdMove&&r.currentTranslate>(n.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]-("auto"!==n.slidesPerView&&s.slides.length-n.slidesPerView>=2?s.slidesSizesGrid[s.activeIndex+1]+s.params.spaceBetween:0)-s.params.spaceBetween:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),r.currentTranslate>s.minTranslate()&&(b=!1,n.resistance&&(r.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+r.startTranslate+g)**x))):g<0&&(S&&T&&r.allowThresholdMove&&r.currentTranslate<(n.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]+s.params.spaceBetween+("auto"!==n.slidesPerView&&s.slides.length-n.slidesPerView>=2?s.slidesSizesGrid[s.slidesSizesGrid.length-1]+s.params.spaceBetween:0):s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===n.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(n.slidesPerView,10)))}),r.currentTranslater.startTranslate&&(r.currentTranslate=r.startTranslate),s.allowSlidePrev||s.allowSlideNext||(r.currentTranslate=r.startTranslate),n.threshold>0){if(!(Math.abs(g)>n.threshold||r.allowThresholdMove))return void(r.currentTranslate=r.startTranslate);if(!r.allowThresholdMove)return r.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,r.currentTranslate=r.startTranslate,void(a.diff=s.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}n.followFinger&&!n.cssMode&&((n.freeMode&&n.freeMode.enabled&&s.freeMode||n.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),n.freeMode&&n.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(r.currentTranslate),s.setTranslate(r.currentTranslate))}function F(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].find(e=>e.identifier===s.touchId),!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:l,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),f=u-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),f<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=o(),a(()=>{t.destroyed||(t.allowClick=!0)}),!s.isTouched||!s.isMoved||!t.swipeDirection||0===l.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=n.followFinger?d?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const m=h>=-t.maxTranslate()&&!t.params.loop;let g=0,v=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&h=c[e])&&(g=e,v=c[c.length-1]-c[c.length-2])}let w=null,S=null;n.rewind&&(t.isBeginning?S=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const T=(h-c[g])/v,b=gn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(T>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?w:g+b):t.slideTo(g)),"prev"===t.swipeDirection&&(T>1-n.longSwipesRatio?t.slideTo(g+b):null!==S&&T<0&&Math.abs(T)>n.longSwipesRatio?t.slideTo(S):t.slideTo(g))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(g+b):t.slideTo(g):("next"===t.swipeDirection&&t.slideTo(null!==w?w:g+b),"prev"===t.swipeDirection&&t.slideTo(null!==S?S:g))}}function $(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const o=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout(()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()},500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function H(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function R(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function j(e){const t=this;L(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function W(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const X=(e,t)=>{const s=i(),{params:r,el:n,wrapperEl:a,device:o}=e,l=!!r.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;n&&"string"!=typeof n&&(s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),n[d]("touchstart",e.onTouchStart,{passive:!1}),n[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(r.preventClicks||r.preventClicksPropagation)&&n[d]("click",e.onClick,!0),r.cssMode&&a[d]("scroll",e.onScroll),r.updateOnWindowResize?e[c](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",$,!0):e[c]("observerUpdate",$,!0),n[d]("load",e.onLoad,{capture:!0}))};const Y=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var q={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,snapToSlideEdge:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function U(e,t){return function(s={}){const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),p(t,s)):p(t,s)):p(t,s)}}const K={eventsEmitter:P,update:z,translate:A,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e=!0,t){const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),G({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e=!0,t){const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),G({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:_,loop:D,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame(()=>{t.__preventObserver__=!1})},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame(()=>{e.__preventObserver__=!1}))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=B.bind(e),e.onTouchMove=N.bind(e),e.onTouchEnd=F.bind(e),e.onDocumentTouchStart=W.bind(e),t.cssMode&&(e.onScroll=R.bind(e)),e.onClick=H.bind(e),e.onLoad=j.bind(e),X(e,"on")},detachEvents:function(){X(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:r,el:n}=e,a=r.breakpoints;if(!a||a&&0===Object.keys(a).length)return;const o=i(),l="window"!==r.breakpointsBase&&r.breakpointsBase?"container":r.breakpointsBase,d=["window","container"].includes(r.breakpointsBase)||!r.breakpointsBase?e.el:o.querySelector(r.breakpointsBase),c=e.getBreakpoint(a,l,d);if(!c||e.currentBreakpoint===c)return;const u=(c in a?a[c]:void 0)||e.originalParams,f=Y(e,r),h=Y(e,u),m=e.params.grabCursor,g=u.grabCursor,v=r.enabled;f&&!h?(n.classList.remove(`${r.containerModifierClass}grid`,`${r.containerModifierClass}grid-column`),e.emitContainerClasses()):!f&&h&&(n.classList.add(`${r.containerModifierClass}grid`),(u.grid.fill&&"column"===u.grid.fill||!u.grid.fill&&"column"===r.grid.fill)&&n.classList.add(`${r.containerModifierClass}grid-column`),e.emitContainerClasses()),m&&!g?e.unsetGrabCursor():!m&&g&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach(t=>{if(void 0===u[t])return;const s=r[t]&&r[t].enabled,i=u[t]&&u[t].enabled;s&&!i&&e[t].disable(),!s&&i&&e[t].enable()});const w=u.direction&&u.direction!==r.direction,S=r.loop&&(u.slidesPerView!==r.slidesPerView||w),T=r.loop;w&&s&&e.changeDirection(),p(e.params,u);const b=e.params.enabled,x=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),v&&!b?e.disable():!v&&b&&e.enable(),e.currentBreakpoint=c,e.emit("_beforeBreakpoint",u),s&&(S?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!T&&x?(e.loopCreate(t),e.updateSlides()):T&&!x&&e.loopDestroy()),e.emit("breakpoint",u)},getBreakpoint:function(e,t="window",s){if(!e||"container"===t&&!s)return;let i=!1;const r=n(),a="window"===t?r.innerHeight:s.clientHeight,o=Object.keys(e).map(e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:a*t,point:e}}return{value:e,point:e}});o.sort((e,t)=>parseInt(e.value,10)-parseInt(t.value,10));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=function(e,t){const s=[];return e.forEach(e=>{"object"==typeof e?Object.keys(e).forEach(i=>{e[i]&&s.push(t+i)}):"string"==typeof e&&s.push(t+e)}),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},J={};class Q{constructor(...e){let t,s;1===e.length&&e[0].constructor&&"Object"===Object.prototype.toString.call(e[0]).slice(8,-1)?s=e[0]:[t,s]=e,s||(s={}),s=p({},s),t&&!s.el&&(s.el=t);const r=i();if(s.el&&"string"==typeof s.el&&r.querySelectorAll(s.el).length>1){const e=[];return r.querySelectorAll(s.el).forEach(t=>{const i=p({},s,{el:t});e.push(new Q(i))}),e}const n=this;n.__swiper__=!0,n.support=y(),n.device=E({userAgent:s.userAgent}),n.browser=M(),n.eventsListeners={},n.eventsAnyListeners=[],n.modules=[...n.__modules__],s.modules&&Array.isArray(s.modules)&&s.modules.forEach(e=>{"function"==typeof e&&n.modules.indexOf(e)<0&&n.modules.push(e)});const a={};n.modules.forEach(e=>{e({params:s,swiper:n,extendParams:U(s,a),on:n.on.bind(n),once:n.once.bind(n),off:n.off.bind(n),emit:n.emit.bind(n)})});const o=p({},q,a);return n.params=p({},o,J,s),n.originalParams=p({},n.params),n.passedParams=p({},s),n.params&&n.params.on&&Object.keys(n.params.on).forEach(e=>{n.on(e,n.params.on[e])}),n.params&&n.params.onAny&&n.onAny(n.params.onAny),Object.assign(n,{enabled:n.params.enabled,el:t,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===n.params.direction,isVertical:()=>"vertical"===n.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:n.params.allowSlideNext,allowSlidePrev:n.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:n.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:n.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),n.emit("_swiper"),n.params.init&&n.init(),n}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=w(h(t,`.${s.slideClass}, swiper-slide`)[0]);return w(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.find(t=>1*t.getAttribute("data-swiper-slide-index")===e))}getSlideIndexWhenGrid(e){return this.grid&&this.params.grid&&this.params.grid.rows>1&&("column"===this.params.grid.fill?e=Math.floor(e/this.params.grid.rows):"row"===this.params.grid.fill&&(e%=Math.ceil(this.slides.length/this.params.grid.rows))),e}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=h(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter(t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter(e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass)).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach(s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)}),e.emit("_slideClasses",t)}slidesPerViewDynamic(e="current",t=!1){const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:o}=this;let l=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[o]?Math.ceil(i[o].swiperSlideSize):0;for(let s=o+1;sa&&(e=!0));for(let s=o-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,l+=1,t>a&&(e=!0))}else if("current"===e)for(let e=o+1;e=0;e-=1){r[o]-r[e]{t.complete&&L(e,t)}),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t=!0){const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach(t=>{"vertical"===e?t.style.width="":t.style.height=""}),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return h(s,i())[0]})();return!r&&t.params.createElements&&(r=g("div",t.params.wrapperClass),s.append(r),h(s,`.${t.params.slideClass}`).forEach(e=>{r.append(e)})),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction")),wrongRTL:"-webkit-box"===v(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(void 0,!0),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach(e=>{e.complete?L(t,e):e.addEventListener("load",e=>{L(t,e.target)})}),O(t),t.initialized=!0,O(t),t.emit("init"),t.emit("afterInit"),t}destroy(e=!0,t=!0){const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r&&"string"!=typeof r&&r.removeAttribute("style"),n&&n.removeAttribute("style"),a&&a.length&&a.forEach(e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")})),s.emit("destroy"),Object.keys(s.eventsListeners).forEach(e=>{s.off(e)}),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),function(e){const t=e;Object.keys(t).forEach(e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}})}(s)),s.destroyed=!0),null}static extendDefaults(e){p(J,e)}static get extendedDefaults(){return J}static get defaults(){return q}static installModule(e){Q.prototype.__modules__||(Q.prototype.__modules__=[]);const t=Q.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach(e=>Q.installModule(e)),Q):(Q.installModule(e),Q)}}return Object.keys(K).forEach(e=>{Object.keys(K[e]).forEach(t=>{Q.prototype[t]=K[e][t]})}),Q.use([function({swiper:e,on:t,emit:s}){const i=n();let r=null,a=null;const o=()=>{e&&!e.destroyed&&e.initialized&&(s("beforeResize"),s("resize"))},l=()=>{e&&!e.destroyed&&e.initialized&&s("orientationchange")};t("init",()=>{e.params.resizeObserver&&void 0!==i.ResizeObserver?e&&!e.destroyed&&e.initialized&&(r=new ResizeObserver(t=>{a=i.requestAnimationFrame(()=>{const{width:s,height:i}=e;let r=s,n=i;t.forEach(({contentBoxSize:t,contentRect:s,target:i})=>{i&&i!==e.el||(r=s?s.width:(t[0]||t).inlineSize,n=s?s.height:(t[0]||t).blockSize)}),r===s&&n===i||o()})}),r.observe(e.el)):(i.addEventListener("resize",o),i.addEventListener("orientationchange",l))}),t("destroy",()=>{a&&i.cancelAnimationFrame(a),r&&r.unobserve&&e.el&&(r.unobserve(e.el),r=null),i.removeEventListener("resize",o),i.removeEventListener("orientationchange",l)})},function({swiper:e,extendParams:t,on:s,emit:i}){const r=[],a=n(),o=(t,s={})=>{const n=new(a.MutationObserver||a.WebkitMutationObserver)(t=>{if(e.__preventObserver__)return;if(1===t.length)return void i("observerUpdate",t[0]);const s=function(){i("observerUpdate",t[0])};a.requestAnimationFrame?a.requestAnimationFrame(s):a.setTimeout(s,0)});n.observe(t,{attributes:void 0===s.attributes||s.attributes,childList:e.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),r.push(n)};t({observer:!1,observeParents:!1,observeSlideChildren:!1}),s("init",()=>{if(e.params.observer){if(e.params.observeParents){const t=function(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}(e.hostEl);for(let e=0;e{r.forEach(e=>{e.disconnect()}),r.splice(0,r.length)})}]),Q}(); +//# sourceMappingURL=swiper.min.js.map \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper.min.js.map b/vendor/javascript/swiper/swiper.min.js.map new file mode 100644 index 0000000..d2c501d --- /dev/null +++ b/vendor/javascript/swiper/swiper.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper.js.js","names":["Swiper","isObject$1","obj","constructor","Object","extend$1","target","src","noExtend","keys","filter","key","indexOf","forEach","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject","o","prototype","call","slice","isNode","node","HTMLElement","nodeType","extend","args","to","i","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","undefined","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","showWarning","text","console","warn","err","tag","classes","classList","add","Array","isArray","trim","c","classesToTokens","elementStyle","prop","elementIndex","child","previousSibling","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","unshift","toggleSlideClasses$1","slideEl","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","lazyPreloaderManaged","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","swiperSize","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slidesPerViewAutoSlideSize","roundLengths","floor","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","isFractionalSlidesPerView","shouldSnapToSlideEdge","snapToSlideEdge","lastAllowedSnapIndex","minVisibleSlides","accumulatedSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","find","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","e","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","bothDirections","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","isFreeMode","freeMode","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","getSlideIndexWhenGrid","slideSelector","isGrid","getSlideIndex","loopCreate","loopAddBlankSlides","slideBlankClass","recalcSlides","clearBlankSlides","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","append","byMousewheel","loopedSlides","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isInitialOverflow","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","parent","isChild","slot","elementsQueue","elementToCheck","elementIsChildOfSlot","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","_loopSwapReset","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpointContainer","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parentElement","elementParents","disconnect"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper.min.mjs b/vendor/javascript/swiper/swiper.min.mjs new file mode 100644 index 0000000..a262778 --- /dev/null +++ b/vendor/javascript/swiper/swiper.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +export{S as Swiper,S as default}from"./shared/swiper-core.min.mjs"; +//# sourceMappingURL=swiper.min.mjs.map \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper.min.mjs.map b/vendor/javascript/swiper/swiper.min.mjs.map new file mode 100644 index 0000000..6938270 --- /dev/null +++ b/vendor/javascript/swiper/swiper.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper.mjs.mjs","names":["S"],"sources":["0"],"mappings":";;;;;;;;;;;;OAYSA,YAAaA,iBAAoB"} \ No newline at end of file diff --git a/vendor/javascript/swiper/swiper.mjs b/vendor/javascript/swiper/swiper.mjs new file mode 100644 index 0000000..c3f2904 --- /dev/null +++ b/vendor/javascript/swiper/swiper.mjs @@ -0,0 +1,13 @@ +/** + * Swiper 12.1.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2026 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 18, 2026 + */ + +export { S as Swiper, S as default } from './shared/swiper-core.mjs'; diff --git a/vendor/javascript/swiper/types/index.d.ts b/vendor/javascript/swiper/types/index.d.ts new file mode 100644 index 0000000..e6e0dc4 --- /dev/null +++ b/vendor/javascript/swiper/types/index.d.ts @@ -0,0 +1,6 @@ +// @ts-nocheck +export * from './shared.d.ts'; +export { default as Swiper } from './swiper-class.d.ts'; +export * from './swiper-events.d.ts'; +export * from './swiper-options.d.ts'; +export * from './modules/public-api.d.ts'; diff --git a/vendor/javascript/swiper/types/modules/a11y.d.ts b/vendor/javascript/swiper/types/modules/a11y.d.ts new file mode 100644 index 0000000..5546502 --- /dev/null +++ b/vendor/javascript/swiper/types/modules/a11y.d.ts @@ -0,0 +1,117 @@ +export interface A11yMethods {} + +export interface A11yEvents {} + +export interface A11yOptions { + /** + * Enables A11y + * + * @default true + */ + enabled?: boolean; + + /** + * Message for screen readers for previous button + * + * @default 'Previous slide' + */ + prevSlideMessage?: string; + + /** + * Message for screen readers for next button + * + * @default 'Next slide' + */ + nextSlideMessage?: string; + + /** + * Message for screen readers for previous button when swiper is on first slide + * + * @default 'This is the first slide' + */ + firstSlideMessage?: string; + + /** + * Message for screen readers for next button when swiper is on last slide + * + * @default 'This is the last slide' + */ + lastSlideMessage?: string; + + /** + * Message for screen readers for single pagination bullet + * + * @default 'Go to slide {{index}}' + */ + paginationBulletMessage?: string; + + /** + * CSS class name of A11y notification + * + * @default 'swiper-notification' + */ + notificationClass?: string; + + /** + * Message for screen readers for outer swiper container + * + * @default null + */ + containerMessage?: string | null; + + /** + * Message for screen readers describing the role of outer swiper container + * + * @default null + */ + containerRoleDescriptionMessage?: string | null; + + /** + * Value of the "role" attribute to be set on the swiper container + * + * @default null + */ + containerRole?: string | null; + + /** + * Message for screen readers describing the role of slide element + * + * @default null + */ + itemRoleDescriptionMessage?: string | null; + + /** + * Message for screen readers describing the label of slide element + * + * @default '{{index}} / {{slidesLength}}' + */ + slideLabelMessage?: string; + + /** + * Value of swiper slide `role` attribute + * + * @default 'group' + */ + slideRole?: string; + + /** + * Value of `id` attribute to be set on swiper-wrapper. If `null` will be generated automatically + * + * @default null + */ + id?: string | number | null; + + /** + * Enables scrolling to the slide that has been focused + * + * @default true + */ + scrollOnFocus?: boolean; + /** + * Whether or not the swiper-wrapper should have the `aria-live` attribute applied to it. + * If true, the value will be `off` when autoplay is enabled, otherwise it will be `polite` + * + * @default true + */ + wrapperLiveRegion?: boolean; +} diff --git a/vendor/javascript/swiper/types/modules/autoplay.d.ts b/vendor/javascript/swiper/types/modules/autoplay.d.ts new file mode 100644 index 0000000..4c87488 --- /dev/null +++ b/vendor/javascript/swiper/types/modules/autoplay.d.ts @@ -0,0 +1,133 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface AutoplayMethods { + /** + * Whether autoplay enabled and running + */ + running: boolean; + + /** + * Whether autoplay is paused + */ + paused: boolean; + + /** + * If autoplay is paused, it contains time left (in ms) before transition to next slide + */ + timeLeft: number; + + /** + * Pause autoplay + */ + pause(): void; + + /** + * Resume autoplay + */ + resume(): void; + + /** + * Start autoplay + */ + start(): boolean; + + /** + * Stop autoplay + */ + stop(): boolean; +} + +export interface AutoplayEvents { + /** + * Event will be fired in when autoplay started + */ + autoplayStart: (swiper: Swiper) => void; + /** + * Event will be fired when autoplay stopped + */ + autoplayStop: (swiper: Swiper) => void; + /** + * Event will be fired on autoplay pause + */ + autoplayPause: (swiper: Swiper) => void; + /** + * Event will be fired on autoplay resume + */ + autoplayResume: (swiper: Swiper) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplayTimeLeft: (swiper: Swiper, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: (swiper: Swiper) => void; +} + +/** + * Object with autoplay parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * autoplay: { + * delay: 5000, + * }, + * }); + * ``` + */ +export interface AutoplayOptions { + /** + * Delay between transitions (in ms). If this parameter is not specified, auto play will be disabled + * + * If you need to specify different delay for specific slides you can do it by using + * `data-swiper-autoplay` (in ms) attribute on slide. + * + * @example + * ```html + * + *
+ * ``` + * + * @default 3000 + */ + delay?: number; + + /** + * Enable this parameter and autoplay will be stopped when it reaches last slide (has no effect in loop mode) + * + * @default false + */ + stopOnLastSlide?: boolean; + + /** + * Set to `false` and autoplay will not be disabled after user interactions (swipes), + * it will be restarted every time after interaction + * + * @default true + */ + disableOnInteraction?: boolean; + + /** + * Enables autoplay in reverse direction + * + * @default false + */ + reverseDirection?: boolean; + + /** + * When enabled autoplay will wait for wrapper transition to continue. + * Can be disabled in case of using Virtual Translate when your + * slider may not have transition + * + * @default true + */ + waitForTransition?: boolean; + + /** + * When enabled autoplay will be paused on pointer (mouse) enter over Swiper container. + * + * @default false + */ + pauseOnMouseEnter?: boolean; +} diff --git a/vendor/javascript/swiper/types/modules/controller.d.ts b/vendor/javascript/swiper/types/modules/controller.d.ts new file mode 100644 index 0000000..cf61aef --- /dev/null +++ b/vendor/javascript/swiper/types/modules/controller.d.ts @@ -0,0 +1,35 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ControllerMethods { + /** + * Pass here another Swiper instance or array with Swiper instances that should be controlled + * by this Swiper + */ + control?: Swiper | Swiper[]; +} + +export interface ControllerEvents {} + +export interface ControllerOptions { + /** + * Pass here another Swiper instance or array with Swiper instances that should be controlled + * by this Swiper. Also accepts string with CSS selector of Swiper element, or HTMLElement of Swiper element + */ + control?: Swiper | Swiper[] | string | HTMLElement | null; + + /** + * Set to `true` and controlling will be in inverse direction + * + * @default false + */ + inverse?: boolean; + + /** + * Defines a way how to control another slider: slide by slide + * (with respect to other slider's grid) or depending on all slides/container + * (depending on total slider percentage). + * + * @default 'slide' + */ + by?: 'slide' | 'container'; +} diff --git a/vendor/javascript/swiper/types/modules/effect-cards.d.ts b/vendor/javascript/swiper/types/modules/effect-cards.d.ts new file mode 100644 index 0000000..9f688a4 --- /dev/null +++ b/vendor/javascript/swiper/types/modules/effect-cards.d.ts @@ -0,0 +1,33 @@ +export interface CardsEffectMethods {} + +export interface CardsEffectEvents {} + +export interface CardsEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + + /** + * Enables cards rotation + * + * @default true + */ + rotate?: boolean; + + /** + * Rotate angle per slide (in degrees) + * + * @default 2 + */ + perSlideRotate?: number; + + /** + * Offset distance per slide (in px) + * + * @default 8 + */ + perSlideOffset?: number; +} diff --git a/vendor/javascript/swiper/types/modules/effect-coverflow.d.ts b/vendor/javascript/swiper/types/modules/effect-coverflow.d.ts new file mode 100644 index 0000000..40327e4 --- /dev/null +++ b/vendor/javascript/swiper/types/modules/effect-coverflow.d.ts @@ -0,0 +1,45 @@ +export interface CoverflowEffectMethods {} + +export interface CoverflowEffectEvents {} + +export interface CoverflowEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Slide rotate in degrees + * + * @default 50 + */ + rotate?: number; + /** + * Stretch space between slides + * + * - a number is interpreted as pixels (e.g., `20` for 20px). + * - a string with a percentage (e.g., `"50%"`). + * + * @default 0 + */ + stretch?: number | `${number}%`; + /** + * Depth offset in px (slides translate in Z axis) + * + * @default 100 + */ + depth?: number; + /** + * Slide scale effect + * + * @default 1 + */ + scale?: number; + /** + * Effect multiplier + * + * @default 1 + */ + modifier?: number; +} diff --git a/vendor/javascript/swiper/types/modules/effect-creative.d.ts b/vendor/javascript/swiper/types/modules/effect-creative.d.ts new file mode 100644 index 0000000..eba8987 --- /dev/null +++ b/vendor/javascript/swiper/types/modules/effect-creative.d.ts @@ -0,0 +1,86 @@ +interface CreativeEffectTransform { + translate?: (string | number)[]; + rotate?: number[]; + opacity?: number; + scale?: number; + shadow?: boolean; + origin?: string; +} + +export interface CreativeEffectMethods {} + +export interface CreativeEffectEvents {} + +export interface CreativeEffectOptions { + /** + * Previous slide transformations. Accepts object of the following type: + * + * @example + * ```js + * { + * // Array with translate X, Y and Z values + * translate: (string | number)[]; + * // Array with rotate X, Y and Z values (in deg) + * rotate?: number[]; + * // Slide opacity + * opacity?: number; + * // Slide scale + * scale?: number; + * // Enables slide shadow + * shadow?: boolean; + * // Transform origin, e.g. `left bottom` + * origin?: string; + * } + * ``` + * + */ + prev?: CreativeEffectTransform; + /** + * Next slide transformations. + * + * @example + * ```js + * { + * // Array with translate X, Y and Z values + * translate: (string | number)[]; + * // Array with rotate X, Y and Z values (in deg) + * rotate?: number[]; + * // Slide opacity + * opacity?: number; + * // Slide scale + * scale?: number; + * // Enables slide shadow + * shadow?: boolean; + * // Transform origin, e.g. `left bottom` + * origin?: string; + * } + * ``` + * + */ + next?: CreativeEffectTransform; + + /** + * Limit progress/offset to amount of side slides. If `1`, then slides all slides after prev/next will have same state. If `2`, then all slides after 2nd before/after active will have same state, etc. + * + * @default 1 + */ + limitProgress?: number; + /** + * Splits shadow "opacity" per slide based on `limitProgress` (only if transformation shadows enabled). E.g. setting `limitProgress: 2` and enabling `shadowPerProgress`, will set shadow opacity to `0.5` and `1` on two slides next to active. With this parameter disabled, all slides beside active will have shadow with `1` opacity + * + * @default false + */ + shadowPerProgress?: boolean; + /** + * Allows to multiply slides transformations and opacity. + * + * @default 1 + */ + progressMultiplier?: number; + /** + * Enable this parameter if your custom transforms require 3D transformations (`translateZ`, `rotateX`, `rotateY` ) + * + * @default true + */ + perspective?: boolean; +} diff --git a/vendor/javascript/swiper/types/modules/effect-cube.d.ts b/vendor/javascript/swiper/types/modules/effect-cube.d.ts new file mode 100644 index 0000000..c59535c --- /dev/null +++ b/vendor/javascript/swiper/types/modules/effect-cube.d.ts @@ -0,0 +1,30 @@ +export interface CubeEffectMethods {} + +export interface CubeEffectEvents {} + +export interface CubeEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Enables main slider shadow + * + * @default true + */ + shadow?: boolean; + /** + * Main shadow offset in px + * + * @default 20 + */ + shadowOffset?: number; + /** + * Main shadow scale ratio + * + * @default 0.94 + */ + shadowScale?: number; +} diff --git a/vendor/javascript/swiper/types/modules/effect-fade.d.ts b/vendor/javascript/swiper/types/modules/effect-fade.d.ts new file mode 100644 index 0000000..1d3123c --- /dev/null +++ b/vendor/javascript/swiper/types/modules/effect-fade.d.ts @@ -0,0 +1,12 @@ +export interface FadeEffectMethods {} + +export interface FadeEffectEvents {} + +export interface FadeEffectOptions { + /** + * Enables slides cross fade + * + * @default false + */ + crossFade?: boolean; +} diff --git a/vendor/javascript/swiper/types/modules/effect-flip.d.ts b/vendor/javascript/swiper/types/modules/effect-flip.d.ts new file mode 100644 index 0000000..aa672c3 --- /dev/null +++ b/vendor/javascript/swiper/types/modules/effect-flip.d.ts @@ -0,0 +1,18 @@ +export interface FlipEffectMethods {} + +export interface FlipEffectEvents {} + +export interface FlipEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Limit edge slides rotation + * + * @default true + */ + limitRotation?: boolean; +} diff --git a/vendor/javascript/swiper/types/modules/free-mode.d.ts b/vendor/javascript/swiper/types/modules/free-mode.d.ts new file mode 100644 index 0000000..9488642 --- /dev/null +++ b/vendor/javascript/swiper/types/modules/free-mode.d.ts @@ -0,0 +1,64 @@ +export interface FreeModeMethods { + onTouchMove(): void; + onTouchEnd(): void; +} + +export interface FreeModeEvents {} + +export interface FreeModeOptions { + /** + * Whether the free mode is enabled + * + * @default false + */ + enabled?: boolean; + + /** + * If enabled, then slide will keep moving for a while after you release it + * + * @default true + */ + momentum?: boolean; + + /** + * Higher value produces larger momentum distance after you release slider + * + * @default 1 + */ + momentumRatio?: number; + + /** + * Higher value produces larger momentum velocity after you release slider + * + * @default 1 + */ + momentumVelocityRatio?: number; + + /** + * Set to `false` if you want to disable momentum bounce in free mode + * + * @default true + */ + momentumBounce?: boolean; + + /** + * Higher value produces larger momentum bounce effect + * + * @default 1 + */ + momentumBounceRatio?: number; + + /** + * Minimum touchmove-velocity required to trigger free mode momentum + * + * @default 0.02 + */ + minimumVelocity?: number; + + /** + * Set to enabled to enable snap to slides positions in free mode + * + * @default false + */ + sticky?: boolean; +} diff --git a/vendor/javascript/swiper/types/modules/grid.d.ts b/vendor/javascript/swiper/types/modules/grid.d.ts new file mode 100644 index 0000000..070b14a --- /dev/null +++ b/vendor/javascript/swiper/types/modules/grid.d.ts @@ -0,0 +1,21 @@ +export interface GridMethods {} + +export interface GridEvents {} + +export interface GridOptions { + /** + * Number of slides rows, for multirow layout + * + * @default 1 + */ + rows?: number; + + /** + * Can be `'column'` or `'row'`. Defines how slides should fill rows, by column or by row + * + * @note if used with loop mode make sure number of slides is even specified in loop mode requirements, or enable `loopAddBlankSlides` parameter + * + * @default 'column' + */ + fill?: 'row' | 'column'; +} diff --git a/vendor/javascript/swiper/types/modules/hash-navigation.d.ts b/vendor/javascript/swiper/types/modules/hash-navigation.d.ts new file mode 100644 index 0000000..8b6edfe --- /dev/null +++ b/vendor/javascript/swiper/types/modules/hash-navigation.d.ts @@ -0,0 +1,38 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface HashNavigationMethods {} + +export interface HashNavigationEvents { + /** + * Event will be fired on window hash change + */ + hashChange: (swiper: Swiper) => void; + /** + * Event will be fired when swiper updates the hash + */ + hashSet: (swiper: Swiper) => void; +} + +export interface HashNavigationOptions { + /** + * Set to `true` to enable also navigation through slides (when hashnav + * is enabled) by browser history or by setting directly hash on document location + * + * @default false + */ + watchState?: boolean; + + /** + * Works in addition to hashnav to replace current url state with the + * new one instead of adding it to history + * + * @default false + */ + replaceState?: boolean; + + /** + * Designed to be used with Virtual slides when it is impossible to find slide in DOM by hash (e.g. not yet rendered) + * + */ + getSlideIndex?: (swiper: Swiper, hash: string) => number; +} diff --git a/vendor/javascript/swiper/types/modules/history.d.ts b/vendor/javascript/swiper/types/modules/history.d.ts new file mode 100644 index 0000000..a3cea81 --- /dev/null +++ b/vendor/javascript/swiper/types/modules/history.d.ts @@ -0,0 +1,43 @@ +export interface HistoryMethods {} + +export interface HistoryEvents {} + +export interface HistoryOptions { + /** + * Enables History Plugin. + * + * @default false + */ + enabled?: boolean; + + /** + * Swiper page root, useful to specify when you use Swiper history mode not on root website page. + * For example can be `https://my-website.com/` or `https://my-website.com/subpage/` or `/subpage/` + * + * + * @default '' + */ + root?: string; + + /** + * Works in addition to hashnav or history to replace current url state with the + * new one instead of adding it to history + * + * @default false + */ + replaceState?: boolean; + + /** + * Url key for slides + * + * @default 'slides' + */ + key?: string; + + /** + * Keep query parameters when changing browser url. + * + * @default false + */ + keepQuery?: boolean; +} diff --git a/vendor/javascript/swiper/types/modules/index.d.ts b/vendor/javascript/swiper/types/modules/index.d.ts new file mode 100644 index 0000000..fd191b2 --- /dev/null +++ b/vendor/javascript/swiper/types/modules/index.d.ts @@ -0,0 +1,51 @@ +import type { SwiperModule } from '../shared.d.ts'; + +declare const A11y: SwiperModule; +declare const Autoplay: SwiperModule; +declare const Controller: SwiperModule; +declare const EffectCoverflow: SwiperModule; +declare const EffectCube: SwiperModule; +declare const EffectFade: SwiperModule; +declare const EffectFlip: SwiperModule; +declare const EffectCreative: SwiperModule; +declare const EffectCards: SwiperModule; +declare const HashNavigation: SwiperModule; +declare const History: SwiperModule; +declare const Keyboard: SwiperModule; +declare const Mousewheel: SwiperModule; +declare const Navigation: SwiperModule; +declare const Pagination: SwiperModule; +declare const Parallax: SwiperModule; +declare const Scrollbar: SwiperModule; +declare const Thumbs: SwiperModule; +declare const Virtual: SwiperModule; +declare const Zoom: SwiperModule; +declare const FreeMode: SwiperModule; +declare const Grid: SwiperModule; +declare const Manipulation: SwiperModule; + +export { + A11y, + Autoplay, + Controller, + EffectCoverflow, + EffectCube, + EffectFade, + EffectFlip, + EffectCreative, + EffectCards, + HashNavigation, + History, + Keyboard, + Mousewheel, + Navigation, + Pagination, + Parallax, + Scrollbar, + Thumbs, + Virtual, + Zoom, + FreeMode, + Grid, + Manipulation, +}; diff --git a/vendor/javascript/swiper/types/modules/keyboard.d.ts b/vendor/javascript/swiper/types/modules/keyboard.d.ts new file mode 100644 index 0000000..cf6fa52 --- /dev/null +++ b/vendor/javascript/swiper/types/modules/keyboard.d.ts @@ -0,0 +1,52 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface KeyboardMethods { + /** + * Whether the keyboard control is enabled + */ + enabled: boolean; + + /** + * Enable keyboard control + */ + enable(): void; + + /** + * Disable keyboard control + */ + disable(): void; +} + +export interface KeyboardEvents { + /** + * Event will be fired on key press + */ + keyPress: (swiper: Swiper, keyCode: string) => void; +} + +export interface KeyboardOptions { + /** + * Set to `true` to enable keyboard control + * + * @default false + */ + enabled?: boolean; + /** + * When enabled it will control sliders that are currently in viewport + * + * @default true + */ + onlyInViewport?: boolean; + /** + * When enabled it will enable keyboard navigation by Page Up and Page Down keys + * + * @default true + */ + pageUpDown?: boolean; + /** + * Set the speed of keyboard navigation transitions (in ms) + * + * @default undefined + */ + speed?: number; +} diff --git a/vendor/javascript/swiper/types/modules/manipulation.d.ts b/vendor/javascript/swiper/types/modules/manipulation.d.ts new file mode 100644 index 0000000..3366eaf --- /dev/null +++ b/vendor/javascript/swiper/types/modules/manipulation.d.ts @@ -0,0 +1,70 @@ +export interface ManipulationMethods { + /** + * Add new slides to the end. slides could be + * HTMLElement or HTML string with new slide or + * array with such slides, for example: + * + * @example + * ```js + * appendSlide('
Slide 10"
') + * + * appendSlide([ + * '
Slide 10"
', + * '
Slide 11"
' + * ]); + * ``` + */ + appendSlide(slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Add new slides to the beginning. slides could be + * HTMLElement or HTML string with new slide or array with such slides, for example: + * + * @example + * ```js + * prependSlide('
Slide 0"
') + * + * prependSlide([ + * '
Slide 1"
', + * '
Slide 2"
' + * ]); + * ``` + */ + prependSlide(slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Add new slides to the required index. slides could be HTMLElement or HTML string with new slide or array with such slides, for example: + * + * @example + * ```js + * addSlide(1, '
Slide 10"
') + * + * addSlide(1, [ + * '
Slide 10"
', + * '
Slide 11"
' + * ]); + * ``` + */ + addSlide(index: number, slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Remove selected slides. slideIndex could be a number with slide index to remove or array with indexes. + * + * @example + * ```js + * removeSlide(0); // remove first slide + * removeSlide([0, 1]); // remove first and second slides + * removeAllSlides(); // Remove all slides + * ``` + */ + removeSlide(slideIndex: number | number[]): void; + + /** + * Remove all slides + */ + removeAllSlides(): void; +} + +export interface ManipulationEvents {} + +export interface ManipulationOptions {} diff --git a/vendor/javascript/swiper/types/modules/mousewheel.d.ts b/vendor/javascript/swiper/types/modules/mousewheel.d.ts new file mode 100644 index 0000000..4f2bb8f --- /dev/null +++ b/vendor/javascript/swiper/types/modules/mousewheel.d.ts @@ -0,0 +1,86 @@ +import type Swiper from '../swiper-class.d.ts'; +import type { CSSSelector } from '../shared.d.ts'; + +export interface MousewheelMethods { + /** + * Whether the mousewheel control is enabled + */ + enabled: boolean; + + /** + * Enable mousewheel control + */ + enable(): void; + + /** + * Disable mousewheel control + */ + disable(): void; +} + +export interface MousewheelEvents { + /** + * Event will be fired on mousewheel scroll + */ + scroll: (swiper: Swiper, event: WheelEvent) => void; +} + +export interface MousewheelOptions { + /** + * Set to `true` to enable mousewheel control + * + * @default false + */ + enabled?: boolean; + /** + * Set to `true` to force mousewheel swipes to axis. So in horizontal mode mousewheel will work only with horizontal mousewheel scrolling, and only with vertical scrolling in vertical mode. + * + * @default false + */ + forceToAxis?: boolean; + /** + * Set to `true` and swiper will release mousewheel event and allow page scrolling when swiper is on edge positions (in the beginning or in the end) + * + * @default false + */ + releaseOnEdges?: boolean; + /** + * Set to `true` to invert sliding direction + * + * @default false + */ + invert?: boolean; + /** + * Multiplier of mousewheel data, allows to tweak mouse wheel sensitivity + * + * @default 1 + */ + sensitivity?: number; + /** + * String with CSS selector or HTML element of the container accepting mousewheel events. By default it is swiper + * + * @default 'container' + */ + eventsTarget?: 'container' | 'wrapper' | CSSSelector | HTMLElement; + + /** + * Minimum mousewheel scroll delta to trigger swiper slide change + * + * @default null + */ + thresholdDelta?: number | null; + + /** + * Minimum mousewheel scroll time delta (in ms) to trigger swiper slide change + * + * @default null + */ + thresholdTime?: number | null; + + /** + * Scrolling on elements with this class will be ignored + * + * @default 'swiper-no-mousewheel' + */ + noMousewheelClass?: string; +} diff --git a/vendor/javascript/swiper/types/modules/navigation.d.ts b/vendor/javascript/swiper/types/modules/navigation.d.ts new file mode 100644 index 0000000..df5b077 --- /dev/null +++ b/vendor/javascript/swiper/types/modules/navigation.d.ts @@ -0,0 +1,112 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface NavigationMethods { + /** + * HTMLElement of "next" navigation button + */ + nextEl: HTMLElement; + + /** + * HTMLElement of "previous" navigation button + */ + prevEl: HTMLElement; + + /** + * Update navigation buttons state (enabled/disabled) + */ + update(): void; + + /** + * Initialize navigation + */ + init(): void; + + /** + * Destroy navigation + */ + destroy(): void; +} + +export interface NavigationEvents { + /** + * Event will be fired on navigation hide + */ + navigationHide: (swiper: Swiper) => void; + /** + * Event will be fired on navigation show + */ + navigationShow: (swiper: Swiper) => void; + /** + * Event will be fired on navigation prev button click + */ + navigationPrev: (swiper: Swiper) => void; + /** + * Event will be fired on navigation next button click + */ + navigationNext: (swiper: Swiper) => void; +} + +export interface NavigationOptions { + /** + * Boolean property to use with breakpoints to enable/disable navigation on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the element that will work + * like "next" button after click on it + * + * @default null + */ + nextEl?: CSSSelector | HTMLElement | null; + + /** + * String with CSS selector or HTML element of the element that will work + * like "prev" button after click on it + * + * @default null + */ + prevEl?: CSSSelector | HTMLElement | null; + + /** + * Boolean property to add SVG icons to navigation buttons + * + * @default true + */ + addIcons?: boolean; + + /** + * Toggle navigation buttons visibility after click on Slider's container + * + * @default false + */ + hideOnClick?: boolean; + + /** + * CSS class name added to navigation button when it becomes disabled + * + * @default 'swiper-button-disabled' + */ + disabledClass?: string; + + /** + * CSS class name added to navigation button when it becomes hidden + * + * @default 'swiper-button-hidden' + */ + hiddenClass?: string; + + /** + * CSS class name added to navigation button when it is disabled + * + * @default 'swiper-button-lock' + */ + lockClass?: string; + + /** + * CSS class name added on swiper container when navigation is disabled by breakpoint + * + * @default 'swiper-navigation-disabled' + */ + navigationDisabledClass?: string; +} diff --git a/vendor/javascript/swiper/types/modules/pagination.d.ts b/vendor/javascript/swiper/types/modules/pagination.d.ts new file mode 100644 index 0000000..4f8ab2d --- /dev/null +++ b/vendor/javascript/swiper/types/modules/pagination.d.ts @@ -0,0 +1,307 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface PaginationMethods { + /** + * HTMLElement of pagination container element + */ + el: HTMLElement; + + /** + * Array of pagination bullets + * HTML elements. To get specific slide HTMLElement + * use `swiper.pagination.bullets[1]`. + */ + bullets: HTMLElement[]; + + /** + * Render pagination layout + */ + render(): void; + + /** + * Update pagination state (enabled/disabled/active) + */ + update(): void; + + /** + * Initialize pagination + */ + init(): void; + + /** + * Destroy pagination + */ + destroy(): void; +} + +export interface PaginationEvents { + /** + * Event will be fired after pagination rendered + */ + paginationRender: (swiper: Swiper, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + paginationUpdate: (swiper: Swiper, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + paginationHide: (swiper: Swiper) => void; + + /** + * Event will be fired on pagination show + */ + paginationShow: (swiper: Swiper) => void; +} + +export interface PaginationOptions { + /** + * Boolean property to use with breakpoints to enable/disable pagination on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the container with pagination + * + * @default null + */ + el?: CSSSelector | HTMLElement | null; + + /** + * String with type of pagination. Can be `'bullets'`, `'fraction'`, `'progressbar'` or `'custom'` + * + * @default 'bullets' + */ + type?: 'bullets' | 'fraction' | 'progressbar' | 'custom'; + + /** + * Defines which HTML tag will be used to represent single pagination bullet. Only for `'bullets'` pagination type. + * + * @default 'span' + */ + bulletElement?: string; + + /** + * Good to enable if you use bullets pagination with a lot of slides. So it will keep only few bullets visible at the same time. + * + * @default false + */ + dynamicBullets?: boolean; + + /** + * The number of main bullets visible when `dynamicBullets` enabled. + * + * @default 1 + */ + dynamicMainBullets?: number; + + /** + * Toggle (hide/show) pagination container visibility after click on Slider's container + * + * @default true + */ + hideOnClick?: boolean; + + /** + * If `true` then clicking on pagination button will cause transition to appropriate slide. Only for bullets pagination type + * + * @default false + */ + clickable?: boolean; + + /** + * Makes pagination progressbar opposite to Swiper's `direction` parameter, means vertical progressbar for horizontal swiper + * direction and horizontal progressbar for vertical swiper direction + * + * @default false + */ + progressbarOpposite?: boolean; + + /** + * format fraction pagination current number. Function receives current number, + * and you need to return formatted value + */ + formatFractionCurrent?: (number: number) => number | string; + + /** + * format fraction pagination total number. Function receives total number, and you + * need to return formatted value + */ + formatFractionTotal?: (number: number) => number | string; + + /** + * This parameter allows totally customize pagination bullets, you need to pass here a function that accepts `index` number of + * pagination bullet and required element class name (`className`). Only for `'bullets'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * pagination: { + * //... + * renderBullet: function (index, className) { + * return '' + (index + 1) + ''; + * }, + * }, + * }); + * ``` + */ + renderBullet?: (index: number, className: string) => string; + + /** + * This parameter allows to customize "fraction" pagination html. Only for `'fraction'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * pagination: { + * //... + * renderFraction: function (currentClass, totalClass) { + * return '' + + * ' of ' + + * ''; + * }, + * }, + * }); + * ``` + */ + renderFraction?: (currentClass: string, totalClass: string) => string; + + /** + * This parameter allows to customize "progress" pagination. Only for `'progress'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * pagination: { + * //... + * renderProgressbar: function (progressbarFillClass) { + * return ''; + * }, + * }, + * }); + * ``` + */ + renderProgressbar?: (progressbarFillClass: string) => string; + + /** + * This parameter is required for `'custom'` pagination type where you have to specify + * how it should be rendered. + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * pagination: { + * //... + * renderCustom: function (swiper, current, total) { + * return current + ' of ' + total; + * }, + * }, + * }); + * ``` + */ + renderCustom?: (swiper: Swiper, current: number, total: number) => string; + + /** + * CSS class name of single pagination bullet + * + * @default 'swiper-pagination-bullet' + */ + bulletClass?: string; + + /** + * CSS class name of currently active pagination bullet + * + * @default 'swiper-pagination-bullet-active' + */ + bulletActiveClass?: string; + + /** + * The beginning of the modifier CSS class name that will be added to pagination depending on parameters + * + * @default 'swiper-pagination-' + */ + modifierClass?: string; + + /** + * CSS class name of the element with currently active index in "fraction" pagination + * + * @default 'swiper-pagination-current' + */ + currentClass?: string; + + /** + * CSS class name of the element with total number of "snaps" in "fraction" pagination + * + * @default 'swiper-pagination-total' + */ + totalClass?: string; + + /** + * CSS class name of pagination when it becomes inactive + * + * @default 'swiper-pagination-hidden' + */ + hiddenClass?: string; + + /** + * CSS class name of pagination progressbar fill element + * + * @default 'swiper-pagination-progressbar-fill' + */ + progressbarFillClass?: string; + + /** + * CSS class name of pagination progressbar opposite + * + * @default 'swiper-pagination-progressbar-opposite' + */ + progressbarOppositeClass?: string; + /** + * CSS class name set to pagination when it is clickable + * + * @default 'swiper-pagination-clickable' + */ + clickableClass?: string; + + /** + * CSS class name set to pagination when it is disabled + * + * @default 'swiper-pagination-lock' + */ + lockClass?: string; + + /** + * CSS class name set to pagination in horizontal Swiper + * + * @default 'swiper-pagination-horizontal' + */ + horizontalClass?: string; + + /** + * CSS class name set to pagination in vertical Swiper + * + * @default 'swiper-pagination-vertical' + */ + verticalClass?: string; + + /** + * CSS class name added on swiper container and pagination element when pagination is disabled by breakpoint + * + * @default 'swiper-pagination-disabled' + */ + paginationDisabledClass?: string; +} diff --git a/vendor/javascript/swiper/types/modules/parallax.d.ts b/vendor/javascript/swiper/types/modules/parallax.d.ts new file mode 100644 index 0000000..27e8e6f --- /dev/null +++ b/vendor/javascript/swiper/types/modules/parallax.d.ts @@ -0,0 +1,12 @@ +export interface ParallaxMethods {} + +export interface ParallaxEvents {} + +export interface ParallaxOptions { + /** + * Enable, if you want to use "parallaxed" elements inside of slider + * + * @default false + */ + enabled?: boolean; +} diff --git a/vendor/javascript/swiper/types/modules/public-api.d.ts b/vendor/javascript/swiper/types/modules/public-api.d.ts new file mode 100644 index 0000000..2553f46 --- /dev/null +++ b/vendor/javascript/swiper/types/modules/public-api.d.ts @@ -0,0 +1,23 @@ +export type * from './a11y.d.ts'; +export type * from './autoplay.d.ts'; +export type * from './controller.d.ts'; +export type * from './effect-coverflow.d.ts'; +export type * from './effect-cube.d.ts'; +export type * from './effect-fade.d.ts'; +export type * from './effect-flip.d.ts'; +export type * from './effect-creative.d.ts'; +export type * from './effect-cards.d.ts'; +export type * from './hash-navigation.d.ts'; +export type * from './history.d.ts'; +export type * from './keyboard.d.ts'; +export type * from './mousewheel.d.ts'; +export type * from './navigation.d.ts'; +export type * from './pagination.d.ts'; +export type * from './parallax.d.ts'; +export type * from './scrollbar.d.ts'; +export type * from './thumbs.d.ts'; +export type * from './virtual.d.ts'; +export type * from './zoom.d.ts'; +export type * from './free-mode.d.ts'; +export type * from './grid.d.ts'; +export type * from './manipulation.d.ts'; diff --git a/vendor/javascript/swiper/types/modules/scrollbar.d.ts b/vendor/javascript/swiper/types/modules/scrollbar.d.ts new file mode 100644 index 0000000..4e04d95 --- /dev/null +++ b/vendor/javascript/swiper/types/modules/scrollbar.d.ts @@ -0,0 +1,140 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface ScrollbarMethods { + /** + * HTMLElement of Scrollbar container element + */ + el: HTMLElement; + + /** + * HTMLElement of Scrollbar draggable handler element + */ + dragEl: HTMLElement; + + /** + * Updates scrollbar track and handler sizes + */ + updateSize(): void; + + /** + * Updates scrollbar translate + */ + setTranslate(): void; + + /** + * Initialize scrollbar + */ + init(): void; + + /** + * Destroy scrollbar + */ + destroy(): void; +} + +export interface ScrollbarEvents { + /** + * Event will be fired on draggable scrollbar drag start + */ + scrollbarDragStart: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbarDragMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbarDragEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; +} + +/** + * Object with scrollbar parameters. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * scrollbar: { + * el: '.swiper-scrollbar', + * draggable: true, + * }, + * }); + * ``` + */ +export interface ScrollbarOptions { + /** + * Boolean property to use with breakpoints to enable/disable scrollbar on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the container with scrollbar. + * + * @default null + */ + el?: CSSSelector | HTMLElement | null; + + /** + * Hide scrollbar automatically after user interaction + * + * @default true + */ + hide?: boolean; + + /** + * Set to `true` to enable make scrollbar draggable that allows you to control slider position + * + * @default false + */ + draggable?: boolean; + + /** + * Set to `true` to snap slider position to slides when you release scrollbar + * + * @default false + */ + snapOnRelease?: boolean; + + /** + * Size of scrollbar draggable element in px + * + * @default 'auto' + */ + dragSize?: 'auto' | number; + + /** + * Scrollbar element additional CSS class when it is disabled + * + * @default 'swiper-scrollbar-lock' + */ + lockClass?: string; + + /** + * Scrollbar draggable element CSS class + * + * @default 'swiper-scrollbar-drag' + */ + dragClass?: string; + + /** + * CSS class name added on swiper container and scrollbar element when scrollbar is disabled by breakpoint + * + * @default 'swiper-scrollbar-disabled' + */ + scrollbarDisabledClass?: string; + + /** + * CSS class name set to scrollbar in horizontal Swiper + * + * @default 'swiper-scrollbar-horizontal' + */ + horizontalClass?: string; + + /** + * CSS class name set to scrollbar in vertical Swiper + * + * @default 'swiper-scrollbar-vertical' + */ + verticalClass?: string; +} diff --git a/vendor/javascript/swiper/types/modules/thumbs.d.ts b/vendor/javascript/swiper/types/modules/thumbs.d.ts new file mode 100644 index 0000000..9ac1853 --- /dev/null +++ b/vendor/javascript/swiper/types/modules/thumbs.d.ts @@ -0,0 +1,54 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ThumbsMethods { + /** + * Swiper instance of thumbs swiper + */ + swiper: Swiper; + + /** + * Update thumbs + */ + update(initial: boolean, p?: { autoScroll?: boolean }): void; + + /** + * Initialize thumbs + */ + init(): boolean; +} + +export interface ThumbsEvents {} + +export interface ThumbsOptions { + /** + * Swiper instance of swiper used as thumbs or object with Swiper parameters to initialize thumbs swiper + * + * @default null + */ + swiper?: Swiper | string | null; + /** + * Additional class that will be added to activated thumbs swiper slide + * + * @default 'swiper-slide-thumb-active' + */ + slideThumbActiveClass?: string; + /** + * Additional class that will be added to thumbs swiper + * + * @default 'swiper-thumbs' + */ + thumbsContainerClass?: string; + /** + * When enabled multiple thumbnail slides may get activated + * + * @default true + */ + multipleActiveThumbs?: boolean; + /** + * Allows to set on which thumbs active slide from edge it should automatically move scroll thumbs. For example, if set to 1 and last visible thumb will be activated (1 from edge) it will auto scroll thumbs + + * + * @default 0 + */ + autoScrollOffset?: number; +} diff --git a/vendor/javascript/swiper/types/modules/virtual.d.ts b/vendor/javascript/swiper/types/modules/virtual.d.ts new file mode 100644 index 0000000..842101c --- /dev/null +++ b/vendor/javascript/swiper/types/modules/virtual.d.ts @@ -0,0 +1,143 @@ +export interface VirtualMethods { + /** + * Object with cached slides HTML elements + */ + cache: object; + + /** + * Index of first rendered slide + */ + from: number; + + /** + * Index of last rendered slide + */ + to: number; + + /** + * Array with slide items passed by `virtual.slides` parameter + */ + slides: T[]; + + /* + * Methods + */ + + /** + * Append slide. `slides` can be a single slide item or array with such slides. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + appendSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void; + + /** + * Prepend slide. `slides` can be a single slide item or array with such slides. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + prependSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void; + + /** + * Remove specific slide or slides. `slideIndexes` can be a number with slide index to remove or array with indexes. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + removeSlide(slideIndexes: number[]): void; + + /** + * Remove all slides + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + removeAllSlides(): void; + + /** + * Update virtual slides state + */ + update(force: boolean): void; +} + +export interface VirtualEvents {} + +export interface VirtualData { + /** + * slides left/top offset in px + */ + offset: number; + /** + * index of first slide required to be rendered + */ + from: number; + /** + * index of last slide required to be rendered + */ + to: number; + /** + * array with slide items to be rendered + */ + slides: T[]; +} + +export interface VirtualOptions { + /** + * Whether the virtual slides are enabled + * + * @default false + */ + enabled?: boolean; + /** + * Array with slides + * + * @default [] + */ + slides?: T[]; + + /** + * Slide size for slidesPerView: `auto` (in px) + * + * @default 320 + */ + slidesPerViewAutoSlideSize?: number; + + /** + * Enables DOM cache of rendering slides html elements. Once they are rendered they will be saved to cache and reused from it. + * + * @default true + */ + cache?: boolean; + /** + * Increases amount of pre-rendered slides before active slide + * + * @default 0 + */ + addSlidesBefore?: number; + /** + * Increases amount of pre-rendered slides after active slide + * + * @default 0 + */ + addSlidesAfter?: number; + /** + * Function to render slide. As an argument it accepts current slide item for `slides` array and index number of the current slide. Function must return an outer HTML of the swiper slide or slide HTML element. + * + * @default null + */ + renderSlide?: (slide: T, index: any) => any | null; + /** + * Function for external rendering (e.g. using some other library to handle DOM manipulations and state like React.js or Vue.js). As an argument it accepts `data` object with the following properties: + * + * - `offset` - slides left/top offset in px + * - `from` - index of first slide required to be rendered + * - `to` - index of last slide required to be rendered + * - `slides` - array with slide items to be rendered + * + * @default null + */ + renderExternal?: (data: VirtualData) => any | null; + /** + * When enabled (by default) it will update Swiper layout right after renderExternal called. Useful to disable and update swiper manually when used with render libraries that renders asynchronously + * + * @default true + */ + renderExternalUpdate?: boolean; +} diff --git a/vendor/javascript/swiper/types/modules/zoom.d.ts b/vendor/javascript/swiper/types/modules/zoom.d.ts new file mode 100644 index 0000000..f7b9dde --- /dev/null +++ b/vendor/javascript/swiper/types/modules/zoom.d.ts @@ -0,0 +1,91 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ZoomMethods { + /** + * Whether the zoom module is enabled + */ + enabled: boolean; + + /** + * Current image scale ratio + */ + scale: number; + + /** + * Enable zoom module + */ + enable(): void; + + /** + * Disable zoom module + */ + disable(): void; + + /** + * Zoom in image of the currently active slide. Optionally accepts custom zoom ratio + */ + in(ratio?: number): void; + + /** + * Zoom out image of the currently active slide + */ + out(): void; + + /** + * Toggle image zoom of the currently active slide + */ + toggle(event?: MouseEvent | TouchEvent | PointerEvent): void; +} + +export interface ZoomEvents { + /** + * Event will be fired on zoom change + */ + zoomChange: (swiper: Swiper, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; +} + +export interface ZoomOptions { + /** + * When set to true, the image will not be scaled past 100% of its original size + * + * @default false + */ + limitToOriginalSize?: boolean; + /** + * Maximum image zoom multiplier + * + * @default 3 + */ + maxRatio?: number; + /** + * Minimal image zoom multiplier + * + * @default 1 + */ + minRatio?: number; + /** + * When set to true, a zoomed in image will automatically pan while moving the mouse over the image + * + * @default false + */ + panOnMouseMove?: boolean; + /** + * Enable/disable zoom-in by slide's double tap + * + * @default true + */ + toggle?: boolean; + /** + * CSS class name of zoom container + * + * @default 'swiper-zoom-container' + */ + containerClass?: string; + /** + * CSS class name of zoomed in container + * + * @default 'swiper-slide-zoomed' + + */ + zoomedSlideClass?: string; +} diff --git a/vendor/javascript/swiper/types/shared.d.ts b/vendor/javascript/swiper/types/shared.d.ts new file mode 100644 index 0000000..3e410c5 --- /dev/null +++ b/vendor/javascript/swiper/types/shared.d.ts @@ -0,0 +1,13 @@ +import type { Swiper } from './index.d.ts'; + +export interface CSSSelector extends String {} + +export type SwiperModule = (options: { + params: Swiper['params']; + swiper: Swiper; + extendParams: (obj: { [name: string]: any }) => void; + on: Swiper['on']; + once: Swiper['once']; + off: Swiper['off']; + emit: Swiper['emit']; +}) => void; diff --git a/vendor/javascript/swiper/types/swiper-class.d.ts b/vendor/javascript/swiper/types/swiper-class.d.ts new file mode 100644 index 0000000..4b56016 --- /dev/null +++ b/vendor/javascript/swiper/types/swiper-class.d.ts @@ -0,0 +1,522 @@ +import type { SwiperOptions } from './swiper-options.d.ts'; +import type { CSSSelector, SwiperModule } from './shared.d.ts'; +import type { SwiperEvents } from './swiper-events.d.ts'; + +import type { A11yMethods } from './modules/a11y.d.ts'; +import type { AutoplayMethods } from './modules/autoplay.d.ts'; +import type { ControllerMethods } from './modules/controller.d.ts'; +import type { CoverflowEffectMethods } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectMethods } from './modules/effect-cube.d.ts'; +import type { FadeEffectMethods } from './modules/effect-fade.d.ts'; +import type { FlipEffectMethods } from './modules/effect-flip.d.ts'; +import type { CreativeEffectMethods } from './modules/effect-creative.d.ts'; +import type { CardsEffectMethods } from './modules/effect-cards.d.ts'; +import type { HashNavigationMethods } from './modules/hash-navigation.d.ts'; +import type { HistoryMethods } from './modules/history.d.ts'; +import type { KeyboardMethods } from './modules/keyboard.d.ts'; +import type { MousewheelMethods } from './modules/mousewheel.d.ts'; +import type { NavigationMethods } from './modules/navigation.d.ts'; +import type { PaginationMethods } from './modules/pagination.d.ts'; +import type { ParallaxMethods } from './modules/parallax.d.ts'; +import type { ScrollbarMethods } from './modules/scrollbar.d.ts'; +import type { ThumbsMethods } from './modules/thumbs.d.ts'; +import type { VirtualMethods } from './modules/virtual.d.ts'; +import type { ZoomMethods } from './modules/zoom.d.ts'; +import type { FreeModeMethods } from './modules/free-mode.d.ts'; +import type { ManipulationMethods } from './modules/manipulation.d.ts'; + +interface SwiperClass { + /** Add event handler */ + on(event: E, handler: Events[E]): void; + /** Add event handler that will be removed after it was fired */ + once(event: E, handler: Events[E]): void; + /** Remove event handler */ + off(event: E, handler: Events[E]): void; + /** Remove all handlers for specified event */ + off(event: E): void; + /** Fire event on instance */ + emit(event: E, ...args: any[]): void; +} + +interface Swiper extends SwiperClass { + /** + * Object with passed initialization parameters + */ + params: SwiperOptions; + + /** + * Object with original initialization parameters + */ + originalParams: SwiperOptions; + + /** + * Slider container HTML element + */ + el: HTMLElement; + + /** + * Wrapper HTML element + */ + wrapperEl: HTMLElement; + + /** + * Wrapper HTML element + */ + slidesEl: HTMLElement; + + /** + * Array of slides HTML elements. To get specific slide HTMLElement use `swiper.slides[1]` + */ + slides: HTMLElement[]; + + /** + * !INTERNAL + */ + loopedSlides: number | null; + + /** + * Width of container + */ + width: number; + + /** + * Height of container + */ + height: number; + + /** + * Current value of wrapper translate + */ + translate: number; + + /** + * Current progress of wrapper translate (from 0 to 1) + */ + progress: number; + + /** + * Index number of currently active slide + * + * @note Note, that in loop mode active index value will be always shifted on a number of looped slides + */ + activeIndex: number; + + /** + * Index number of currently active slide considering rearranged slides in loop mode + */ + realIndex: number; + + /** + * Index number of previously active slide + */ + previousIndex: number; + + /** + * Index number of current snap in `snapGrid` + */ + snapIndex: number; + + /** + * Slides snap grid + */ + snapGrid: number[]; + + /** + * Slides grid + */ + slidesGrid: number[]; + + /** + * Array of widths for slides + */ + slidesSizesGrid: number[]; + + /** + * `true` if slider on most "left"/"top" position + */ + isBeginning: boolean; + + /** + * `true` if slider on most "right"/"bottom" position + */ + isEnd: boolean; + + /** + * `true` if slide is "locked" (by `watchOverflow`) and slides can not be, e.g. when amount of slides is less that slides per view + */ + isLocked: boolean; + + /** + * `true` if swiper is in transition + */ + animating: boolean; + + /** + * Object with the following touch event properties: + * + * - `swiper.touches.startX` + * - `swiper.touches.startY` + * - `swiper.touches.currentX` + * - `swiper.touches.currentY` + * - `swiper.touches.diff` + */ + touches: { + startX: number; + startY: number; + currentX: number; + currentY: number; + diff: number; + }; + + /** + * Index number of last clicked slide + */ + clickedIndex: number; + + /** + * Link to last clicked slide (HTMLElement) + */ + clickedSlide: HTMLElement; + + /** + * Disable / enable ability to slide to the next slides by assigning `false` / `true` to this property + */ + allowSlideNext: boolean; + + /** + * Disable / enable ability to slide to the previous slides by assigning `false` / `true` to this property + */ + allowSlidePrev: boolean; + + /** + * Disable / enable ability move slider by grabbing it with mouse or by touching it with finger (on touch screens) by assigning `false` / `true` to this property + */ + allowTouchMove: boolean; + + /** + * Direction of sliding + */ + swipeDirection: 'prev' | 'next'; + + /** + * !INTERNAL + */ + rtlTranslate: boolean; + + /** + * `true` if Swiper is enabled, `false` otherwise + */ + enabled: boolean; + + /** + * Disable Swiper (if it was enabled). When Swiper is disabled, it will hide all navigation elements and won't respond to any events and interactions + * + */ + disable(): void; + + /** + * Enable Swiper (if it was disabled) + * + */ + enable(): void; + + /** + * Set Swiper translate progress (from 0 to 1). Where 0 - its initial position (offset) on first slide, and 1 - its maximum position (offset) on last slide + * + * @param progress Swiper translate progress (from 0 to 1). + * @param speed Transition duration (in ms). + */ + setProgress(progress: number, speed?: number): void; + + /** + * Run transition to next slide. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideNext(speed?: number, runCallbacks?: boolean): boolean; + + /** + * Run transition to previous slide. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slidePrev(speed?: number, runCallbacks?: boolean): boolean; + + /** + * Run transition to the slide with index number equal to 'index' parameter for the + * duration equal to 'speed' parameter. + * + * @param index Index number of slide. + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideTo(index: number, speed?: number, runCallbacks?: boolean): boolean; + + /** + * Does the same as .slideTo but for the case when used with enabled loop. So this + * method will slide to slides with realIndex matching to passed index + * + * @param index Index number of slide. + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideToLoop(index: number, speed?: number, runCallbacks?: boolean): Swiper; + + /** + * Reset swiper position to currently active slide for the duration equal to 'speed' + * parameter. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideReset(speed?: number, runCallbacks?: boolean): boolean; + + /** + * Reset swiper position to closest slide/snap point for the duration equal to 'speed' parameter. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideToClosest(speed?: number, runCallbacks?: boolean): boolean; + + /** + * Get dynamically calculated amount of slides per view, useful only when slidesPerView set to `auto` + * + */ + slidesPerViewDynamic(): number; + + /** + * Force swiper to update its height (when autoHeight enabled) for the duration equal to + * 'speed' parameter + * + * @param speed Transition duration (in ms). + */ + updateAutoHeight(speed?: number): void; + + /** + * You should call it after you add/remove slides + * manually, or after you hide/show it, or do any + * custom DOM modifications with Swiper + * This method also includes subcall of the following + * methods which you can use separately: + */ + update(): void; + + /** + * recalculate size of swiper container + */ + updateSize(): void; + + /** + * recalculate number of slides and their offsets. Useful after you add/remove slides with JavaScript + */ + updateSlides(): void; + + /** + * recalculate swiper progress + */ + updateProgress(): void; + + /** + * update active/prev/next classes on slides and bullets + */ + updateSlidesClasses(): void; + + /** + * Changes slider direction from horizontal to vertical and back. + * + * @param direction New direction. If not specified, then will automatically changed to opposite direction + * @param needUpdate Will call swiper.update(). Default true + */ + changeDirection(direction?: 'horizontal' | 'vertical', needUpdate?: boolean): void; + + /** + * Changes slider language + * + * @param direction New direction. Should be `rtl` or `ltr` + */ + changeLanguageDirection(direction: 'rtl' | 'ltr'): void; + + /** + * Detach all events listeners + */ + detachEvents(): void; + + /** + * Attach all events listeners again + */ + attachEvents(): void; + + /** + * !INTERNAL + */ + loopCreate(): void; + + /** + * !INTERNAL + */ + loopDestroy(): void; + + /** + * Initialize slider + */ + init(el?: HTMLElement): Swiper; + + /** + * Destroy slider instance and detach all events listeners + * + * @param deleteInstance Set it to false (by default it is true) to not to delete Swiper instance + * @param cleanStyles Set it to true (by default it is true) and all custom styles will be removed from slides, wrapper and container. + * Useful if you need to destroy Swiper and to init again with new options or in different direction + */ + destroy(deleteInstance?: boolean, cleanStyles?: boolean): void; + + /** + * Set custom css3 transform's translate value for swiper wrapper + */ + setTranslate(translate: any): void; + + /** + * Get current value of swiper wrapper css3 transform translate + */ + getTranslate(): any; + + /** + * Animate custom css3 transform's translate value for swiper wrapper + * + * @param translate Translate value (in px) + * @param speed Transition duration (in ms) + * @param runCallbacks Set it to false (by default it is true) and transition will not produce transition events + * @param translateBounds Set it to false (by default it is true) and transition value can extend beyond min and max translate + * + */ + translateTo( + translate: number, + speed: number, + runCallbacks?: boolean, + translateBounds?: boolean, + ): any; + + /** + * Get current minimal translate value + */ + minTranslate(): number; + + /** + * Get current maximal translate value + */ + maxTranslate(): number; + + /** + * Unset grab cursor + */ + unsetGrabCursor(): void; + + /** + * Set grab cursor + */ + setGrabCursor(): void; + + /** + * Add event listener that will be fired on all events + */ + onAny(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * Remove event listener that will be fired on all events + */ + offAny(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * !INTERNAL + */ + isHorizontal(): boolean; + + /** + * !INTERNAL + */ + getBreakpoint(breakpoints: SwiperOptions['breakpoints']): string; + + /** + * !INTERNAL + */ + setBreakpoint(): void; + + /** + * !INTERNAL + */ + currentBreakpoint: any; + + /** + * !INTERNAL + */ + destroyed: boolean; + + /** + * !INTERNAL + */ + modules: Array; + + a11y: A11yMethods; + autoplay: AutoplayMethods; + controller: ControllerMethods; + coverflowEffect: CoverflowEffectMethods; + cubeEffect: CubeEffectMethods; + fadeEffect: FadeEffectMethods; + flipEffect: FlipEffectMethods; + creativeEffect: CreativeEffectMethods; + cardsEffect: CardsEffectMethods; + hashNavigation: HashNavigationMethods; + history: HistoryMethods; + keyboard: KeyboardMethods; + mousewheel: MousewheelMethods; + navigation: NavigationMethods; + pagination: PaginationMethods; + parallax: ParallaxMethods; + scrollbar: ScrollbarMethods; + thumbs: ThumbsMethods; + virtual: VirtualMethods; + zoom: ZoomMethods; + freeMode: FreeModeMethods; +} + +interface Swiper extends ManipulationMethods {} + +declare class Swiper implements Swiper { + /** + * Constructs a new Swiper instance. + * + * @param container Where Swiper applies to. + * @param options Instance options. + */ + constructor(container: CSSSelector | HTMLElement, options?: SwiperOptions); + /** + * Installs modules on Swiper in runtime. + */ + static use(modules: SwiperModule[]): void; + + /** + * Swiper default options + */ + static defaults: SwiperOptions; + + /** + * Extend global Swiper defaults + */ + static extendDefaults(options: SwiperOptions): void; + + /** + * Object with global Swiper extended options + */ + static extendedDefaults: SwiperOptions; +} + +export default Swiper; diff --git a/vendor/javascript/swiper/types/swiper-events.d.ts b/vendor/javascript/swiper/types/swiper-events.d.ts new file mode 100644 index 0000000..4e6aaec --- /dev/null +++ b/vendor/javascript/swiper/types/swiper-events.d.ts @@ -0,0 +1,359 @@ +import type { SwiperOptions } from './swiper-options.d.ts'; +import type Swiper from './swiper-class.d.ts'; + +import type { A11yEvents } from './modules/a11y.d.ts'; +import type { AutoplayEvents } from './modules/autoplay.d.ts'; +import type { ControllerEvents } from './modules/controller.d.ts'; +import type { CoverflowEffectEvents } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectEvents } from './modules/effect-cube.d.ts'; +import type { FadeEffectEvents } from './modules/effect-fade.d.ts'; +import type { FlipEffectEvents } from './modules/effect-flip.d.ts'; +import type { CreativeEffectEvents } from './modules/effect-creative.d.ts'; +import type { CardsEffectEvents } from './modules/effect-cards.d.ts'; +import type { HashNavigationEvents } from './modules/hash-navigation.d.ts'; +import type { HistoryEvents } from './modules/history.d.ts'; +import type { KeyboardEvents } from './modules/keyboard.d.ts'; +import type { MousewheelEvents } from './modules/mousewheel.d.ts'; +import type { NavigationEvents } from './modules/navigation.d.ts'; +import type { PaginationEvents } from './modules/pagination.d.ts'; +import type { ParallaxEvents } from './modules/parallax.d.ts'; +import type { ScrollbarEvents } from './modules/scrollbar.d.ts'; +import type { ThumbsEvents } from './modules/thumbs.d.ts'; +import type { VirtualEvents } from './modules/virtual.d.ts'; +import type { ZoomEvents } from './modules/zoom.d.ts'; +import type { FreeModeEvents } from './modules/free-mode.d.ts'; + +export interface SwiperEvents { + // CORE_EVENTS_START + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + init: (swiper: Swiper) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + beforeDestroy: (swiper: Swiper) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesUpdated: (swiper: Swiper) => void; + /** + * Event will be fired when currently active slide is changed + */ + slideChange: (swiper: Swiper) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slideChangeTransitionStart: (swiper: Swiper) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slideChangeTransitionEnd: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slideNextTransitionStart: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slideNextTransitionEnd: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slidePrevTransitionStart: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slidePrevTransitionEnd: (swiper: Swiper) => void; + + /** + * Event will be fired in the beginning of transition. + */ + transitionStart: (swiper: Swiper) => void; + + /** + * Event will be fired after transition. + */ + transitionEnd: (swiper: Swiper) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchStart: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchMoveOpposite: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + sliderMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubleTap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: (swiper: Swiper, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachBeginning: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + reachEnd: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toEdge: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromEdge: (swiper: Swiper) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + setTranslate: (swiper: Swiper, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + setTransition: (swiper: Swiper, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: (swiper: Swiper) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerUpdate: (swiper: Swiper) => void; + + /** + * Event will be fired right before "loop fix" + */ + beforeLoopFix: (swiper: Swiper) => void; + + /** + * Event will be fired after "loop fix" + */ + loopFix: (swiper: Swiper) => void; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: (swiper: Swiper, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint?: (swiper: Swiper, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses?: (swiper: Swiper, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass?: (swiper: Swiper, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses?: ( + swiper: Swiper, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper?: (swiper: Swiper) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease?: (swiper: Swiper) => void; + + /** + * Event will fired on active index change + */ + activeIndexChange: (swiper: Swiper) => void; + /** + * Event will fired on snap index change + */ + snapIndexChange: (swiper: Swiper) => void; + /** + * Event will fired on real index change + */ + realIndexChange: (swiper: Swiper) => void; + /** + * Event will fired right after initialization + */ + afterInit: (swiper: Swiper) => void; + /** + * Event will fired right before initialization + */ + beforeInit: (swiper: Swiper) => void; + /** + * Event will fired before resize handler + */ + beforeResize: (swiper: Swiper) => void; + /** + * Event will fired before slide change transition start + */ + beforeSlideChangeStart: (swiper: Swiper) => void; + /** + * Event will fired before transition start + */ + beforeTransitionStart: (swiper: Swiper, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + changeDirection: (swiper: Swiper) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleClick: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + destroy: (swiper: Swiper) => void; + /** + * Event will be fired on momentum bounce + */ + momentumBounce: (swiper: Swiper) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: (swiper: Swiper) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideResetTransitionStart: (swiper: Swiper) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideResetTransitionEnd: (swiper: Swiper) => void; + /** + * Event will be fired with first touch/drag move + */ + sliderFirstMove: (swiper: Swiper, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + slidesLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired when slides grid has changed + */ + slidesGridLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired when snap grid has changed + */ + snapGridLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired after swiper.update() call + */ + update: (swiper: Swiper) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: (swiper: Swiper) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: (swiper: Swiper) => void; + // CORE_EVENTS_END +} + +interface SwiperEvents extends A11yEvents {} +interface SwiperEvents extends AutoplayEvents {} +interface SwiperEvents extends ControllerEvents {} +interface SwiperEvents extends CoverflowEffectEvents {} +interface SwiperEvents extends CubeEffectEvents {} +interface SwiperEvents extends FadeEffectEvents {} +interface SwiperEvents extends FlipEffectEvents {} +interface SwiperEvents extends CreativeEffectEvents {} +interface SwiperEvents extends CardsEffectEvents {} +interface SwiperEvents extends HashNavigationEvents {} +interface SwiperEvents extends HistoryEvents {} +interface SwiperEvents extends KeyboardEvents {} +interface SwiperEvents extends MousewheelEvents {} +interface SwiperEvents extends NavigationEvents {} +interface SwiperEvents extends PaginationEvents {} +interface SwiperEvents extends ParallaxEvents {} +interface SwiperEvents extends ScrollbarEvents {} +interface SwiperEvents extends ThumbsEvents {} +interface SwiperEvents extends VirtualEvents {} +interface SwiperEvents extends ZoomEvents {} +interface SwiperEvents extends FreeModeEvents {} diff --git a/vendor/javascript/swiper/types/swiper-options.d.ts b/vendor/javascript/swiper/types/swiper-options.d.ts new file mode 100644 index 0000000..7c342b5 --- /dev/null +++ b/vendor/javascript/swiper/types/swiper-options.d.ts @@ -0,0 +1,1226 @@ +import type { A11yOptions } from './modules/a11y.d.ts'; +import type { AutoplayOptions } from './modules/autoplay.d.ts'; +import type { ControllerOptions } from './modules/controller.d.ts'; +import type { CoverflowEffectOptions } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectOptions } from './modules/effect-cube.d.ts'; +import type { FadeEffectOptions } from './modules/effect-fade.d.ts'; +import type { FlipEffectOptions } from './modules/effect-flip.d.ts'; +import type { CreativeEffectOptions } from './modules/effect-creative.d.ts'; +import type { CardsEffectOptions } from './modules/effect-cards.d.ts'; +import type { HashNavigationOptions } from './modules/hash-navigation.d.ts'; +import type { HistoryOptions } from './modules/history.d.ts'; +import type { KeyboardOptions } from './modules/keyboard.d.ts'; +import type { MousewheelOptions } from './modules/mousewheel.d.ts'; +import type { NavigationOptions } from './modules/navigation.d.ts'; +import type { PaginationOptions } from './modules/pagination.d.ts'; +import type { ParallaxOptions } from './modules/parallax.d.ts'; +import type { ScrollbarOptions } from './modules/scrollbar.d.ts'; +import type { ThumbsOptions } from './modules/thumbs.d.ts'; +import type { VirtualOptions } from './modules/virtual.d.ts'; +import type { ZoomOptions } from './modules/zoom.d.ts'; +import type { FreeModeOptions } from './modules/free-mode.d.ts'; +import type { GridOptions } from './modules/grid.d.ts'; + +import type { CSSSelector, SwiperModule } from './shared.d.ts'; +import type { SwiperEvents } from './swiper-events.d.ts'; + +export interface SwiperOptions { + /** + * Array with Swiper modules + * + * @example + * ```js + * import Swiper from 'swiper'; + * import { Navigation, Pagination } from 'swiper/modules'; + * + * const swiper = new Swiper('.swiper', { + * modules: [ Navigation, Pagination ], + * }); + * ``` + */ + modules?: SwiperModule[]; + /** + * Inject text styles to the shadow DOM. Only for usage with Swiper Element + * + */ + injectStyles?: string[]; + /** + * Inject styles ``s to the shadow DOM. Only for usage with Swiper Element + * + */ + injectStylesUrls?: string[]; + /** + * Whether Swiper should be initialised automatically when you create an instance. + * If disabled, then you need to init it manually by calling `swiper.init()` + * + * @default true + */ + init?: boolean; + + /** + * Whether Swiper initially enabled. When Swiper is disabled, it will hide all navigation elements and won't respond to any events and interactions + * + * @default true + */ + enabled?: boolean; + + /** + * Swiper will recalculate slides position on window resize (orientationchange) + * + * @default true + */ + updateOnWindowResize?: boolean; + + /** + * When enabled it will use ResizeObserver (if supported by browser) on swiper container to detect container resize (instead of watching for window resize) + * + * @default true + */ + resizeObserver?: boolean; + + /** + * Index number of initial slide. + * + * @default 0 + */ + initialSlide?: number; + + /** + * Can be `'horizontal'` or `'vertical'` (for vertical slider). + * + * @default 'horizontal' + */ + direction?: 'horizontal' | 'vertical'; + + /** + * When enabled, will swipe slides only forward (one-way) regardless of swipe direction + * + * @default false + */ + + oneWayMovement?: boolean; + + /** + * The name of the swiper element node name; used for detecting web component rendering + * + * @default 'SWIPER-CONTAINER' + */ + swiperElementNodeName?: string; + + /** + * Duration of transition between slides (in ms) + * + * @default 300 + */ + speed?: number; + + /** + * Enabled this option and plugin will set width/height on swiper wrapper equal to total size of all slides. + * Mostly should be used as compatibility fallback option for browser that don't support flexbox layout well + * + * @default false + */ + setWrapperSize?: boolean; + + /** + * Enabled this option and swiper will be operated as usual except it will not move, real translate values on wrapper will not be set. + * Useful when you may need to create custom slide transition + * + * @default false + */ + virtualTranslate?: boolean; + + /** + * Swiper width (in px). Parameter allows to force Swiper width. + * Useful only if you initialize Swiper when it is hidden and in SSR and Test environments for correct Swiper initialization + * + * @default null + * + * @note Setting this parameter will make Swiper not responsive + */ + width?: number | null; + + /** + * Swiper height (in px). Parameter allows to force Swiper height. + * Useful only if you initialize Swiper when it is hidden and in SSR and Test environments for correct Swiper initialization + * + * @default null + * + * @note Setting this parameter will make Swiper not responsive + */ + height?: number | null; + + /** + * Set to `true` and slider wrapper will adapt its height to the height of the currently active slide + * + * @default false + */ + autoHeight?: boolean; + + /** + * Set to `true` to round values of slides width and height to prevent blurry texts on usual + * resolution screens (if you have such) + * + * @default false + */ + roundLengths?: boolean; + + /** + * Set to `true` on Swiper for correct touch events interception. Use only on + * swipers that use same direction as the parent one + * + * @default false + */ + nested?: boolean; + + /** + * When enabled Swiper will automatically wrap slides with swiper-wrapper element, + * and will create required elements for navigation, pagination and scrollbar + * they are enabled (with their respective params object or with boolean `true`)) + * + * @default false + */ + createElements?: boolean; + + /** + * Event name prefix for all DOM events emitted by Swiper Element (web component) + * + * @default `swiper` + */ + eventsPrefix?: string; + + /** + * CSS selector for focusable elements. Swiping will be disabled on such elements if they are "focused" + * + * @default 'input, select, option, textarea, button, video, label' + */ + focusableElements?: string; + + /** + * If enabled (by default) and navigation elements' parameters passed as a string (like `".pagination"`) + * then Swiper will look for such elements through child elements first. + * Applies for pagination, prev/next buttons and scrollbar elements + * + * @default true + */ + uniqueNavElements?: boolean; + + /** + * Transition effect. Can be `'slide'`, `'fade'`, `'cube'`, `'coverflow'`, `'flip'`, `'creative'` or `'cards'` + * + * @default 'slide' + */ + effect?: 'slide' | 'fade' | 'cube' | 'coverflow' | 'flip' | 'creative' | 'cards' | (string & {}); + + /** + * Fire Transition/SlideChange/Start/End events on swiper initialization. + * Such events will be fired on initialization in case of your initialSlide is not 0, or you use loop mode + * + * @default true + */ + runCallbacksOnInit?: boolean; + + /** + * When enabled Swiper will be disabled and hide navigation buttons on + * case there are not enough slides for sliding. + * + * @default true + */ + watchOverflow?: boolean; + + /** + * userAgent string. Required for browser/device detection when rendered on server-side + * + * @default null + */ + userAgent?: string | null; + + /** + * Required for active slide detection when rendered on server-side and enabled history + * + * @default null + */ + url?: string | null; + + /** + * Register event handlers + */ + on?: { + [event in keyof SwiperEvents]?: SwiperEvents[event]; + }; + + /** + * Add event listener that will be fired on all events + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * onAny(eventName, ...args) { + * console.log('Event: ', eventName); + * console.log('Event data: ', args); + * } + * }); + * ``` + */ + onAny?(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * When enabled it will use modern CSS Scroll Snap API. + * It doesn't support all of Swiper's features, but potentially should bring a much better performance in simple configurations. + * + * This is what is not supported when it is enabled: + * + * - Cube effect + * - `speed` parameter may not have no effect + * - All transition start/end related events (use `slideChange` instead) + * - `slidesPerGroup` has limited support + * - `simulateTouch` doesn't have effect and "dragging" with mouse doesn't work + * - `resistance` doesn't have any effect + * - `allowSlidePrev/Next` + * - `swipeHandler` + * + * In case if you use it with other effects, especially 3D effects, it is required to wrap slide's content with `
` element. And if you use any custom styles on slides (like background colors, border radius, border, etc.), they should be set on `swiper-slide-transform` element instead. + * + * @example + * ```html + *
+ *
+ *
+ * + *
+ * ... slide content ... + *
+ *
+ * ... + *
+ *
+ * + * ``` + * + * @default false + */ + cssMode?: boolean; + + // Slides grid + + /** + * Distance between slides in px. + * + * @default 0 + * + * @note If you use "margin" css property to the elements which go into Swiper in which you pass "spaceBetween" into, navigation might not work properly. + */ + spaceBetween?: number | string; + + /** + * Number of slides per view (slides visible at the same time on slider's container). + * @note `slidesPerView: 'auto'` is currently not compatible with multirow mode, when `grid.rows` > 1 + * + * @default 1 + */ + slidesPerView?: number | 'auto'; + + /** + * If total number of slides less than specified here value, then Swiper will enable `backface-visibility: hidden` on slide elements to reduce visual "flicker" in Safari. + * + * @note It is not recommended to enable it on large amount of slides as it will reduce performance + * + * @default 10 + */ + maxBackfaceHiddenSlides?: number; + + /** + * Set numbers of slides to define and enable group sliding. Useful to use with slidesPerView > 1 + * + * @default 1 + */ + slidesPerGroup?: number; + + /** + * The parameter works in the following way: If `slidesPerGroupSkip` equals `0` (default), no slides are excluded from grouping, and the resulting behaviour is the same as without this change. + * + * If `slidesPerGroupSkip` is equal or greater than `1` the first X slides are treated as single groups, whereas all following slides are grouped by the `slidesPerGroup` value. + * + * @default 0 + */ + slidesPerGroupSkip?: number; + + /** + * This param intended to be used only with `slidesPerView: 'auto'` and `slidesPerGroup: 1`. When enabled, it will skip all slides in view on `.slideNext()` & `.slidePrev()` methods calls, on Navigation "buttons" clicks and in autoplay. + * + * @default false + */ + slidesPerGroupAuto?: boolean; + + /** + * If `true`, then active slide will be centered, not always on the left side. + * + * @default false + */ + centeredSlides?: boolean; + + /** + * If `true`, then active slide will be centered without adding gaps at the beginning and end of slider. + * Required `centeredSlides: true`. Not intended to be used with `loop` or `pagination` + * + * @default false + */ + centeredSlidesBounds?: boolean; + + /** + * Add (in px) additional slide offset in the beginning of the container (before all slides) + * + * @default 0 + */ + slidesOffsetBefore?: number; + + /** + * Add (in px) additional slide offset in the end of the container (after all slides) + * + * @default 0 + */ + slidesOffsetAfter?: number; + + /** + * Normalize slide index. + * + * @default true + */ + normalizeSlideIndex?: boolean; + + /** + * When enabled it center slides if the amount of slides less than `slidesPerView`. Not intended to be used `loop` mode and `grid.rows` + * + * @default false + */ + centerInsufficientSlides?: boolean; + + /** + * When enabled, the swiper will always snap to slide edges rather than arbitrary positions. + * This prevents partial slides from appearing misaligned at the end of the swiper. + * Only applies when `slidesPerView` is fractional or `'auto'`, and is ignored in `loop` and `centeredSlides` modes. + * + * @default false + */ + snapToSlideEdge?: boolean; + + /** + * This option may a little improve desktop usability. If `true`, user will see the "grab" cursor when hover on Swiper + * + * @default false + */ + grabCursor?: boolean; + + /** + * Target element to listen touch events on. Can be `'container'` (to listen for touch events on swiper) or `'wrapper'` + * (to listen for touch events on swiper-wrapper) + * + * @default 'wrapper' + */ + touchEventsTarget?: 'container' | 'wrapper'; + + /** + * Touch ratio + * + * @default 1 + */ + touchRatio?: number; + + /** + * Allowable angle (in degrees) to trigger touch move + * + * @default 45 + */ + touchAngle?: number; + + /** + * If `true`, Swiper will accept mouse events like touch events (click and drag to change slides) + * + * @default true + */ + simulateTouch?: boolean; + + /** + * Set to `false` if you want to disable short swipes + * + * @default true + */ + shortSwipes?: boolean; + + /** + * Set to `false` if you want to disable long swipes + * + * @default true + */ + longSwipes?: boolean; + + /** + * Ratio to trigger swipe to next/previous slide during long swipes + * + * @default 0.5 + */ + longSwipesRatio?: number; + + /** + * Minimal duration (in ms) to trigger swipe to next/previous slide during long swipes + * + * @default 300 + */ + longSwipesMs?: number; + + /** + * If disabled, then slider will be animated only when you release it, it will not move while you hold your finger on it + * + * @default true + */ + followFinger?: boolean; + + /** + * If `false`, then the only way to switch the slide is use of external API functions like slidePrev or slideNext + * + * @default true + */ + allowTouchMove?: boolean; + + /** + * Threshold value in px. If "touch distance" will be lower than this value then swiper will not move + * + * @default 5 + */ + threshold?: number; + + /** + * If disabled, `pointerdown` event won't be prevented + * + * @default true + */ + touchStartPreventDefault?: boolean; + + /** + * Force to always prevent default for `touchstart` (`pointerdown`) event + * + * @default false + */ + touchStartForcePreventDefault?: boolean; + + /** + * If enabled, then propagation of "touchmove" will be stopped + * + * @default false + */ + touchMoveStopPropagation?: boolean; + + /** + * Enable to release Swiper events for swipe-back work in app. If set to `'prevent'` then it will prevent system swipe-back navigation instead. This feature works only with "touch" events (and not pointer events), so it will work on iOS/Android devices and won't work on Windows devices with pointer (touch) events. + * + * @default false + */ + edgeSwipeDetection?: boolean | string; + + /** + * Area (in px) from left edge of the screen to release touch events for swipe-back in app + * + * @default 20 + */ + edgeSwipeThreshold?: number; + + /** + * Enable to release touch events on slider edge position (beginning, end) to allow for further page scrolling. This feature works only with "touch" events (and not pointer events), so it will work on iOS/Android devices and won't work on Windows devices with pointer events. Also `threshold` parameter must be set to `0` + * + * @default false + */ + touchReleaseOnEdges?: boolean; + + /** + * Passive event listeners will be used by default where possible to improve scrolling performance on mobile devices. + * But if you need to use `e.preventDefault` and you have conflict with it, then you should disable this parameter + * + * @default true + */ + passiveListeners?: boolean; + + // Touch Resistance + + /** + * Set to `false` if you want to disable resistant bounds + * + * @default true + */ + resistance?: boolean; + + /** + * This option allows you to control resistance ratio + * + * @default 0.85 + */ + resistanceRatio?: number; + + // Swiping / No swiping + /** + * When enabled it won't allow to change slides by swiping or navigation/pagination buttons during transition + * + * @default false + */ + preventInteractionOnTransition?: boolean; + + /** + * Set to `false` to disable swiping to previous slide direction (to left or top) + * + * @default true + */ + allowSlidePrev?: boolean; + + /** + * Set to `false` to disable swiping to next slide direction (to right or bottom) + * + * @default true + */ + allowSlideNext?: boolean; + + /** + * Enable/disable swiping on elements matched to class specified in `noSwipingClass` + * + * @default true + */ + noSwiping?: boolean; + + /** + * Specify `noSwiping`'s element css class + * + * @default 'swiper-no-swiping' + */ + noSwipingClass?: string; + + /** + * Can be used instead of `noSwipingClass` to specify elements to disable swiping on. + * For example `'input'` will disable swiping on all inputs + * + * @default + */ + noSwipingSelector?: string; + + /** + * String with CSS selector or HTML element of the container with pagination that will work as only available handler for swiping + * + * @default null + */ + swipeHandler?: CSSSelector | HTMLElement | null; + + // Clicks + /** + * Set to `true` to prevent accidental unwanted clicks on links during swiping + * + * @default true + */ + preventClicks?: boolean; + + /** + * Set to `true` to stop clicks event propagation on links during swiping + * + * @default true + */ + preventClicksPropagation?: boolean; + + /** + * Set to `true` and click on any slide will produce transition to this slide + * + * @default false + */ + slideToClickedSlide?: boolean; + + // Progress + /** + * Enable this feature to calculate each slides progress and visibility (slides in viewport will have additional visible class) + * + * @default false + */ + watchSlidesProgress?: boolean; + + /** + * Set to `true` to enable continuous loop mode + * + * Because of nature of how the loop mode works (it will rearrange slides), total number of slides must be: + * + * - more than or equal to `slidesPerView` + `slidesPerGroup` (and `+ 1` in case of `centeredSlides`) + * - even to `slidesPerGroup` (or use `loopAddBlankSlides` parameter) + * - even to `grid.rows` (or use `loopAddBlankSlides` parameter) + * + * @default false + * + */ + loop?: boolean; + + /** + * Automatically adds blank slides if you use Grid or `slidesPerGroup` and the total amount of slides is not even to `slidesPerGroup` or to `grid.rows` + * + * + * @default true + * + */ + loopAddBlankSlides?: boolean; + + /** + * Allows to increase amount of looped slides + * + * @default 0 + */ + loopAdditionalSlides?: number; + + /** + * If enabled then slideNext/Prev will do nothing while slider is animating in loop mode + * + * @default true + */ + loopPreventsSliding?: boolean; + + /** + * Set to `true` to enable "rewind" mode. When enabled, clicking "next" navigation button (or calling `.slideNext()`) when on last slide will slide back to the first slide. Clicking "prev" navigation button (or calling `.slidePrev()`) when on first slide will slide forward to the last slide. + * + * @default false + * + * @note Should not be used together with `loop` mode + */ + rewind?: boolean; + + /** + * Allows to set different parameter for different responsive breakpoints (screen sizes). Not all parameters can be changed in breakpoints, only those which do not require different layout and logic, like `slidesPerView`, `slidesPerGroup`, `spaceBetween`, `grid.rows`. Such parameters like `loop` and `effect` won't work + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * // Default parameters + * slidesPerView: 1, + * spaceBetween: 10, + * // Responsive breakpoints + * breakpoints: { + * // when window width is >= 320px + * 320: { + * slidesPerView: 2, + * spaceBetween: 20 + * }, + * // when window width is >= 480px + * 480: { + * slidesPerView: 3, + * spaceBetween: 30 + * }, + * // when window width is >= 640px + * 640: { + * slidesPerView: 4, + * spaceBetween: 40 + * } + * } + * }) + * ``` + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * slidesPerView: 1, + * spaceBetween: 10, + * // using "ratio" endpoints + * breakpoints: { + * '@0.75': { + * slidesPerView: 2, + * spaceBetween: 20, + * }, + * '@1.00': { + * slidesPerView: 3, + * spaceBetween: 40, + * }, + * '@1.50': { + * slidesPerView: 4, + * spaceBetween: 50, + * }, + * } + * }); + * ``` + */ + breakpoints?: { + [width: number]: SwiperOptions; + [ratio: string]: SwiperOptions; + }; + + /** + * Base for breakpoints (beta). Can be `window` or `container`. If set to `window` (by default) then breakpoint keys mean window width. If set to `container` then breakpoint keys treated as swiper container width + * + * @default 'window' + */ + breakpointsBase?: 'window' | 'container' | CSSSelector; + + // Observer + /** + * Set to `true` to enable Mutation Observer on Swiper and its elements. In this case Swiper will be updated (reinitialized) each time if you change its style (like hide/show) or modify its child elements (like adding/removing slides) + * + * @default false + */ + observer?: boolean; + /** + * Set to `true` if you also need to watch Mutations for Swiper slide children elements + * + * @default false + */ + observeSlideChildren?: boolean; + /** + * Set to `true` if you also need to watch Mutations for Swiper parent elements + * + * @default false + */ + observeParents?: boolean; + + // Namespace + /** + * The beginning of the modifier CSS class that can be added to swiper container depending on different parameters + * + * @default 'swiper-' + */ + containerModifierClass?: string; + + /** + * CSS class name of slide + * + * @default 'swiper-slide' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue components + */ + slideClass?: string; + + /** + * CSS class name of currently active slide + * + * @default 'swiper-slide-active' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue components + */ + slideActiveClass?: string; + + /** + * CSS class name of currently/partially visible slide + * + * @default 'swiper-slide-visible' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slideVisibleClass?: string; + + /** + * CSS class name of fully (when whole slide is in the viewport) visible slide + * + * @default 'swiper-slide-fully-visible' + * + * @note Not supported in Swiper React/Vue + */ + slideFullyVisibleClass?: string; + + /** + * CSS class name of the blank slide added by the loop mode (when `loopAddBlankSlides` is enabled) + * + * @default 'swiper-slide-blank' + * + * @note Not supported in Swiper React/Vue + */ + slideBlankClass?: string; + + /** + * CSS class name of slide which is right after currently active slide + * + * @default 'swiper-slide-next' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slideNextClass?: string; + + /** + * CSS class name of slide which is right before currently active slide + * + * @default 'swiper-slide-prev' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slidePrevClass?: string; + + /** + * CSS class name of slides' wrapper + * + * @default 'swiper-wrapper' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + * + */ + wrapperClass?: string; + + /** + * CSS class name of lazy preloader + * + * @default 'swiper-lazy-preloader' + */ + lazyPreloaderClass?: string; + + /** + * Number of next and previous slides to preload. Only applicable if using lazy loading. + * + * @default 0 + */ + lazyPreloadPrevNext?: number; + + /** + * Object with a11y parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * a11y: { + * prevSlideMessage: 'Previous slide', + * nextSlideMessage: 'Next slide', + * }, + * }); + * ``` + */ + a11y?: A11yOptions | boolean; + + /** + * Object with autoplay parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * autoplay: { + * delay: 5000, + * }, + *}); + * ``` + */ + autoplay?: AutoplayOptions | boolean; + + /** + * Object with controller parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * controller: { + * inverse: true, + * }, + * }); + * ``` + */ + controller?: ControllerOptions; + + /** + * Object with Coverflow-effect parameters. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'coverflow', + * coverflowEffect: { + * rotate: 30, + * slideShadows: false, + * }, + * }); + * ``` + */ + coverflowEffect?: CoverflowEffectOptions; + + /** + * Object with Cube-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'cube', + * cubeEffect: { + * slideShadows: false, + * }, + * }); + * ``` + */ + cubeEffect?: CubeEffectOptions; + + /** + * Object with Fade-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'fade', + * fadeEffect: { + * crossFade: true + * }, + * }); + * ``` + */ + fadeEffect?: FadeEffectOptions; + + /** + * Object with Flip-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'flip', + * flipEffect: { + * slideShadows: false, + * }, + * }); + * ``` + */ + flipEffect?: FlipEffectOptions; + + /** + * Object with Creative-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'creative', + * creativeEffect: { + * prev: { + * // will set `translateZ(-400px)` on previous slides + * translate: [0, 0, -400], + * }, + * next: { + * // will set `translateX(100%)` on next slides + * translate: ['100%', 0, 0], + * }, + * }, + * }); + * ``` + */ + creativeEffect?: CreativeEffectOptions; + + /** + * Object with Cards-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'cards', + * cardsEffect: { + * // ... + * }, + * }); + * ``` + */ + cardsEffect?: CardsEffectOptions; + + /** + * Enables hash url navigation to for slides. + * Object with hash navigation parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * hashNavigation: { + * replaceState: true, + * }, + * }); + * ``` + */ + hashNavigation?: HashNavigationOptions | boolean; + + /** + * Enables history push state where every slide will have its own url. In this parameter you have to specify main slides url like `"slides"` and specify every slide url using `data-history` attribute. + * + * Object with history navigation parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * history: { + * replaceState: true, + * }, + * }); + * ``` + * + * @example + * ```html + * + *
+ * ``` + */ + history?: HistoryOptions | boolean; + + /** + * Enables navigation through slides using keyboard. Object with keyboard parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * keyboard: { + * enabled: true, + * onlyInViewport: false, + * }, + * }); + * ``` + */ + keyboard?: KeyboardOptions | boolean; + + /** + * Enables navigation through slides using mouse wheel. Object with mousewheel parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * mousewheel: { + * invert: true, + * }, + * }); + * ``` + */ + mousewheel?: MousewheelOptions | boolean; + + /** + * Object with navigation parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * navigation: { + * nextEl: '.swiper-button-next', + * prevEl: '.swiper-button-prev', + * }, + * }); + * ``` + */ + navigation?: NavigationOptions | boolean; + + /** + * Object with pagination parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * pagination: { + * el: '.swiper-pagination', + * type: 'bullets', + * }, + * }); + * ``` + */ + pagination?: PaginationOptions | boolean; + + /** + * Object with parallax parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * parallax: true, + * }); + * ``` + */ + parallax?: ParallaxOptions | boolean; + + /** + * Object with scrollbar parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * scrollbar: { + * el: '.swiper-scrollbar', + * draggable: true, + * }, + * }); + * ``` + */ + scrollbar?: ScrollbarOptions | boolean; + + /** + * Object with thumbs component parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * ... + * thumbs: { + * swiper: thumbsSwiper + * } + * }); + * ``` + */ + thumbs?: ThumbsOptions; + + /** + * Enables virtual slides functionality. Object with virtual slides parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * virtual: { + * slides: ['Slide 1', 'Slide 2', 'Slide 3', 'Slide 4', 'Slide 5'], + * }, + * }); + * ``` + */ + virtual?: VirtualOptions | boolean; + + /** + * Enables zooming functionality. Object with zoom parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * zoom: { + * maxRatio: 5, + * }, + * }); + * ``` + */ + zoom?: ZoomOptions | boolean; + + /** + * Enables free mode functionality. Object with free mode parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * freeMode: true, + * }); + * + * const swiper = new Swiper('.swiper', { + * freeMode: { + * enabled: true, + * sticky: true, + * }, + * }); + * ``` + */ + freeMode?: FreeModeOptions | boolean; + + /** + * Object with grid parameters to enable "multirow" slider. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * grid: { + * rows: 2, + * }, + * }); + * ``` + */ + grid?: GridOptions; + + /** + * !INTERNAL When enabled will emit "_containerClasses" and "_slideClass" events + */ + _emitClasses?: boolean; +} diff --git a/yarn.lock b/yarn.lock index e3bc27e..19222ba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -588,6 +588,11 @@ supports-color@^5.5.0: dependencies: has-flag "^3.0.0" +swiper@^12.1.2: + version "12.1.2" + resolved "https://registry.yarnpkg.com/swiper/-/swiper-12.1.2.tgz#39eaad0c088def66a7eb8f6bae1439384586ab90" + integrity sha512-4gILrI3vXZqoZh71I1PALqukCFgk+gpOwe1tOvz5uE9kHtl2gTDzmYflYCwWvR4LOvCrJi6UEEU+gnuW5BtkgQ== + thenby@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/thenby/-/thenby-1.3.4.tgz#81581f6e1bb324c6dedeae9bfc28e59b1a2201cc" From 4af51ddbe6ca49694e5b9c322a744b168ae08e74 Mon Sep 17 00:00:00 2001 From: Istarengwa Date: Fri, 13 Mar 2026 00:47:34 +0100 Subject: [PATCH 2/2] remove low design --- app/assets/stylesheets/application.bootstrap.scss | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/app/assets/stylesheets/application.bootstrap.scss b/app/assets/stylesheets/application.bootstrap.scss index 936740f..d69d70a 100644 --- a/app/assets/stylesheets/application.bootstrap.scss +++ b/app/assets/stylesheets/application.bootstrap.scss @@ -872,17 +872,10 @@ dialog { .home-shop-swiper .swiper-wrapper { position: relative; - min-height: 32rem; } .home-shop-swiper .parallax-bg { - position: absolute; - inset: -1.25rem -4%; - border-radius: 1.5rem; - background: - radial-gradient(circle at top, rgba(255, 248, 238, 0.94), rgba(243, 231, 211, 0.76) 55%, rgba(199, 176, 126, 0.24) 100%), - linear-gradient(135deg, rgba(113, 28, 28, 0.06), rgba(104, 83, 35, 0.12)); - pointer-events: none; + display: none; } .home-shop-swiper .swiper-wrapper {